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

Mar*_*tin 8 linux routing 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
Run Code Online (Sandbox Code Playgroud)

例如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
Run Code Online (Sandbox Code Playgroud)

但是,当我例如pingSSHto 时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
Run Code Online (Sandbox Code Playgroud)

在这种情况下ip route get没有显示正确的源 IP 地址的原因是什么?

kla*_*pez 1

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