Назад | Перейти на главную страницу

Добавление второго сетевого интерфейса в Ubuntu 18.04 на AWS EC2

Предоставленный AMI 18.04 поставляется с одним интерфейсом, и я добавляю второй с его собственным IP (для каскадерского сервера). Однако экземпляр отвечает только на один эластичный IP-адрес или другой, но не на оба (для SSH и каскадера), в то время как оба частных адреса работают. Установка с Amazon Linux также прошла безупречно, так что это должна быть просто часть сетевой конфигурации.

Есть два сетевых интерфейса, каждый с эластичным IP-адресом и с разными подсетями на одном VPC в одной зоне доступности (172.31.16.0/20 и 172.31.48.0/20) и той же группы безопасности.

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

Я нашел, как решить эту проблему в центре знаний AWS.

https://aws.amazon.com/premiumsupport/knowledge-center/ec2-ubuntu-secondary-network-interface/

Возможно, это может вам помочь

Вероятно, это проблема маршрутизации и требует дополнительных записей конфигурации в таблицах маршрутизации.

В следующем примере приведены инструкции по настройке двух независимых таблиц маршрутизации:

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 и других дистрибутивах.