J'ai une machine avec une interface qui a deux adresses 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 j'exécute par exemple ip -s route get 8.8.8.8
, alors selon cela, le paquet de sortie aura une adresse IP source 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
Cependant, lorsque je par exemple ping
ou SSH
à 8.8.8.8
, alors l'IP source est 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
Quelle est la raison pour laquelle dans ce cas ip route get
n'affiche pas l'adresse IP source correcte?
ip rule list
? Et pour chaque table répertoriée, quelle est la sortie deip route list table $table
?ip route show to match 8.8.8.8
dit-on?ip route get
imprime le résultat de l'algorithme de sélection de routage et imprime l'adresse source à partir dusrc
champ de l'entrée de table de routage correspondante. Cependant, une application peut lier une adresse au socket, qui est ensuite utilisé à la place comme adresse source dans les paquets IP. Voir Sélection de l'adresse source . Peut-être que votre programme ping fait cela? (Il existe plusieurs programmes de ping; à partir de quel package est le vôtre?)Réponses:
Une machine ne peut avoir qu'une seule passerelle par défaut. Vous pouvez utiliser ping -i pour choisir l'interface dont vous voulez que le paquet provienne. D'après les informations que vous avez fournies, il apparaît que votre IP par défaut est 192.168.1.15. 10.10.118.45 semble être un alias. Vérifiez votre
/etc/networks
,/etc/sysconfig/network
ainsi que la configuration de l' interface à l' intérieur/etc/network-scripts/ifcfg-*
Voici un exemple de sortie d'une configuration similaire.
la source
{}
pour un texte plus lisible.Peut-être est-il possible que votre
10.10.118.45/24
adresse soit DHCP? vous pouvez essayer de supprimer l'adresse statiquela source