我正在配置NAT实例,该实例应该将端口2222上的所有传入请求重定向到我的虚拟私有云上的私有子网中的服务器的端口22,因此我可以将SSH直接连接到我的私有实例。我在NAT实例的安全组中打开了端口2222,在我的私有实例的安全组中打开了22,并且已添加
org.hibernate.dialect.Oracle10gDialect
以下几行:
/etc/ssh/sshd_config
NAT实例上的nmap显示端口2222已打开:
Port 22
Port 2222
我还在我的NAT实例上添加了以下iptables规则,因此端口2222上的任何软件包都应重定向到10.0.2.18:22(10.0.2.18是私有实例IP):
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
2222/tcp open EtherNet/IP-1
问题是,如果我尝试这样做,我无法访问NAT实例的端口2222:
sudo iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.2.18:22
或者这个:
ssh -p 2222 -i mykey.pem ec2-user@my_nat_ip
我的连接超时了。
提前感谢任何帮助。
答案 0 :(得分:1)
您可以查看一些内容(假设您已排除安全组):
检查您是否未拒绝网络ACL(NACL)上的流量。
检查私有子网的路由表是否正在向NAT实例发送流量。
检查您是否已禁用NAT实例上的Source/Destination Check
。
此外,您可能希望在VPC上启用VPC Flow Logs,以帮助您找到丢弃这些数据包的位置。
然后,另一个建议是:您可能想要考虑端口转发的替代方案,因为这基本上是将您的私有子网中的实例暴露给危险的互联网。常见的方法是使用通常称为 Bastion Host 的方法。或跳转主机。有些人为此目的使用 NAT实例。有几种方法可以包括:(1)使用SSH本地端口转发; (2)使用SSH动态代理; (3)在SSH客户端上使用ProxyCommand
选项。在StackOverflow和其他StackExchange网站上有很多关于所有这些主题的回答问题,你肯定会找到很多方法来做到这一点!