Tengo un servidor CentOS 7 con dos interfaces de red. Uno apunta a nuestra LAN (ens32) y el otro a nuestra DMZ (ens33).
Si bien la interfaz LAN funciona bien, noté que parece que el tráfico solo atravesará la interfaz DMZ si está conectado como root, y no estoy seguro de qué significa esto o si tiene algún efecto neto en otros problemas que estoy experimentando. .
Por ejemplo, si ejecuto:
curl --interface ens32 ipecho.net/plain
como usuario no root, obtendré la IP pública para esa interfaz.
Si ejecuto:
curl --interface ens33 ipecho.net/plain
como usuario no root, el comando parece detenerse y me veré obligado a cancelar el proceso.
Si ejecuto el comando anterior como root, obtendré el resultado esperado, que es la IP pública para esa interfaz.
¿Alguien puede explicar qué podría estar pasando aquí?
Respuesta aceptada:
Como se puede ver en el curl
oficial página, para especificar/vincular a una interfaz específica, es necesario tener CAP_NET_RAW o ejecutar como root
.
Por lo tanto, root
poder hacer el enlace/enrutamiento, y no funciona con un usuario normal para usted.
Cuando un usuario normal usa curl
, sin que esté permitido usar la --interface
opción, las reglas de enrutamiento predeterminadas del servidor se aplicarán a esa operación en su lugar.
De la página oficial de curl curl.1 la página man:
–interfaz
Realizar una operación utilizando una interfaz especificada. Puede ingresar
el nombre de la interfaz, la dirección IP o el nombre del host. Un ejemplo podría ser:
curl –interfaz eth0:1 https://www.example.com/
Si esta opción se usa varias veces, se usará la última.
En Linux, se puede usar para especificar un VRF, pero el binario debe
tener CAP_NET_RAW o ejecutarse como raíz.
Más información sobre
Linux VRF:https://www.kernel.org/doc/Documentation/networking/vrf.txt