简而言之:主网络接口上的两个私有 IP 地址都可以 ping 通,但辅助网络接口上的两个私有 IP 地址都无法 ping 通。
很长的故事:
基于此 AWS 文档,使用 Amazon Linux 2 AMI,它将自动配置额外的网络接口和 IP 地址。
对于微型 ec2 实例,理论上它可以有 4 个私有 IP 地址(2 个网络接口,每个网络接口上有 2 个 IP 地址)
我的步骤:
- 从 Amazon Linux 2 AMI 创建一个 ec2 实例,在创建过程中设置两个私有 IP 地址
- 关联弹性 IP 地址
- 创建后,连接一个具有 2 个私有 IP 地址(与主 NIC 相同的子网和相同的安全组)的辅助网络接口。
- 登录实例,使用文档中的命令重新启动网络接口:
sudo service network restart
ip a
输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 0e:31:86:22:95:b4 brd ff:ff:ff:ff:ff:ff
inet 172.31.1.101/20 brd 172.31.15.255 scope global dynamic eth0
valid_lft 2509sec preferred_lft 2509sec
inet 172.31.1.102/20 brd 172.31.15.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::c31:86ff:fe22:95b4/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 0e:ff:4a:aa:cb:66 brd ff:ff:ff:ff:ff:ff
inet 172.31.2.201/20 brd 172.31.15.255 scope global dynamic eth1
valid_lft 2325sec preferred_lft 2325sec
inet 172.31.2.202/20 brd 172.31.15.255 scope global secondary eth1
valid_lft forever preferred_lft forever
inet6 fe80::cff:4aff:feaa:cb66/64 scope link
valid_lft forever preferred_lft forever
ip r
输出:
default via 172.31.0.1 dev eth0
default via 172.31.0.1 dev eth1 metric 10001
169.254.169.254 dev eth0
172.31.0.0/20 dev eth0 proto kernel scope link src 172.31.1.101
172.31.0.0/20 dev eth1 proto kernel scope link src 172.31.2.201
ip rule
输出:
0: from all lookup local
32764: from 172.31.2.202 lookup 10001
32765: from 172.31.2.201 lookup 10001
32766: from all lookup main
32767: from all lookup default
ip route show table 10001
输出:
default via 172.31.0.1 dev eth1
172.31.0.0/20 dev eth1 proto kernel scope link src 172.31.2.201
sysctl -ar 'conf.eth.\.arp_'
输出:
net.ipv4.conf.eth0.arp_accept = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.arp_ignore = 0
net.ipv4.conf.eth0.arp_notify = 0
net.ipv4.conf.eth1.arp_accept = 0
net.ipv4.conf.eth1.arp_announce = 0
net.ipv4.conf.eth1.arp_filter = 0
net.ipv4.conf.eth1.arp_ignore = 0
net.ipv4.conf.eth1.arp_notify = 0
通过以上所有配置,主网络接口上的两个私有 IP 地址都可以 ping 通(从另一个 ec2 实例)。但辅助网络接口上的两个 IP 都无法 ping 通(目标主机无法访问)。
此外,将安全组设置为对所有流量、所有来源开放也无济于事。