Tengo una máquina con una interfaz que tiene dos direcciones IP:
inet 192.168.1.15/32 scope global eth0
inet 10.10.118.45/24 brd 10.10.118.255 scope global eth0:hosts4
Si ejecuto, por ejemplo ip -s route get 8.8.8.8
, de acuerdo con esto, el paquete de salida tendrá una dirección IP de origen 10.10.118.45
:
8.8.8.8 via 10.10.118.254 dev eth0 src 10.10.118.45
cache users 1 used 1
Sin embargo, cuando, por ejemplo, ping
o SSH
para 8.8.8.8
, la fuente de IP es 192.168.1.15
:
15:19:38.092508 IP 192.168.1.15 > 8.8.8.8: ICMP echo request, id 9135, seq 2, length 64
15:19:38.097962 IP 8.8.8.8 > 192.168.1.15: ICMP echo reply, id 9135, seq 2, length 64
¿Cuál es la razón por la que en este caso ip route get
no se muestra la dirección IP de origen correcta?
ip route show to match 8.8.8.8
dice
ip route get
imprime el resultado del algoritmo de selección de enrutamiento e imprime la dirección de origen desde el src
campo de la entrada de la tabla de enrutamiento correspondiente. Sin embargo, una aplicación puede vincular una dirección al socket, que luego se usa como la dirección de origen en los paquetes IP. Ver Selección de dirección de origen . Tal vez su programa de ping hace esto? (Hay varios programas de ping; ¿de qué paquete es el suyo?)
ip rule list
? Y para cada tabla listada, ¿cuál es la salida deip route list table $table
?