在 AWS EC2 上向 Ubuntu 18.04 添加第二个网络接口

Fir*_*cer 11 networking ubuntu amazon-ec2 amazon-web-services ubuntu-18.04

提供的 18.04 AMI 带有一个接口,我正在添加第二个带有自己 IP 的接口(用于特技演员服务器)。然而,实例只响应一个弹性 IP 或另一个,而不是两者(对于 SSH 和特技演员),而两个私有地址都可以工作。使用 Amazon Linux 的设置也完美无缺,所以应该只是一个网络配置。

有两个网络接口,每个接口都有一个弹性 IP,在一个 VPC 上的一个可用区 (172.31.16.0/20172.31.48.0/20) 和同一个安全组中具有不同的子网。

ubuntu没有自动检测第二个,不过/etc/netplan/50-cloud-init.yaml貌似是从18.04开始的地方?

与我习惯的不同,我找不到说明所以猜测这是问题所在。我刚刚添加了一个eth1DHCP。我猜如果我制作 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
Run Code Online (Sandbox Code Playgroud)

这确实出现在 中ifconfig,我可以通过 SSH 连接到两个私有地址,但是只有第二个 ( eth1) 通过 EIP 响应任一 pgram,尽管它确实在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
Run Code Online (Sandbox Code Playgroud)

har*_*gut 0

这可能是一个路由问题,需要在路由表中添加额外的配置条目。

有关如何设置两个独立路由表的说明,请参阅以下示例:

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 和其他发行版上也会发生同样的情况。