A segunda ENI no AWS VPC não está acessível na instância do Ubuntu

5

Estou entrando no VPC, tentando entender como tudo funciona. Até agora, o maior obstáculo que enfrentei é que, sempre que eu adiciono um segundo Elastic NIC a uma máquina, esse segundo IP não é acessível por nenhum outro no VPC. Aqui está o que eu fiz

  • Lançamos a AMI da Canonical para o Ubuntu 12.10 x64 EBS.
  • Durante o lançamento, configurei-o para duas interfaces de rede (mesma sub-rede)
  • Quando a máquina estava pronta, adicionei o seguinte a / etc / network / interfaces:

auto eth1

iface eth1 inet dhcp

  • ifup eth1
  • Execute ifconfig , verifique se o segundo endereço está ativo.

Na minha instância principal (acessível pela Internet):

  • ping (IP para a nova instância eth0) - Funciona
  • ping (IP para a nova instância eth1) - FAILS

Não existem ACLs que impeçam o ping, já que ele funciona com eth0. Não há configuração de firewall na máquina. Eu tentei 4 instâncias diferentes em vários SGs e AZs com várias interfaces, todas com o mesmo resultado.

Eu tenho batido minha cabeça contra a parede por mais tempo do que eu gostaria de admitir sobre isso. Eu não consigo descobrir onde está o erro nisso.

    
por Jon 24.01.2013 / 05:48

2 respostas

12

Por padrão, a tabela de roteamento direcionará o tráfego apenas para eth0 . Mesmo que o ubuntu detecte o outro ENI, você ainda precisa rotear o tráfego para ele.

Você terá que fazer um roteamento avançado:

1) Ativando o acesso à 2ª ENI imediata e temporariamente.

fonte: link

# 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) Ativando o acesso à segunda ENI na reinicialização, mas persistentemente.

fonte: link

Além disso, se você quiser que essa alteração persista, faça todas essas alterações no arquivo de interface e reinicie o serviço de rede ou reinicialize para que ele tenha efeito.

# 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

Para que isso tenha efeito, reinicie o sistema.

OBSERVAÇÃO: tentei /etc/init.d/networking restart; , mas ele não selecionou as alterações de rota / regra, não sei por que, então reiniciei. No caso de você querer torná-lo imediato e persistente, faça os dois métodos.

    
por 21.07.2014 / 21:48
0

Aqui está como eu faço isso. Eu uso IP estático. Inicialmente eu uso dhcp para obter 2 itens. O endereço IP e a máscara de rede. Aqui está a instrução passo a passo:

inicialize a instância

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

que deve fazê-lo, execute-os para verificar.

curl --silent http://ipinfo.io
curl --interface eth0 --silent http://ipinfo.io
curl --interface eth1 --silent http://ipinfo.io

isso terá efeito imediato e persistirá durante as reinicializações.

    
por 21.11.2015 / 22:57