将多个 EC2 实例分配给一个弹性 IP

Assign Multiple EC2 instances to one Elastic IP

我有 2 个 EC2 实例,它们向外部服务器发送请求。该服务器需要一个静态 IP,因此我使用弹性 IP 将其中一个 EC2 连接到它。

问题是我在该服务器上只允许有一个与我的帐户相关联的静态 IP。有没有办法使用网络接口或 ELB 将 2 个 EC2 放在同一个 EIP 后面?我试图阅读它,但 AWS 文档有点让人不知所措。

最简单的方法是:

  • 在 public 子网
  • 中创建 NAT 网关
  • 将您的 EC2 实例放在私有子网中
  • 为私有子网配置路由以将 Internet 绑定的流量发送到 NAT 网关

这样一来,所有流量似乎都来自 NAT 网关,它可以有一个弹性 IP 地址。

另一种方法是使用其中一个实例(实例-A)作为 NAT 实例,它使用 iptables 中的伪装设置来转发流量.然后,配置第二个实例 (Instance-B) 以将 Internet 绑定的流量发送到 Instance-A。实例 A 将流量转发到外部服务器并将响应传回实例 B。

这是将 EC2 实例配置为 NAT 实例的普通脚本:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
/sbin/iptables-save > /etc/sysconfig/iptables
mkdir -p /etc/sysctl.d/
cat <<EOF > /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.send_redirects = 0
EOF