带有NAT的Web应用程序,用于出站请求

时间:2014-10-05 00:07:33

标签: amazon-web-services amazon-ec2 load-balancing amazon-vpc

我正在尝试为以下用例设置AWS VPC:

  • Web应用程序必须能够根据需要在私有子网上进行扩展。
  • 作为初始设置过程的一部分,Web应用程序的使用者需要将应用程序的IP地址列入白名单。
  • Web应用程序必须能够按需扩展,而无需客户授权其他公共IP。

我能够使用以下指南创建VPC:

https://aws.amazon.com/articles/2781451301784570

我已确认源自私有子网上的计算机的出站请求具有预期的NAT地址。虽然不一定与问题相关,但我还确认NAT实例根据需要正确地相互故障转移(对所提供的脚本进行了一些更新)。基本上,一切都在这里按预期工作。

问题是连接到私有子网上的Web客户端。我在这里尝试了一些不同的选项,包括为实例分配弹性IP和ELB产生相同的结果。收到实例的入站流量,但实例的响应正在通过NAT实例进行路由。

这是私有子网的示例路由表:

Destination Target Status Propagated
10.0.0.0/16 local Active No
0.0.0.0/0 eni-0e42d978 / i-1c0d43f7 Active No

这是公共子网的示例路由表:

Destination Target Status Propagated 
10.0.0.0/16 local Active No 
0.0.0.0/0 igw-e5429280 Active No

这是NAT实例上IP表配置的示例:

# Generated by iptables-save v1.4.18 on Fri Oct  3 19:08:18 2014
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:84]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Oct  3 19:08:18 2014

对于来自私有子网的请求,这完全没问题,正如我们所期望的那样。对于源自公共互联网的请求,最终会从客户端不期望的IP地址路由响应,从而破坏任何尝试的HTTP连接。

有没有办法修改上面示例中的现有设置,以允许对实例的入站HTTP请求,以便通过ELB正确路由响应?

0 个答案:

没有答案