我有一台带有两个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
例如ip -s route get 8.8.8.8
,如果我执行,则据此,出口数据包将具有一个源IP地址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
但是,当我以ping
或为例SSH
时8.8.8.8
,则源IP为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
在这种情况下ip route get
没有显示正确的源IP地址的原因是什么?
怎么
—
齐柏林飞艇
ip route show to match 8.8.8.8
说呢?
@Martin
—
JohanMyréen17年
ip route get
打印路由选择算法的结果,并从src
匹配的路由表条目的字段中打印源地址。但是,应用程序可以将地址绑定到套接字,然后将该地址用作IP数据包中的源地址。请参阅源地址选择。也许您的ping程序会这样做吗?(有几个ping程序;您从哪个程序包?)
ip rule list
什么?对于列出的每个表,输出是ip route list table $table
什么?