Ip
在多個 IPv4 地址的情況下選擇源地址
我將以下四個 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
路由表中指定的地址在什麼情況下有影響?
系統始終使用流量發送到的地址來響應流量。
如果您 ping
10.10.10.128
,然後從 接收響應流量10.10.10.127
,您的系統將看到其他流量並丟棄它。你的系統不知道10.10.10.127
是誰,也不知道它為什麼要和你說話。但是,如果同時擁有
10.10.10.127
和10.10.10.128
在其上的系統嘗試啟動與另一台主機的通信,那麼它將使用路由規則來確定適當的源地址。