J'ai un serveur CentOS 7 avec deux interfaces réseau. L'un pointe vers notre LAN (ens32) et l'autre vers notre DMZ (ens33).
Bien que l'interface LAN fonctionne correctement, j'ai remarqué qu'il semble que le trafic ne traverse l'interface DMZ que s'il est connecté en tant que root, et je ne sais pas ce que cela signifie ou si cela a un effet net sur d'autres problèmes que je rencontre .
Par exemple, si je lance :
curl --interface ens32 ipecho.net/plain
en tant qu'utilisateur non root, j'obtiendrai l'adresse IP publique de cette interface.
Si je lance :
curl --interface ens33 ipecho.net/plain
en tant qu'utilisateur non root, la commande semble se bloquer et je serai obligé de tuer le processus.
Si j'exécute la commande précédente en tant que root, j'obtiendrai la sortie attendue qui est l'adresse IP publique de cette interface.
Quelqu'un peut-il expliquer ce qui pourrait se passer ici ?
Réponse acceptée :
Comme on peut le voir dans le curl
officiel page, pour spécifier/lier à une interface spécifique, il est nécessaire d'avoir CAP_NET_RAW ou de s'exécuter en tant que root
.
D'où donc root
être capable de faire la liaison/le routage, et cela ne fonctionne pas avec un utilisateur régulier pour vous.
Lorsqu'un utilisateur régulier utilise curl
, sans qu'il soit interdit d'utiliser l'--interface
option, les règles de routage par défaut du serveur s'appliqueront à cette opération à la place.
Depuis la page officielle de curl curl.1 la page de manuel :
–interface
Effectuer une opération à l'aide d'une interface spécifiée. Vous pouvez entrer
le nom de l'interface, l'adresse IP ou le nom d'hôte. Un exemple pourrait ressembler à :curl –interface eth0:1 https://www.example.com/
Si cette option est utilisée plusieurs fois, la dernière sera utilisée.
Sous Linux, il peut être utilisé pour spécifier un VRF, mais le binaire doit
avoir CAP_NET_RAW ou être exécuté en tant que root.Plus d'informations sur
Linux VRF :https://www.kernel.org/doc/Documentation/networking/vrf.txt