Ip

在多個 IPv4 地址的情況下選擇源地址

  • June 27, 2014

我將以下四個 IPv4 地址配置為eth0介面:

# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:16:41:54:01:93 brd ff:ff:ff:ff:ff:ff
   inet 10.10.10.1/24 scope global eth0
   inet 192.168.2.2/30 scope global eth0
   inet 10.10.10.128/24 scope global secondary eth0
   inet 10.10.10.127/24 scope global secondary eth0
# 

現在,如果我從 IP 地址 10.10.11.1 向這些地址中的任何一個(10.10.10.1、192.168.2.2、10.10.10.128 或 10.10.10.127)發送流量,那麼儘管我已將源 IP 指定為 10.10.10.127 :

# ip route show match 10.10.11.1
default via 192.168.2.1 dev eth0  src 10.10.10.127 
# 

..我的機器發送具有相同源 IP 的數據包,該源 IP 用作目標 IP,例如,如果我ping 10.10.10.128 source 10.10.11.1在遠端機器上執行,那麼我的機器發送源地址為 10.10.10.128 的回复:

16:11:02.478607 00:19:e2:9e:ec:00 > 00:16:41:54:01:93, ethertype IPv4 (0x0800), length 114: 10.10.11.1 > 10.10.10.128: ICMP echo request, id 34, seq 4, length 80
16:11:02.478616 00:16:41:54:01:93 > 00:19:e2:9e:ec:00, ethertype IPv4 (0x0800), length 114: 10.10.10.128 > 10.10.11.1: ICMP echo reply, id 34, seq 4, length 80

src路由表中指定的地址在什麼情況下有影響?

系統始終使用流量發送到的地址來響應流量。

如果您 p​​ing 10.10.10.128,然後從 接收響應流量10.10.10.127,您的系統將看到其他流量並丟棄它。你的系統不知道10.10.10.127是誰,也不知道它為什麼要和你說話。

但是,如果同時擁有10.10.10.12710.10.10.128在其上的系統嘗試啟動與另一台主機的通信,那麼它將使用路由規則來確定適當的源地址。

引用自:https://unix.stackexchange.com/questions/139543