我在许多网站上看到,将多个公共 IP 地址附加到 EC2 实例(用于 SSL、重定向或任何目的)的答案是创建多个私有 IP 地址,将弹性 IP 地址附加到前面提到的私有地址,确保私有 IP 地址 ENI 已附加到 EC2 实例,最后确保在 EC2 实例上运行的操作系统上创建并配置相应的网络接口。
因此,如果我的理解正确,只要私有 IP 地址链接到 EC2 实例并随后在其上进行配置,弹性 IP 就会解析为该私有 IP 地址,从而解析为该机器(前提是网络接口在机器上正确设置并与附加的 ENI 相对应)。
我无论如何都无法让它工作。我有一个新的 ENI,带有一个新的私有 IP,它已附加到我的实例。我有一个弹性(公共)IP 链接到该 ENI 上的私有 IP。
我使用私有 IP 在我的 Debian 7 机器上创建了一个新的网络接口 (eth1,是我在创建第二个 ENI 时由 AWS 分配的),如下所示:
auto lo
iface lo inet loopback
auto eth0 eth1
iface eth0 inet dhcp
iface eth1 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
编辑:我也尝试过
auto lo
iface lo inet loopback
auto eth0 eth1
iface eth0 inet dhcp
iface eth1 inet dhcp
我已通过“ifconfig”命令验证了私有 IP 地址和第二个接口是否正确安装,该命令显示 eth0 和 eth1。我可以 ping 私有 IP 地址。我在 DNS 中设置了相应的公共 IP(应该解析为私有 IP)。
长话短说,我无法 ping 映射到我的第二个公共 IP 的 A 名称,也无法 ping IP 本身。它们都超时了。我的防火墙允许 ICMP 请求,而我的 AWS 安全组允许所有端口/主机入站和出站。
我到底错过了什么?我已经被这个问题困扰了将近三天。我觉得我已经接近目标了,但这肯定是显而易见的。
ping dev2.my.tld
PING dev2.my.tld (xxx.xxx.xxx.xxx) 56(84) bytes of data.
^C
--- dev2.my.tld ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3022ms
答案1
我遇到了类似的问题,但我能够通过修改路由来解决它。我必须在 /etc/networking/interfaces 文件中添加这些路由:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up ip route add default via g.g.g.g dev eth0 tab 1
post-up ip rule add from x1.x1.x1.x1/32 tab 1 priority 500
auto eth1
iface eth1 inet dhcp
post-up ip route add default via g.g.g.g dev eth1 tab 2
post-up ip rule add from x2.x2.x2.x2/32 tab 2 priority 600
其中 x1.x1.x1.x1 和 x2.x2.x2.x2 是我的私有 IP 地址。gggg 是从现有路由表中收集的 IP。要获取它,请ip route show
在命令行上运行并使用以下行记下 IPdefault via g.g.g.g dev eth0
一旦我重新启动网络,一切就正常了。
我能够通过 AWS 上的以下论坛帖子将这些拼凑起来:https://forums.aws.amazon.com/message.jspa?messageID=404454
答案2
您无需对实例网络设置进行任何更改。如果您配置了 EIP 并将其与您的 ENI 关联,它就会起作用。我建议您控制您的安全组设置。