Publié le 08 juillet 2019
Dans le cadre de la dockerisation de proxy Zabbix, je suis tombé sur un problème étrange.
Je fais les commandes suivantes :
Docker run -it zabbix/zabbix-proxy-sqlite3:ubuntu-3.4-latest /bin/bash
[…]
root@220fab01aae4:/var/lib/zabbix# fping palc.fr
palc.fr is alive
root@220fab01aae4:/var/lib/zabbix# su - zabbix -s /bin/bash
zabbix@220fab01aae4:~$ fping palc.fr
(null): can’t create socket (must run as root?): Permission denied
Note : l’option -it /bin/bash
me permets d’avoir
directement un bash pour faire mes tests. Lors d’un lancement de Docker
en prod, il faudrait utiliser les options -d -t
à la
place.
Note 2 : vous pouvez également avoir une erreur du type
socket: Operation not permitted.
Dans le container Docker, la commande fping fonctionne en root mais pas avec l’utilisateur Zabbix. Pourtant sur le système host, qui utilise le même OS, ça fonctionne bien.
Pour corriger le problème il faut simplement ajouter l’option
--sysctl net.ipv4.ping_group_range="0 65535"
à la commande
lançant le container docker. Ça permets à n’importe quel utilisateur
d’accéder directement au réseau de l’hôte, ce qui est indispensable pour
effectuer des requêtes ICMP, comme le ping. Dans le cas contraire, seul
l’utilisateur root serait autorisé à le faire.