Я создал экземпляр CentOS 7 на EC2 , установил необходимое приложение, назначил 1 эластичный IP-адрес к сетевому интерфейсу по умолчанию ( eth0 ), и все это доступно.
Теперь я создал еще один сетевой интерфейс , назначил ему эластичный IP-адрес , а затем прикрепил ENI к экземпляру. Теперь экземпляр недоступен на eth1 (новый дополнительный сетевой интерфейс).
Я пробовал различные подходы, найденные в Google, создавая ifcfg-eth1 в / etc / sysconfig / network-scripts , но безуспешно.
Для справки это вывод из ifconfig -a (IP-адреса замаскированы):
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 1XX.3XX.2XX.4XX netmask 255.255.240.0 broadcast 1XX.3XX.2XX.4XX
inet6 fe80::2e:a1ff:fe01:c763 prefixlen 64 scopeid 0x20<link>
ether 02:2e:a1:01:c7:63 txqueuelen 1000 (Ethernet)
RX packets 219 bytes 28188 (27.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 284 bytes 31055 (30.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 02:78:73:34:66:35 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
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 0 (Local Loopback)
RX packets 23 bytes 4968 (4.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23 bytes 4968 (4.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
И это из ip addr :
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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 pfifo_fast state UP qlen 1000
link/ether 02:2e:a1:01:c7:63 brd ff:ff:ff:ff:ff:ff
inet 1XX.3XX.2XX.4XX/20 brd 1XX.3XX.2XX.4XX scope global dynamic eth0
valid_lft 3404sec preferred_lft 3404sec
inet6 fe80::2e:a1ff:fe01:c763/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 02:78:73:34:66:35 brd ff:ff:ff:ff:ff:ff
Мой / etc / sysconfig / network-scripts / ifcfg-eth0 файл имеет следующее содержимое:
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="yes"
PEERDNS="yes"
IPV6INIT="no"
PERSISTENT_DHCLIENT="1"
Наконец, никто, кроме этого парня по адресу: https://www.internetstaff.com/multiple-ec2-network-interfaces-on-red-hat-centos-7/ помог мне.
Для сохранения информации, если ссылка станет недействительной в будущем, вот полезный контент из сообщения:
Установите шлюзом по умолчанию eth0 :
Редактировать / etc / sysconfig / network и добавьте:
GATEWAYDEV = eth0
Если этого не сделать, шлюз по умолчанию в основной таблице маршрутизации был установлен на последний настраиваемый интерфейс, что вызвало странное поведение.
Настройте каждый добавленный дополнительный интерфейс:
В / etc / sysconfig / network-scripts , создайте ifcfg-eth X для каждого нового интерфейса.
Измените:
Имя DEVICE для соответствия ENI .
DEVICE = "eth1"
BOOTPROTO = "dhcp"
ONBOOT = "да"
TYPE = "Ethernet"
USERCTL = "да"
PEERDNS = "да"
IPV6INIT = "нет"
PERSISTENT_DHCLIENT = "1"
Добавьте собственный маршрут для каждого дополнительного интерфейса.
Снова в / etc / sysconfig / network-scripts создайте файл route-eth X для каждого интерфейс.
Изменить:
Измените IP-адрес источника на назначенный внутренний сетевой адрес ENI.
по умолчанию через 10.0.0.1 dev eth0 table 1
10.0.0.0/24 dev eth0 src 10.0.0.10 таблица 1
Также в / etc / sysconfig / network-scripts создайте rule-eth X для каждого интерфейса.
Изменить:
Измените IP-адрес на назначенный внутренний сетевой адрес ENI.
из 10.0.0.10/32, таблица 1
Перезапустите сетевую службу, и все будет готово. Вы можете подтвердить это с помощью правила IP :
# ip rule
0: from all lookup local
32764: from 10.0.0.10 lookup 3
32765: from 10.0.0.11 lookup 2
32766: from all lookup main
32767: from all lookup default
Обратите внимание, что Amazon предложила собственный маршрут и правило для eth0 , но мы обнаружили, что eth0 разрешает использовать основной таблица маршрутизации не только работала, но и стала более гибкой.