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 rule list
? Y para cada tabla listada, ¿cuál es la salida deip route list table $table
?ip route show to match 8.8.8.8
diceip route get
imprime el resultado del algoritmo de selección de enrutamiento e imprime la dirección de origen desde elsrc
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?)Respuestas:
Una máquina solo puede tener una puerta de enlace predeterminada. Puede usar ping -i para elegir de qué interfaz desea que provenga un paquete. Según la información que ha proporcionado, parece que su IP predeterminada es 192.168.1.15. 10.10.118.45 parece ser un alias. Verifique su
/etc/networks
,/etc/sysconfig/network
así como la configuración de la interfaz dentro/etc/network-scripts/ifcfg-*
Aquí hay una muestra de salida de configuración similar.
fuente
{}
para obtener un mejor texto legible.Tal vez es posible que tu
10.10.118.45/24
es la dirección dhcp? puedes intentar eliminar la dirección estáticafuente