当连接到同一可用区中的 AWS 实例时,即使所有实例都使用相同的 NACL 和安全组,我也能够连接某些实例而不能连接其他实例。
我的安全组设置为允许来自我的 IP 地址的所有流量,该 IP 地址是我通过在客户端计算机上运行以下命令获得的:
echo $(curl -s http://ifconfig.me/ip)/32
为了调试该问题,我暂时打开了 SG 以允许从 0.0.0.0/0 访问端口 22,并tail -f /var/log/secure
在无法连接的服务器上运行并尝试从我的客户端计算机进行连接。
此时,我注意到,根据我尝试连接的主机,我有不同的源 IP。
我在 Glasfaser 上使用 Fritzbox:
来源:https://www.deutsche-glasfaser.de/glasfaser/hausanschluss/
这可能是什么原因造成的?这是双重 NAT 吗?
答案1
如果您的源 IP 是动态的,则您不能将这些 IP 用作 ACL/安全组中的信任源。
您应该在 AWS 子网中设置一个跳转主机/反弹主机。此服务器被视为“安全”,您只能从此主机访问您的实例。
设置一种安全的方式来验证此跳转主机/反弹服务器。例如具有双因素身份验证或客户端证书的 openvpn 或 ssh 等
答案2
看起来 glasfaser 正在使用运营商级 NAT (CGNAT)。
一种解决方法是使用 IPv6 地址连接到实例。