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

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

提供的 18.04 AMI 带有一个接口,我正在添加第二个接口,它有自己的 IP(用于 stuntman-server)。但是,实例只响应一个弹性 IP 或另一个,而不是两个(用于 SSH 和 stuntman),而两个私有地址都可以工作。使用 Amazon Linux 的设置也非常完美,因此应该只是一个网络配置。

有两个网络接口,每个接口都有一个弹性 IP,并在一个可用区(172.31.16.0/20172.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 和其他发行版也会出现同样的问题。

相关内容