来自 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 的网关访问 Internet。
但是我如何确保接口有公共IP,所以传出的包实际上包含正确的 IP?这是 ipsec 正常工作所必需的。
好吧,您不能在操作系统级别将公共 IP 显式分配给 AWS 实例。亚马逊的数据中心位于防火墙后面,所有实例都有私有 IP 地址,这些地址被 NAT 转换为公共 IP。
所以在外面他们看起来像一个
public IP
,但在内部他们有他们的private IPs
。如果您尝试从外部访问您的实例,则public IP
应该足以访问它,因为它直接映射到private IP
您的实例。现在,如果您将 IPsec 隧道直接设置到您的实例,我相信传出的数据包会将
tunnel IP
地址附加到您的实例。