linux – “ip route get”显示错误的源IP地址

我有一台接口有两个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地址是什么原因?

解决方法:

一台机器只能有一个默认网关.您可以使用ping -i来选择您希望数据包来自哪个接口.根据您提供的信息,您的默认IP显示为192.168.1.15. 10.10.118.45似乎是别名.检查/ etc / networks,/ etc / sysconfig / network,以及/ etc / network-scripts / ifcfg- *中的接口配置

这是类似配置的示例输出.

[root@cp-rc ~]# ip route show
default via 192.185.130.1 dev eth0 proto static metric 100
10.1.1.0/24 dev eth1 proto kernel scope link src 10.1.1.9 metric 100
192.185.130.0/24 dev eth0 proto kernel scope link src 192.185.130.90 metric 100
[root@cp-rc ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.185.130.1   0.0.0.0         UG    100    0        0 eth0
10.1.1.0        0.0.0.0         255.255.255.0   U     100    0        0 eth1
192.185.130.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
上一篇:ES官文网址


下一篇:PHP AltoRouter – 无法获取GET请求