Я нашел похожие вопросы, связанные с этой проблемой, но ни один из них не подошел к моей ситуации, и ни один из советов не помог мне запустить эту работу.
У меня есть 64-битный сервер Ubuntu из AMI по умолчанию, работающий в EC2. У него есть 2 сетевых экземпляра, каждый с 2 локальными IPS и связанными EIP.
Локальные IP-адреса в каждом экземпляре намеренно размещены в разных подсетях, чтобы помочь преодолеть сложности, связанные с одинаковыми сетевыми IP-адресами в разных экземплярах.
Два IP-адреса на первом экземпляре работают нормально, с ними нет проблем.
Некоторое время я использовал следующий код при запуске всех моих серверов
#!/bin/bash
MAC_ADDR=$(ifconfig eth0 | sed -n 's/.*HWaddr \([a-f0-9:]*\).*/\1/p')
IP=($(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC_ADDR/local-ipv4s))
for ip in ${IP[@]:1}; do
echo "Adding IP eth0: $ip"
ip addr add dev eth0 $ip/24
done
Я добавил вторую часть этого скрипта, чтобы попытаться запустить IP-адреса второго интерфейса.
MAC_ADDR=$(ifconfig eth1 | sed -n 's/.*HWaddr \([a-f0-9:]*\).*/\1/p')
IP=($(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC_ADDR/local-ipv4s))
for ip in ${IP[@]:1}; do
echo "Adding IP eth1: $ip"
ip addr add dev eth1 $ip/24
done
Я изменил свой файл / etc / network / interfaces, чтобы запустить второй интерфейс
# The primary network interface
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 10.10.21.22
netmask 255.255.255.0
ifconfig показывает, что оба интерфейса работают
ifconfig
eth0 Link encap:Ethernet HWaddr 06:b1:b9:f8:32:af
inet addr:10.10.2.20 Bcast:10.10.2.255 Mask:255.255.255.0
inet6 addr: fe80::4b1:b9ff:fef8:32af/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:114125 errors:0 dropped:0 overruns:0 frame:0
TX packets:51731 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:106211526 (106.2 MB) TX bytes:50413300 (50.4 MB)
Interrupt:26
eth1 Link encap:Ethernet HWaddr 06:b1:b9:f5:38:3a
inet addr:10.10.21.22 Bcast:10.10.21.255 Mask:255.255.255.0
inet6 addr: fe80::4b1:b9ff:fef5:383a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12269 errors:0 dropped:0 overruns:0 frame:0
TX packets:11522 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:366172 (366.1 KB) TX bytes:484140 (484.1 KB)
Interrupt:27
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:197 errors:0 dropped:0 overruns:0 frame:0
TX packets:197 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:14772 (14.7 KB) TX bytes:14772 (14.7 KB)
Мои правила маршрутизации кажутся правильно настроенными для 2 подсетей и 2 интерфейсов
Destination Gateway Netmask Interface
Default Route 10.10.2.1
eth0
1.0.0.0 None 255.255.255.0 eth0
1.0.0.0 None 255.255.255.0 eth1
10.10.2.0 None 255.255.255.0 eth0
10.10.21.0 None 255.255.255.0 eth1
Я могу пропинговать локальные IP-адреса, у которых есть проблемы (10.10.21.22 и 10.10.21.23), с того же сервера и добиться успеха. Я могу пропинговать общедоступные IP-адреса для основного интерфейса с других серверов. Я вообще не могу пропинговать IP-адреса второго интерфейса с других серверов.
Брандмауэры были отключены во время тестирования.
Какие-либо указания относительно того, что могло быть упущено или ошибочно?
Изменить - дополнительная информация
Главный сервер - Ubuntu 13.04 64 бит из стандартного AMI (микро-размер).
eth0 работает 2 ips, 10.10.2.20 и 10.10.2.21
eth1 имеет 2 ips не работает, 10.10.21.22 и 10.10.21.23
Все локальные IP-адреса также имеют внешний EIP.
Проверка всех этих параметров с одного компьютера работает. Пинг первого интерфейса с других машин работает. Не удается выполнить эхо-запрос второго интерфейса с других машин.
В таблице маршрутов VPC указано, что 10.10.0.0/16 является локальным, а 0.0.0.0/0 - igw. Выглядит хорошо. Не подумал заглянуть сюда, только проверил таблицу маршрутов внутри linux - есть ли что-то особенное в EC2 / VPC, чтобы заставить работать 2 интерфейса? Я предполагал, что EC2 знает все отображение IP / экземпляра и будет направлять его соответствующим образом ...
Просто попробовал добавить дополнительный маршрут на уровне vpc и получил "невозможно создать более конкретный маршрут для 10.10.21.0/24, чем локальный маршрут 10.10.0.0/16 в таблице маршрутов rtb-022ab66b"
Новое редактирование - дополнительные настройки подсети VPS
Я упомянул таблицу маршрутов в предыдущем обновлении, но не указал подсети внутри VPC.
Таблица маршрутов VPC является локальной 10.10.0.0/16, которая должна охватывать как подсети 10.10.2.0, так и 10.10.21.0.
Внутри VPC настроены 2 отдельные подсети - по одному интерфейсу на каждую внутри EC2. Обе подсети показаны внутри ассоциаций в таблице маршрутов VPC.
10.10.2.0/24
10.10.21.0/24
Я не могу настроить более конкретные правила маршрутизации в таблице маршрутизации EC2 из-за ошибки, упомянутой в конце редактирования выше. Единственный вариант - 10.10.0.0/16, и тогда я не могу определить 2 и 21 отдельно, по крайней мере, на уровне PPC.
Я портировал ec2-net-utils
из Amazon Linux к Ubuntu. Эти сценарии автоматически настраивают новые интерфейсы, включая дополнительные IP-адреса, и исправляют асимметричную маршрутизацию.
Взгляните сюда:
Благодаря поддержке Amazon за это, но размещение здесь на случай, если это поможет кому-то еще.
В вашем экземпляре как root введите следующие команды:
ip route add default via 10.10.2.1 dev eth0 tab 1
ip route add default via 10.10.21.1 dev eth1 tab 2
ip rule add from 10.10.2.0/24 tab 1
ip rule add from 10.10.21.0/24 tab 2
ПРИМЕЧАНИЕ. Для продолжения перезагрузки экземпляра ubuntu в EC2; отредактируйте этот файл: /etc/rc.local Внутри этого файла ваши строки должны выглядеть примерно так:
route add -net XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gw XXX.XXX.XXX.XXX