Ip

當一個介面有多個 IP 時,如何設置“預設路由”?

  • March 24, 2015

我已按照Amazon EC2 上的多個 IP 地址指南進行操作,並採用了列出的第二種方法,即向單個介面添加兩個 IP 地址。這是通過向適配器添加兩個私有 IP,然後將彈性 IP 與每個私有地址相關聯來完成的。

當我執行類似curl它使用主 IP 地址的命令時,我想知道如何將其更改為預設使用其他 IP 地址。這是設置:

公共(彈性)IP

54.140.250.140
54.81.231.80

私有 IP

172.30.0.50
172.30.0.122

添加彈性和私有 IP 後,我這樣做:

ip addr add dev eth0 172.30.0.122/24

為了確認它的工作,我可以做:

curl icanhazip.com
54.81.231.80

curl --interface 172.30.0.50 icanhazip.com
54.81.231.80

curl --interface 172.30.0.122 icanhazip.com
54.140.250.140

如您所見,預設路由是通過原始/主 IP 完成的。

這是執行的數據ifconfig

eth0      Link encap:Ethernet  HWaddr 12:34:56:78:90:ab
         inet addr:172.30.0.50  Bcast:172.30.0.255  Mask:255.255.255.0
         inet6 addr: aabb::cccc:dddd:eeee:ffff/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
         RX packets:713 errors:0 dropped:0 overruns:0 frame:0
         TX packets:631 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:63726 (63.7 KB)  TX bytes:827217 (827.2 KB)

lo        .... omitted ....

這就是我從跑步中得到的route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.30.0.1      0.0.0.0         UG    0      0        0 eth0
172.30.0.0      *               255.255.255.0   U     0      0        0 eth0

我嘗試使用這樣的腳本更改“預設”路由。我使用screen以便在我斷開連接後腳本將繼續(猜測是第一行導致):

/sbin/route del default
/sbin/route add default via 172.30.0.122 dev eth0 tab 1

我也試過沒有,tab 1但仍然沒有運氣。

如何設置“預設”使用的傳出 IP?

我還想知道是否可以指定只有到特定 IP 範圍的流量才使用輔助地址作為預設地址。

ip route replace default via 172.30.0.1 src 172.30.0.122

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