当接口有多个IP时如何设置“默认路由”?

当接口有多个IP时如何设置“默认路由”?

我已经按照本指南进行了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 的流量才使用辅助地址作为默认地址。

答案1

ip route replace default via 172.30.0.1 src 172.30.0.122

相关内容