如何正确设置指向 EC2 中的一个实例的多个 IP 地址?

如何正确设置指向 EC2 中的一个实例的多个 IP 地址?

我目前有一个 ec2 实例,我想有 2 个公共 IP 指向它。我分配了 2 个 EIP,2 个网络接口,EIP 连接到这些接口,并且都连接到运行 ubuntu 14.04.2 LTS 的单个 EC2 实例。第二个 EIP 和网络接口是最近添加的,确实弹出了一个eth1,虽然我目前必须手动运行dhclient,但这不是问题所在。问题是没有数据包通过。我已经仔细检查了我的安全组,它们都允许来自任何 IP 地址的端口 80。但是,向 iptables 添加字节计数器规则(例如)显示,iptables -A INPUT -i eth1通过第二个接口到达我的机器的数据包恰好为 0 个。

我已经找到并阅读但没有帮助。

我遗漏了什么?我是不是忘了点击什么按钮?

答案1

我有一个正常工作的 ec2 实例,它有 2 个私有 IP 地址和 2 个 EIP,并连接到它们,但我为第二个 IP 使用了一个子接口,而不是另一个网络接口

/etc/network/interfaces 的内容(debian wheezy)

auto lo
iface lo inet loopback
auto eth0 eth0:0
iface eth0 inet dhcp
post-up ifconfig eth0:0 172.31.xx.yy netmask 255.255.240.0 up

我不记得我手动为 eth0:0 分配 IP 地址的原因,但这个设置有效。还测试了

curl --interface PRIVATE_IP ifconfig.me

表明来自 eth0 和 eth0:0 的传出流量确实是从正确的 EIP 发起的。

答案2

一年多后,我终于明白了!感谢本文。 总之:

如果还没有,请在新界面上运行 dhclient:

# dhclient eth1

然后,确定你的新私有 IP 地址。你可以在 EC2 控制台中查看,也可以运行

ip addr

您还需要知道网关 IP。在大多数情况下,它是your.ip.0.1,但为了确保运行:

ip route

你应该看到类似这样的内容:

default via 12.34.0.1 dev eth0

12.34.0.1是本例中的网关。为了演示,我假设私有 IP 是12.34.56.78。现在运行(以 root 身份):

ip rule add from 12.34.56.78 table 1000
ip route add default via 12.34.0.1 dev eth1 table 1000
ip route flush cache

要测试您的配置:

curl --interface 12.34.56.78 ifconfig.me

然后,为了使您的更改永久生效,请添加/etc/network/interfaces这些命令及其对立命令:

auto eth1
iface eth1 inet dhcp
  up ip rule add from 12.34.56.78 table 1000
  up ip route add default via 12.34.0.1 dev eth1 table 1000
  down ip rule del from 12.34.56.78 table 1000
  down ip route del default via 12.34.0.1 dev eth1 table 1000

注意:在更改持久网络设置之前,请确保您拥有实例的快照,以防出现故障而您无法访问您的实例。

相关内容