Я просто вхожу в VPC, пытаюсь понять, как все работает. На данный момент самым большим препятствием, с которым я столкнулся, является то, что каждый раз, когда я добавляю вторую эластичную сетевую карту к машине, этот второй IP-адрес недоступен для других в VPC. Вот что я сделал
авто eth1
iface eth1 inet dhcp
На моем основном (доступном в Интернете) экземпляре:
Нет ACL, предотвращающих ping, так как он работает с eth0. На машине не установлен брандмауэр. Я пробовал 4 разных экземпляра в нескольких SG и AZ с несколькими интерфейсами, все с одинаковым результатом.
Я бился головой об стену дольше, чем мне хотелось бы признаться в этом. Я не могу понять, в чем ошибка.
Таблица маршрутизации по умолчанию будет направлять трафик только на eth0
. Несмотря на то, что ubuntu обнаруживает другой ENI, вам все равно нужно направлять на него трафик.
Вам нужно будет выполнить расширенную маршрутизацию:
1) Включение доступа ко 2-му ENI немедленно и временно.
источник: http://www.rjsystems.nl/en/2100-adv-routing.php
# this will show your route table, i'll assume you have eth0 and eth1
# and your default is for eth0 to point to the gateway
# for this example lets assume the following:
# eth0 = 192.168.100.5
# eth1 = 192.168.100.10
# gateway = 192.168.100.1
ip route show ;
# first step is to create a routing table for your new device
cat /etc/iproute2/rt_tables ;
echo 2 eth1_rt >> /etc/iproute2/rt_tables ;
# next add the eth1_rt route table, so by default it will also point to the gateway
ip route add default via 192.168.100.1 dev eth1 table eth1_rt ;
# next take a look at your ip rules
# i'll assume the defaults here, and things flows to default with priority 32767
ip rule;
# let's add a rule, if we see traffic from eth1's IP address,
# use its new routing table we setup, and give it higher priority than default
ip rule add from 192.168.100.10 lookup eth1_rt prio 1000 ;
# done! now check your traffic from both IPs, they should both work.
2) Включение доступа ко 2-му ENI при перезагрузке, но постоянно.
источник: http://blog.bluemalkin.net/multiple-ips-and-enis-on-ec2-in-a-vpc/
Кроме того, если вы хотите, чтобы это изменение сохранялось, вы можете внести все эти изменения в файл интерфейса и просто перезапустить сетевую службу или перезагрузить, чтобы изменения вступили в силу.
# NOTE: add the eth1_rt routing table to /etc/iproute2/rt_tables as show in previous section
# original config to make dchp, I add mine to /etc/network/interfaces.d/eth1.cfg
auto eth1
iface eth1 inet dchp
# your extra rules for eth1
up ip route add default via 192.168.100.1 dev eth1 table eth1_rt
up ip rule add from 192.168.100.10 lookup eth1_rt prio 1000
Чтобы это вступило в силу, перезагрузите систему.
НОТА: Я попытался /etc/init.d/networking restart;
но он не улавливал изменения маршрута / правила, не знаю почему, поэтому мне пришлось перезагрузиться. Если вы хотите сделать его немедленным и постоянным, используйте оба метода.
Вот как я это делаю. Я использую статический IP. Сначала я использую dhcp, чтобы получить 2 элемента. IP-адрес и сетевая маска. Вот пошаговая инструкция:
загрузить экземпляр
sudo cp /etc/network/interfaces.d/eth0.cfg /etc/network/interfaces.d/eth1.cfg
sudo sed -i "s/eth0/eth1/g" /etc/network/interfaces.d/eth1.cfg
sudo ifdown eth1
sudo ifup eth1
sudo ifconfig eth1 | tee /tmp/ifconfig-eth1-output.txt
sudo ifdown eth1
sudo rm -f /etc/network/interfaces.d/eth1.cfg
ETH0_IP=$(cat /tmp/ifconfig-eth1-output.txt | grep "inet addr:" | cut -f 2 -d':' | cut -f 1 -d' ')
ETH0_NETMASK=$(cat /tmp/ifconfig-eth1-output.txt| grep "inet addr:" | cut -f 4 -d':')
ETH0_GATEWAY=$(echo ${ETH0_IP} | sed "s/[0-9]*$/1/g")
echo "auto eth1" > /tmp/eth1.cfg
echo "iface eth1 inet static" >> /tmp/eth1.cfg
echo "address ${ETH0_IP}" >> /tmp/eth1.cfg
echo "netmask ${ETH0_NETMASK}" >> /tmp/eth1.cfg
echo "up ip route add default via ${ETH0_GATEWAY} dev eth1 table 1 metric 10001" >> /tmp/eth1.cfg
echo "up ip rule add from ${ETH0_IP}/32 table 1 priority 10001" >> /tmp/eth1.cfg
echo "up ip route flush cache" >> /tmp/eth1.cfg
sudo cp -f /tmp/eth1.cfg /etc/network/interfaces.d/
sudo ifup eth1
это должно сработать, запустите их, чтобы проверить.
curl --silent http://ipinfo.io
curl --interface eth0 --silent http://ipinfo.io
curl --interface eth1 --silent http://ipinfo.io
они вступят в силу немедленно и сохранятся после перезагрузки.