我刚刚开始使用 AWS,在 VPC 上运行 2 个 ec2 实例,一个具有公共和私有 IP,一个仅具有私有 IP。
如果我将外部 IP 附加到它们,我可以通过 SSH 连接到它们(使用我的密钥)。
我可以通过 SSH 从服务器 1 连接到服务器 2(如果我将 pem 密钥复制到服务器 1 上)
服务器 2 我只想要私有 IP,而服务器 1 有一个公共 IP 和 NAT 到服务器 2。我正在尝试按照教程这里aws 显示服务器 2 的私有地址为 10.0.0.18(服务器 1 为 10.0.0.63)
在服务器 1 上我添加了..
sudo iptables -t nat -A PREROUTING -p tcp --dport 10235 -j DNAT --to-destination 10.0.0.18:22
如果我看一下表格,我可以看到......
1 DNAT tcp -- anywhere anywhere tcp dpt:10235 to:10.0.0.18:22
如果我查看 iptables 的数据包……
iptables -L -v -t nat
Chain PREROUTING (policy ACCEPT 1 packets, 40 bytes)
pkts bytes target prot opt in out source destination
10 600 DNAT tcp -- any any anywhere anywhere tcp dpt:10235 to:10.0.0.18:22
我正在尝试连接...
ssh -i mykeyfile.pem -p 10235 user@<server1domain>
每次我尝试,我都能看到服务器 1 上的数据包增加,但我从未收到任何响应。我已在安全组上允许端口 10234&5 和 22。
安全组显示为..
Custom TCP Rule TCP 10234 - 10240 0.0.0.0/0
ssh -vvv 没有提供任何有用的信息,因为它只是挂着说“连接到我的主机端口 10235”。
如上所述,如果我关联一个公共 IP 并连接到该 IP,一切就可以正常工作,但我似乎无法通过 NAT 使其工作?
答案1
如果您尝试从 VPC 外部连接到仅具有私有 IP 的实例,则此操作将失败。您需要将具有公共 IP 的实例设置为 VPN(尝试 OpenVPN AS),然后通过这种方式允许 ssh 访问。
如果您尝试从服务器 2(仅私有 IP)通过 SSH 连接到服务器 1(公共/私有),那么您可能还需要添加路由表或安全组,并确保 VPC 可以处理 NAT/PAT 流量:
并将其设置为运行(ubuntu):
sed -i '$ i '"/usr/local/sbin/configure-pat.sh"'' /etc/rc.local'