Docker no AWS - Interfaces de Rede Elástica Múltiplas

1

Eu tenho um contêiner docker executando o servidor da Web que está escutando na porta 80 (jenkins / jenkins: lts)

Eu possuo interfaces 2x no host, um deve ser dedicado apenas ao contêiner (uma vez que isso esteja funcionando, ele será bloqueado apenas para permitir HTTP / HTTPS

Aqui está o NIC Config na instância (Isso é AWS, então eles são Elastic Network Interfaces):

  • Gateway: 10.10.20.1
  • eth0 ip 10.10.20.200
  • eth1 ip 10.10.20.111

Configuração de rotas, pois isso é um roteamento assimétrico:

  • ip route add default via 10.10.20.1 dev eth0 tab 1
  • ip route add default via 10.10.20.1 tab dev eth1 2
  • ip rule add from 10.10.20.111/32 tab 2 prioridade 500
  • ip rule add from 10.10.20.200/32 tab 1 prioridade 600

Aqui estão algumas saídas depois que as regras de rota acima estão definidas:

root@docker01:/home/ubuntu#ip route show tab 1 
default via 10.10.20.1 dev eth0 

root@docker01:/home/ubuntu# ip route show tab 2 
default via 10.10.20.1 dev eth1 

root@docker01:/home/ubuntu# ip rule 
0:  from all lookup local 
500:    from 10.10.20.111 lookup 2 
600:    from 10.10.20.200 lookup 1 
32766:  from all lookup main 
32767:  from all lookup default

Docker container is listening on 0.0.0.0:80

Ao tentar acessar, aqui estão os resultados:

  • link - WORKS (interface do Loads Jenkins)
  • link - NÃO FUNCIONA
  • ping 10.10.20.200 - OBRAS
  • ping 10.10.20.111 - OBRAS
  • ssh 10.10.20.200 - OBRAS
  • ssh 10.10.20.111 - OBRAS

Since the ping and ssh works, I have a feeling this has something to do with docker specifically.

Aqui está a saída "docker ps" para as portas:

0.0.0.0:443->443/tcp, 0.0.0.0:50000->50000/tcp, 0.0.0.0:80->8080/tcp

Coisas que eu verifiquei:

  • Firewalls / grupos de segurança - os dois canais da ENI permitem a porta 80 e o ICMP e tudo permite a saída sem restrições. Não há regras Iptables além do que o docker cria automaticamente
  • A execução do contêiner com um IP de escuta explícito (exemplo: -p 10.10.20.111:80:80) que não fez diferença, no entanto, obviamente, eliminou a capacidade de acessá-lo por meio do outro endereço.
  • netstat mostra a porta 80 aberta e ouvindo globalmente
por emmdee 06.10.2017 / 19:09

0 respostas