我有一个 vpc,该 vpc 有两个子网,一个是公有子网(10.20.7.0/24),一个是私有子网(10.20.8.0/24)。在公有子网中,我有一台使用 aws commuity ami 创建的用于 NAT 的机器,在私有子网中,我有一个 rhel 实例用于一些测试,nat 和 rhel 的 ip 如下
NAT:10.20.7.100
rhel 服务器:10.20.8.100
当我尝试使用 rhel 服务器在端口 80 上 telnet 我公司的一个 web 服务器时,它总是显示连接被拒绝,无法连接到远程主机
这是我的 NAT 服务器设置
[ec2-user@ip-10-20-7-100 ~]$ sudo iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 9 packets, 460 bytes)
Chain PREROUTING (policy ACCEPT 9 packets, 460 bytes)
pkts bytes target prot opt in out source destination
1 60 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:10.20.8.100
Chain INPUT (policy ACCEPT 9 packets, 460 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 9 packets, 640 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
100 6551 MASQUERADE all -- * eth0 10.20.0.0/16 0.0.0.0/0
iptables 服务已开启
[ec2-user@ip-10-20-7-100 ~]$ chkconfig --list | grep iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
NAT 服务器和私有 rhel 服务器或 aws 设置上是否缺少任何内容?请提供意见!
答案1
您是否尝试通过 telnet 连接到公共子网或 Internet/公司网络上的某台公司 Web 服务器?
如果您尝试通过 telnet 连接到同一 VPC 和同一子网内的实例(您的 Web 服务器)。
而且如果你的VPC的安全组不是默认的,那么你需要添加规则允许该安全组(默认安全组默认就有这条规则)。
确保您禁用源/目标检查。
确保私有子网的路由表将 NAT 实例作为默认路由。
确保您的 ACL 允许所需的流量。检查为您的 VPC 推荐的网络 ACL 规则