![在 AWS EC2 上为 Ubuntu 18.04 添加第二个网络接口](https://linux22.com/image/727631/%E5%9C%A8%20AWS%20EC2%20%E4%B8%8A%E4%B8%BA%20Ubuntu%2018.04%20%E6%B7%BB%E5%8A%A0%E7%AC%AC%E4%BA%8C%E4%B8%AA%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3.png)
提供的 18.04 AMI 带有一个接口,我正在添加第二个接口,它有自己的 IP(用于 stuntman-server)。但是,实例只响应一个弹性 IP 或另一个,而不是两个(用于 SSH 和 stuntman),而两个私有地址都可以工作。使用 Amazon Linux 的设置也非常完美,因此应该只是一个网络配置。
有两个网络接口,每个接口都有一个弹性 IP,并在一个可用区(172.31.16.0/20
和172.31.48.0/20
)和同一安全组中的一个 VPC 上具有不同的子网。
Ubuntu 没有自动检测到第二个,但/etc/netplan/50-cloud-init.yaml
看起来像是从 18.04 开始的地方?
与我习惯的不同,我找不到说明,所以猜测这就是问题所在。我刚刚eth1
为其添加了 DHCP。我猜如果我创建 AMI 或更改接口(将获得新的 MAC 地址),这些会中断吗?
network:
version: 2
ethernets:
eth0:
dhcp4: true
match:
macaddress: 06:05:14:4a:26:ce
set-name: eth0
eth1:
dhcp4: true
match:
macaddress: 06:86:ef:73:d4:1a
set-name: eth1
这确实出现在 中ifconfig
,我可以通过 SSH 连接到两个私有地址,但只有第二个(eth1
)通过 EIP 响应任一程序,尽管它确实在 上显示了几个数据包eth0
。
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.24.184 netmask 255.255.240.0 broadcast 172.31.31.255
inet6 fe80::405:14ff:fe4a:26ce prefixlen 64 scopeid 0x20<link>
ether 06:05:14:4a:26:ce txqueuelen 1000 (Ethernet)
RX packets 413 bytes 48193 (48.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 545 bytes 62679 (62.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.52.86 netmask 255.255.240.0 broadcast 172.31.63.255
inet6 fe80::486:efff:fe73:d41a prefixlen 64 scopeid 0x20<link>
ether 06:86:ef:73:d4:1a txqueuelen 1000 (Ethernet)
RX packets 899 bytes 403206 (403.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1218 bytes 232644 (232.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 275 bytes 21497 (21.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 275 bytes 21497 (21.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
答案1
我在 AWS 知识中心找到了解决方法
https://aws.amazon.com/premiumsupport/knowledge-center/ec2-ubuntu-secondary-network-interface/
也许这可以帮助你
答案2
这可能是路由问题,需要在路由表中添加额外的配置条目。
请参阅以下示例以获取有关如何设置两个独立路由表的说明:
https://serverfault.com/a/823061/476056
如果您的应用程序绑定到0.0.0.0
它,则需要添加如下规则。否则,出站流量将使用默认接口,最终到达第一个接口。
ip rule add from 0.0.0.0/32 to 192.168.122.0/24 dev eth0 table admin
ip rule add from 0.0.0.0/32 to 192.168.123.0/24 dev eth1 table users
这并非 Ubuntu 独有的,CentOS 和其他发行版也会出现同样的问题。