Acesso à Internet de saída através do NAT Gateway para instâncias do EC2 + manter o acesso de entrada em ips públicos separados

1

Estou tentando configurar o acesso à Internet de saída através do "NAT Gateway" para várias instâncias do EC2, de modo que f.e. curl ifconfig.co retorna o mesmo ip para todas as ocorrências & o servidor de estatísticas externo que eles conectam para mostrar o mesmo ip.

Ao mesmo tempo, essas instâncias ainda devem estar acessíveis sobre seus IPs públicos (cada instância ec2 tem seu próprio ip público), estar acessível para ssh, servir conteúdo da Web & ser acessível um ao outro em seus ips privados.

As instâncias tinham apenas interfaces eth0 com 10.0.1.0/24 endereços de sub-rede (www1). Não consigo ver a interface para o ip público com ifconfig, mas acho que é um comportamento esperado para instâncias ec2. Eles estão todos por trás do Elastic Load Balancer.

Eu criei uma segunda sub-rede www2 com o bloco CIDR = 10.0.3.0/24.

Eu criei um NAT Gateway & atribuído um Elastic ip to it & escolheu a sub-rede www2. O ip privado do Gateway NAT é mostrado corretamente como 10.0.3.132.

Eu criei a interface de rede nas interfaces de rede EC2- > para uma das instâncias com a sub-rede 10.0.3.0 selecionada + atribuição automática de ip privada + grupo de segurança igual às outras instâncias com SSH TCP 22 0.0.0.0 / 0 para regras de entrada & todo o tráfego 0-65535 0.0.0.0/0 para tráfego de saída.

A instância de fato recebeu a segunda interface eth1 depois com o ip = 10.0.3.31 correto atribuído a ela. Aqui está o show de rotas ip daquela instância:

ip route show
default via 10.0.1.1 dev eth0
default via 10.0.3.1 dev eth1  metric 10001
10.0.1.0/24 dev eth0  proto kernel  scope link  src 10.0.1.69
10.0.3.0/24 dev eth1  proto kernel  scope link  src 10.0.3.31
169.254.169.254 dev eth0

Aqui está o ifconfig:

ifconfig
eth0      Link encap:Ethernet  HWaddr 0A:65:1C:28:80:7E
          inet addr:10.0.1.69  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::865:1cff:fe28:807e/64 Scope:Link
          inet6 addr: 2600:1f18:4328:e200:4f10:db4d:6a56:d900/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:10978429 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8536463 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:26095196998 (24.3 GiB)  TX bytes:2202490320 (2.0 GiB)

eth1      Link encap:Ethernet  HWaddr 0A:9D:28:92:38:0E
          inet addr:10.0.3.31  Bcast:10.0.3.255  Mask:255.255.255.0
          inet6 addr: fe80::89d:28ff:fe92:380e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:262217 errors:0 dropped:0 overruns:0 frame:0
          TX packets:197708 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:237017161 (226.0 MiB)  TX bytes:50706247 (48.3 MiB)

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:65536  Metric:1
          RX packets:420172 errors:0 dropped:0 overruns:0 frame:0
          TX packets:420172 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:1399654528 (1.3 GiB)  TX bytes:1399654528 (1.3 GiB)

Depois disso, se eu for ao painel VPC- > Tabelas de rota- > Edite rotas para a tabela de roteamento apropriada para todas as minhas instâncias & set "nat-06931899c65346b40" em vez de igw-fd92cc9a para 0.0.0.0/0 no destino Eu me desconecto da sessão ssh & o site hospedado na instância fica indisponível. Eu acho que é esperado como está por trás do NAT agora.

BTW não pareceu bom para mim que o grupo de segurança do NAT Gateway nas interfaces de rede EC2- > esteja vazio, mas quando tento configurá-lo para o mesmo que as outras instâncias (ou qualquer outra em all) com "alterar grupos de segurança" recebo "Você não tem permissão para acessar o recurso especificado".

Por isso, gostaria que minhas instâncias fossem acessíveis por meio de seus ips públicos sobre http & ssh, mas para relatar o mesmo ip com curl ifconfig.co .

O objetivo não é editar manualmente a tabela de roteamento em cada instância enquanto nos preparamos para o escalonamento automático & use as opções fornecidas pelo console da web aws.

Mas, mesmo que eu faça isso manualmente, como exatamente eu edito as rotas para alcançar meu objetivo?

O esquema geral de rede antes de adicionar o NAT Gateway foi: Gateway de Internet VPC < - > ELB < - > instâncias ec2 (com ips públicos acessíveis). O conteúdo da web das instâncias é veiculado por meio do ELB, mas as próprias instâncias estão disponíveis para ssh diretamente em seus ips públicos.

Obrigado antecipadamente!

    
por GTXBxaKgCANmT9D9 03.07.2017 / 19:15

1 resposta

0

Não vejo uma maneira de fazer isso sem alterar suas tabelas de roteamento.

Você precisa de duas tabelas de rotas (RT1 e RT2):

RT1 associado à sub-rede 10.0.1.0/24: Destination: 0.0.0.0/0, Target igw-fd92cc9a
RT2 associado à sub-rede 10.0.3.0/24: Destination: 0.0.0.0/0, Target nat-06931899c65346b4

Altere a tabela de roteamento da sua instância para fornecer à rota padrão via 10.0.3.1 uma métrica mais baixa (mais preferida).

    
por 01.09.2017 / 03:45