将AWS公共IP地址分配给接口

从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正常工作所必需的。

那么,您不能在操作系统级别将公有IP明确分配给AWS实例。 亚马逊的数据中心位于防火墙之后,而且这些实例都有私有IP地址,这些私有IP地址被NAT转换为公有IP。

所以在外面他们看起来像public IP但在内部他们有他们的private IPs 。 如果你正在试图从外部访问你的实例,使用public IP就足够了,因为它直接映射到实例的private IP

现在如果你有一个IPsec隧道直接安装到你的实例上,我相信这个传出的数据包将会有连接到你的实例的tunnel IP地址。