EC2(VPC)主机上有多个IP地址的路由问题

我们运行一个EC2 Ubuntu服务器,作为我公司应用程序中的NAT Traversal机制的STUN服务器。 根据STUN协议的性质,服务器需要两个IP公共地址。 我们聘请了一些顾问为我们设置这个,但他们似乎失败,因为STUN服务器没有响应任何外部绑定请求。

以下是我们所知道的:*我们有两个EIP映射到服务器(相同的networking接口)。 *服务器在VPC子网内运行。 *如果我们在STUN服务器本地发送STUN绑定请求(通过指定一个EIP到STUN客户端),它会成功。 *如果我们从其他EC2服务器之一(在VPC子网之外)执行相同请求,请求将失败。 *如果我们在办公室做台式电脑的相同请求,则失败。 * STUN服务器正在接收绑定请求,但看起来无法路由响应。 这是Wiresharkparsing绑定请求期间创build的转储文件的截图。

我猜测我们在路由表中缺less一些东西。 不幸的是,IP路由不是我们的核心竞争力之一(特别是在Linux上)。 下面是从ifconfig的输出,希望给你一些更有用的信息。

eth0 Link encap:Ethernet HWaddr 0e:5a:ec:5d:6d:d5 inet addr:10.0.0.22 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr:fe80 :: c5a:ecff:fe5d:6dd5 / 64范围:链路UP BROADCAST运行多播MTU:1500度量标准:1 RX包:28031错误:0丢弃:0超限:0帧:0 TX包:18370错误:0丢弃:0超限:0载波:0冲突:0 txqueuelen:1000 RX字节:2329243(2.3 MB)TX字节:19316360(19.3 MB)中断:28

eth0:1链路封装:以太网HWaddr 0e:5a:ec:5d:6d:d5 inet addr:10.0.0.23 Bcast:10.0.0.255掩码:255.255.255.0向上广播运行多播MTU:1500度量标准:1中断:28

eth0:2 Link encap:Ethernet HWaddr 0e:5a:ec:5d:6d:d5 inet addr:107.23.130.153 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST运行多播MTU:1500 Metric:1中断:28

eth0:3 Link encap:Ethernet HWaddr 0e:5a:ec:5d:6d:d5 inet addr:107.23.35.233 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST运行多播MTU:1500 Metric:1中断:28

以下是运行sudo路由的输出:

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

10.0.0.1是您的默认网关,107.23.XXnetworking上是否有路由器?

我有一种感觉,你将需要build立正确的路由表,以确保进入一个networking的数据包也通过同一个networking上的相同接口返回。

你可以做这样的事情:

echo 200 Ten >> /etc/iproute2/rt_tables
ip route add 107.23.130.153 dev eth0:2 src 107.23.130.153 table Ten
ip route add default via whatever table Ten

echo 200 Twenty >> /etc/iproute2/rt_tables
ip route add 107.23.35.233 dev eth0:3 src 107.23.35.233 table Twenty
ip route add default via whatever table Twenty

replace这两个地址的网关,我假设他们是点对点地址。

然后添加从您的IP通过正确的表和接口发送stream量的规则。

ip rule add from 107.23.130.53 table Ten
ip rule add from 107.23.35.233 table Twenty

无论如何,网上没有可用的信息,请查阅政策路线