Ativando o modo rp_filter loose (# 2) para IPv6

0

alguém tem uma solução para fazer filtragem de caminho inverso funcionar (no modo solto) também para IPv6 e não apenas para IPv4?

A configuração que estou tendo é uma máquina1 conectada diretamente a uma máquina2, enquanto a máquina1 também está conectada à rede externa.

O tráfego de destino é este: Cliente (da rede externa) envia uma solicitação para a máquina1 que, em seguida, encaminha a solicitação para a máquina2.

Problema óbvio: Quando o pacote é manipulado pela máquina1, ele o encaminha para uma porta conectada à máquina2, mas com o IP de origem de um cliente. Isso normalmente seria visto como um ip spoofed - mas é para isso que serve o rp_filter, certo?

Normalmente em machine1 eu faria (para IPv4): %código% e tudo funcionaria, mas para o IPv6 este não é o caso, já que o rp_filter ainda não está implementado no kernel para o IPv6. A única solução que conheço seria a configuração de ip6tables.

Configurações atuais: echo 2 > /proc/sys/net/ipv4/conf/<interface_to_outside_net>/rp_filter

Mas, por alguma razão, o tráfego nunca chega à máquina2 e no lado do cliente eu recebo o tempo limite.

Usando o tcpdump na máquina1, recebo apenas o handshake SYN do TCP.:

ip6tables -t raw -N RPFILTER ip6tables -t raw -A RPFILTER -m rpfilter -j RETURN ip6tables -t raw -A RPFILTER -m rpfilter --loose -j ACCEPT ip6tables -t raw -A PREROUTING -j RPFILTER

nada mais ...

Algum conselho?

    
por Diavel 26.11.2018 / 15:53

1 resposta

0

SPOILER

O problema, na verdade, estava relacionado ao fato de eu não ter configurado os endereços IPv6 usando /etc/network/interfaces/ , mas "somente" usando ip a a ... . Eu nunca pensei que isso pudesse ser diferente, mas acabou sendo o caso desta vez.

PASSOS para a SOLUÇÃO:

Durante a investigação, fiz um simples ping6 de machine2 em direção a machine1, que estranhamente corrigia o problema que eu estava tendo.

Depois disso, o handshake TCP foi criado corretamente e eu consegui fazer um curl -g -6 .. , que era o comando de destino que eu queria fazer e fiquei como o YES finalmente!

Mas então eu estava tipo ... isso não faz sentido, porque o ICMPv6 não está cuidando disso? Isso me fez pensar que eu deveria verificar a tabela ndp ( ip -6 neigh show ) que realmente me mostrou que a entrada para machine1 tinha FAILED .

O que significa que, por alguma razão, o ICMPv6 não estava conseguindo trocar solicitações / anúncios vizinhos.

No final, lembrei que a reinicialização simples do PC geralmente corrige todos os problemas, mas desde que eu configurei minhas interfaces usando apenas ip a a ... isso iria liberar minha configuração, então o que eu fiz foi configurado /etc/network/interfaces/ com endereços IPv6 apropriados e reinicializado máquinas.

Esta foi a fonte de todos os problemas;)

SOLUÇÃO :

Não faça nada em relação ao rp_filter no modo solto para IPv6 == > está ativado por padrão.

Apenas certifique-se de que você configurou corretamente suas interfaces:)

PS: Alguém sabe o que eu estraguei? Por que não consegui usar simplesmente ip address add.... ? Obrigado.

    
por 29.11.2018 / 13:53