来自 RHEL ami 的 ec2 实例(我没有检查任何其他实例)仅分配有私有地址。
即ip addr
收益:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 02:6d:c3:86:ce:e0 brd ff:ff:ff:ff:ff:ff
inet 172.39.16.198/20 brd 172.39.31.255 scope global eth0
inet6 fe80::6d:c2ff:fe86:cee0/64 scope link
valid_lft forever preferred_lft forever
公网 IP 可用,可以通过它访问机器。它可以通过 VPC 的网关访问互联网。
但是我如何确保接口具有民众IP,所以发出的包实际上包含正确的 IP?这是 ipsec 正常工作所必需的。
答案1
嗯,您无法在操作系统级别明确地将公共 IP 分配给 AWS 实例。Amazon 的数据中心位于防火墙后面,并且所有实例都具有私有 IP 地址,这些地址正在被 NAT 为公共 IP。
因此,从外部看,它们看起来像,public IP
但内部却有private IPs
。如果您尝试使用从外部访问您的实例,则public IP
应该足以访问它,因为它直接映射到private IP
您的实例的。
现在,如果您有一个直接为您的实例设置的 IPsec 隧道,我相信传出的数据包将具有tunnel IP
附加到您的实例的地址。