两个默认的 Ubuntu 实例无法通过 Amazon VPC 互相访问

两个默认的 Ubuntu 实例无法通过 Amazon VPC 互相访问

我正在运行两个 Ubuntu 12.04 实例,它们无法互相访​​问。

机器 1:

eth0 - 10.0.0.20
eth1 - 10.0.0.30

netstat -nr:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG        0 0          0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth1
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0

机器2:

eth0 - 10.0.0.100
eth1 - 10.0.0.40

netstat -nr:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG        0 0          0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth1

两台机器只能通过互联网相互访问,而不能通过 VPC(换句话说,LAN)相互访问。禁用防火墙也无济于事。机器 1 只能 ping 10.0.0.100。机器 2 只能 ping 10.0.0.30。我无法通过 LAN 连接到任何使用 TCP/UDP 协议的机器。没有 ACL,机器上的守护进程正在监听所有 IP、所有接口。可能是什么问题?

编辑1:

问题似乎出在路由表中。我在删除机器 2 上的 1 个 NIC 并执行一些随机操作后解决了机器 1 上的问题。这导致 DHCP 获得以下规则:

~$ ip rule
0:      from all lookup local 
32765:  from 10.0.0.30 lookup 2 
32766:  from all lookup main 
32767:  from all lookup default 
~$ 

我无法在机器 2 上重现此问题,但我可以使用以下命令手动添加规则和路由表:

ip route add default via 10.0.0.1 dev eth0
ip route add default via 10.0.0.1 dev eth1 table 2
ip rule add from 10.0.0.167 lookup 2 prio 1000

我怎样才能避免手动执行此操作?

答案1

尝试更具体地添加路由。路由将优先选择按特异性、度量值和添加顺序排列的第一条匹配路由。

例如在机器1上添加以下路由:

ip route add 10.0.0.40/32 dev eth1 src 10.0.0.30

在机器 2 上:

ip route add 10.0.0.30/32 dev eth1 src 10.0.0.40

您可能需要删除两台机器上 eth1 的更通用的路由:

ip route del 10.0.0.0/24 dev eth1

由于它们位于 /24 中,您应该尝试将它们放在不同的子网中,例如,如果两个 eth1 都在 10.0.1.0/24 中,那么您根本不会遇到这个问题。

相关内容