我在 AWS 上有两个 EC2 实例。我将第二个网络接口连接到其中一个 EC2 实例,并将 Redhat 配置为使用新的接口和 IP。
问题是我无法通过第二个 NIC ping EC2 实例。
我读到过,必须防止非对称路由,但我没有正确做到这一点。我的步骤如下。
1) 设置新的 NIC,因为它不会自动获取新的 IPv4。
cd /etc/sysconfig/network-scripts/
cat ifcfg-eth0 > ifcfg-eth1
eth1 配置如下所示。
BOOTPROTO=dhcp
DEVICE=eth1
HWADDR=02:d9:f6:0e:09:00
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=192.168.125.232
ifdown eth1
ifup eth1
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 192.168.125.247 netmask 255.255.255.224 broadcast 192.168.125.255
inet6 fe80::3d:5cff:fef4:f5a8 prefixlen 64 scopeid 0x20<link>
ether 02:3d:5c:f4:f5:a8 txqueuelen 1000 (Ethernet)
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 192.168.125.232 netmask 255.255.255.224 broadcast 192.168.125.255
inet6 fe80::d9:f6ff:fe0e:900 prefixlen 64 scopeid 0x20<link>
ether 02:d9:f6:0e:09:00 txqueuelen 1000 (Ethernet)
[...]
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.125.225 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 192.168.125.225 0.0.0.0 UG 101 0 0 eth1
192.168.125.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1
192.168.125.224 0.0.0.0 255.255.255.224 U 100 0 0 eth0
192.168.125.224 0.0.0.0 255.255.255.224 U 101 0 0 eth1
2)尝试像这样设置非对称路由。
ip route add default via 192.168.125.225 dev eth0 tab 1
ip route add default via 192.168.125.225 dev eth1 tab 2
ip rule add from 192.168.125.247/24 tab 1
一旦运行上述命令,我就会与实例断开连接,并且无法通过 SSH 重新连接。此后,我只需重新创建实例即可。
我从来没有设法运行我认为需要的最后一个命令。
ip rule add from 192.168.125.232/24 tab 2
我遗漏了什么?如何正确设置我的设置路由?
编辑#1:尝试使用新的 IP 地址将不会起作用。
ip route add 192.168.125.224/27 dev eth0 table t1
ip route add 192.168.125.224/27 dev eth1 table t2
ip route add default via 192.168.125.225 dev eth0 table t1
ip route add default via 192.168.125.225 dev eth1 table t2
ip rule add from 192.168.125.243/27 table t1 priority 100
ip rule add from 192.168.125.232/27 table t2 priority 200
ip route flush cache
禁用源/目标检查的解决方法有效但这不是我真正想要的。
编辑#2:经过更多的谷歌搜索,我的头发都快掉光了。又试了一次(没用 :/)。
ip route add default via 192.168.125.225 dev eth0 table t1
ip route add default via 192.168.125.225 dev eth1 table t2
ip rule add from 192.168.125.243/32 table t1 priority 100
ip rule add from 192.168.125.232/32 table t2 priority 200
ip route flush cache
答案1
答案是为两个接口配置一条路由和一条规则。
echo 100 t1 >> /etc/iproute2/rt_tables
echo 101 t2 >> /etc/iproute2/rt_tables
ip route add default via 192.168.125.225 dev eth0 table t1
ip rule add from 192.168.125.243/32 table t1 priority 100
ip rule add from 192.168.125.232/32 table t2 priority 200
ip route add default via 192.168.125.225 dev eth1 table t2
可以添加 ip 命令/etc/rc.d/rc.local
以实现持久设置。