IPtables:转发到另一台主机的端口不工作

我正在尝试一些东西,所以这是我的testing设置:

build立:

  • 我有一个公共和私人子网的AWS VPC。
  • 我有一个公共IP地址的公共子网( 主机A
  • 我有一个私有子网的主机在端口80上运行nginx(说IP地址为10.0.1.132 主机B

我想做的事

我想通过访问主机A从Internet上访问主机B上的Web服务器。

怎么样

我在主机A的systctl.conf设置IP转发参数,然后放在iptables规则的下面:

 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.1.132:80 

问题:

它不工作,当我访问端口80上的主机A时,我无法打开网页

其他信息(涉及AWS VPC安全组):

  • host A上的port 80传入访问权限为0.0.0.0/0
  • host A上的port 80传出访问权限为10.0.1.0/24
  • 我有来自host A host B传入port 80访问

这里是内核信息:

 # sysctl -p | grep forward net.ipv4.ip_forward = 1 

另外,我可以通过端口80从主机A telnet到主机B端口80.因此,这certificate我的AWS安全组正在按预期工作。

我想我在IPtables部分出错了。 可以帮我弄清楚上面的设置有什么问题。

你知道私人主持人应该…

  • 有默认路由指向路由器?
  • 被发现,以便它的答复会回来?

我想我在IPtables部分出错了。 可以帮我弄清楚上面的设置有什么问题。

正确的,stream量将通过亚马逊安全组,但后来被IPTables阻止。 您需要一个将接受NATstream量的转发规则:

 iptables -A FORWARD -p tcp -m tcp -d 10.0.1.132:80 -j ACCEPT 

请注意,-A可能不正确,您可能需要-I(插入),然后在“FORWARD”后面提供一个数字,它代表您要在FORWARD链中插入规则的位置。 (即在任何DROP之前)您可以列出您的FORWARD链

 iptables -L FORWARD -n --line-numbers