Por que depois de algum tempo eu perco a conectividade com meu host no IPv6 quando uso o ip6tables?

0

Eu estava experimentando com ip6tables (versão 1.6.0 ) em instâncias do EC2 usando o Debian 9 AMI, notei que depois de algum tempo eu perdi a conectividade com o servidor no endereço IPv6 enquanto eu podia Ainda alcanço o servidor no endereço IPv4, é claro que tenho o grupo de segurança definido para permitir todo o tráfego em IPv4 e IPv6, incluindo ICMP.

Estou definindo a política padrão da INPUT chain como DROP e permitindo portas específicas ou endereços IP e todo o tráfego ICMP, e estou tentando fazer o ping do servidor de outros hosts fora da AWS (da Linode e DigitalOcean), depois de algum tempo todos os pacotes param de chegar à instância do EC2, também estou executando 3 serviços nginx nas portas 80 , 8080 e 5555 , portas 8080 e 5555 são portas publicadas de contêineres nginx Docker, mas isso não importa, já que estou tentando solicitações GET em todas essas portas com o mesmo problema .

O mais estranho é que eu estou vendo o número de pacotes e quando a conectividade é perdida, o número de pacotes descartados não está aumentando ip6tables -L -xvn :

Chain INPUT (policy DROP 21 packets, 2748 bytes)

Mas quando eu altero a política padrão para ACCEPT ( ip6tables -P INPUT ACCEPT ), então ela começa a funcionar novamente, não sei se isso é uma coincidência ou não.

Eu também estou vendo o número de pacotes da tabela nat usando watch -n 1 ip6tables -t nat -L -xvn , quando tudo está funcionando bem, a contagem de pacotes aumenta tanto na cadeia PREROUTING quanto na INPUT , uma coisa que eu notei é que quando esse problema ocorre, posso ver o aumento do número de pacotes na cadeia PREROUTING da tabela nat enquanto os pacotes na cadeia INPUT da tabela nat não aumentam, também não tenho nenhum regras definidas na tabela nat .

Chain PREROUTING (policy ACCEPT 396 packets, 35498 bytes)

Além disso, eu tenho o Docker instalado que não usa ip6tables , tentei parar os contêineres do Docker e desabilitar o daemon do Docker e liberar as regras de iptables definidas pelo Docker sem qualquer sorte, o mesmo problema acontece após alguns tempo.

Estou tentando ping e curl em três servidores diferentes:

ping6 HOST_IP

E:

while true; do curl http://HOST_IP:5555 --connect-timeout 10; sleep 1; done

Estas são as regras ip6tables que estou usando:

-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -s IPv6_OF_ONE_OF_MY_OTHER_HOSTS -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT
-P INPUT DROP

Estou tentando testar se o host na lista de permissões é capaz de alcançar todas as portas e os outros 2 hosts só podem acessar a porta 5555 .

Estou fazendo algo errado? Como posso resolver este problema?

    
por Pierre 30.06.2018 / 09:15

1 resposta

1

Após alguns testes, descobri o problema e quando ativei a porta do cliente DHCPv6 546 usando:

-A INPUT -m conntrack --ctstate NEW -m udp -p udp --dport 546 -d fe80::/64 -j ACCEPT

Tudo começou a funcionar normalmente, também tentei remover essa regra para ter certeza de que esse é o verdadeiro problema e sim, quando essa regra é removida, esses pacotes são descartados e perco a conectividade com o servidor no endereço IPv6.

    
por 01.07.2018 / 11:52