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


8

我有一台带有两个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或为例SSH8.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地址的原因是什么?


1
输出是ip rule list什么?对于列出的每个表,输出是ip route list table $table什么?
Jesusaur

1
怎么ip route show to match 8.8.8.8说呢?
齐柏林飞艇

2
@Martin ip route get打印路由选择算法的结果,并从src匹配的路由表条目的字段中打印源地址。但是,应用程序可以将地址绑定到套接字,然后将该地址用作IP数据包中的源地址。请参阅源地址选择。也许您的ping程序会这样做吗?(有几个ping程序;您从哪个程序包?)
JohanMyréen17年

Answers:


1

一台机器只能有一个默认网关。您可以使用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

欢迎来到U&L。请阅读游览,它提供了一些有用的信息。如果您有多行程序输出(或代码),请选择行,然后单击{}以获得更好的可读性文本。
Anthon

0

也许您10.10.118.45/24是dhcp地址?您可以尝试删除静态地址

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.