我发现了与这个问题有关的类似问题,但没有一个与我的情况相符,也没有任何build议帮助我实现了这个目标。
我有一个运行在EC2中的默认AMI的64位Ubuntu服务器。 这有2个networking实例,每个实例有2个本地IPS和链接的EIP。
每个实例的本地IP地址都有意地放在不同的子网上,以帮助克服不同实例中相同networkingIP的复杂性。
一审2个IP工作正常,没有问题。
我一直在使用下面的代码启动我的所有服务器
#!/bin/bash MAC_ADDR=$(ifconfig eth0 | sed -n 's/.*HWaddr \([a-f0-9:]*\).*/\1/p') IP=($(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC_ADDR/local-ipv4s)) for ip in ${IP[@]:1}; do echo "Adding IP eth0: $ip" ip addr add dev eth0 $ip/24 done
我已经在此脚本中添加了第二部分来尝试启动第二个接口IP
MAC_ADDR=$(ifconfig eth1 | sed -n 's/.*HWaddr \([a-f0-9:]*\).*/\1/p') IP=($(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC_ADDR/local-ipv4s)) for ip in ${IP[@]:1}; do echo "Adding IP eth1: $ip" ip addr add dev eth1 $ip/24 done
我修改了我的/ etc / network / interfaces文件来启动第二个界面
# The primary network interface auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 10.10.21.22 netmask 255.255.255.0
ifconfig显示两个接口正在运行
ifconfig eth0 Link encap:Ethernet HWaddr 06:b1:b9:f8:32:af inet addr:10.10.2.20 Bcast:10.10.2.255 Mask:255.255.255.0 inet6 addr: fe80::4b1:b9ff:fef8:32af/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:114125 errors:0 dropped:0 overruns:0 frame:0 TX packets:51731 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:106211526 (106.2 MB) TX bytes:50413300 (50.4 MB) Interrupt:26 eth1 Link encap:Ethernet HWaddr 06:b1:b9:f5:38:3a inet addr:10.10.21.22 Bcast:10.10.21.255 Mask:255.255.255.0 inet6 addr: fe80::4b1:b9ff:fef5:383a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12269 errors:0 dropped:0 overruns:0 frame:0 TX packets:11522 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:366172 (366.1 KB) TX bytes:484140 (484.1 KB) Interrupt:27 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:197 errors:0 dropped:0 overruns:0 frame:0 TX packets:197 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:14772 (14.7 KB) TX bytes:14772 (14.7 KB)
我的路由规则似乎正确设置了2个子网和2个接口
Destination Gateway Netmask Interface Default Route 10.10.2.1 eth0 1.0.0.0 None 255.255.255.0 eth0 1.0.0.0 None 255.255.255.0 eth1 10.10.2.0 None 255.255.255.0 eth0 10.10.21.0 None 255.255.255.0 eth1
我可以从同一台服务器上ping有问题的本地IP(10.10.21.22和10.10.21.23)并获得成功。 我可以从其他服务器ping主要接口的公共IP。 我无法从其他服务器ping第二个接口上的IP。
testing时,防火墙已被禁用。
任何可能错过或错误的指导?
编辑 – 其他信息
主服务器是Ubuntu 13.04 64位标准AMI(微型)。
eth0有2个ips工作,10.10.2.20和10.10.2.21
eth1有2个ips不工作,10.10.21.22和10.10.21.23
所有本地IP也都有一个外部EIP。
从同一台机器上Ping所有这些工作。 Ping从其他机器的第一个接口工作。 从其他机器ping第二个接口失败。
VPC路由表说10.10.0.0/16是本地的,0.0.0.0/0是igw。 看起来很好 没想到这里看了,只查了一下linux里面的路由表 – 在EC2 / VPC有什么特别需要的2接口工作? 我曾经假定EC2知道所有的IP /实例映射,并相应地引导它。
只是尝试在vpc级别添加额外的路由,并得到“不能为路由表rtb-022ab66b中的本地路由10.10.0.0/16创build一个更具体的路由10.10.21.0/24”
新的编辑 – 更多的VPS子网设置
我在前面的更新中提到了路由表,但没有在VPC中指定子网
VPC路由表是10.10.0.0/16 local,它应该包含10.10.2.0和10.10.21.0子网
VPC内部有两个独立的子网,每个EC2内部都有一个接口。 这两个子网都显示在VPC路由表的关联中。
10.10.2.0/24
10.10.21.0/24
由于上述编辑结尾提到的错误,我无法在EC2路由表中设置更具体的路由规则。 唯一的select是10.10.0.0/16,然后我不能单独定义2和21,至less不在PPC级别。
我已将从Amazon Linux的 ec2-net-utils移植到Ubuntu 。 这些脚本所做的是自动configuration新的接口,包括额外的IP并修复非对称路由。
看看这里:
感谢亚马逊对此的支持,但在这里发帖以防别人帮助。
在您的实例中,以root身份键入以下命令:
ip route add default via 10.10.2.1 dev eth0 tab 1 ip route add default via 10.10.21.1 dev eth1 tab 2 ip rule add from 10.10.2.0/24 tab 1 ip rule add from 10.10.21.0/24 tab 2
注意:要坚持在EC2中的Ubuntu实例重新启动; 编辑这个文件:/etc/rc.local在这个文件中,你的行应该看起来像这样:
route add -net XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gw XXX.XXX.XXX.XXX