ip6tables: como lidar com o prefixo que muda periodicamente?

4

Meu ISP me fornece IPv6 nativo (infelizmente DS-Lite para v4) e estou usando o SLAAC para os clientes da minha rede local por trás de um roteador de banda larga.

Como não confio no roteador (que é configurado pelo meu ISP sobre o TR-691), configurei as regras ip6tables em cada cliente, por exemplo, limitando o acesso SSH às estações na mesma sub-rede:

$ ip6tables -A services -s 2a02:8071:28c2:5400::/64 -p tcp --dport 22 -j ACCEPT

O problema agora é que o prefixo muda periodicamente, aprox. uma vez por mês.

Existe uma instrução ip6tables que corresponde dinamicamente ao (s) prefixo (s) atual (s) de uma determinada interface?

Ou como você lidaria com o prefixo de mudança? Eu pensei em escrever um script de init que primeiro determina o prefixo atual através de Router-Solicitation e então gera as regras appropreate ip6tables. Mas isso parece sujo de alguma forma ...

    
por lynix 14.07.2014 / 20:24

1 resposta

1

Em teoria, o jeito certo de lidar com isso é com Delegação de Prefixo DHCP e DNS dinâmico.

Então, funcionaria assim:

1) a sua instância do roteador linux solicita um endereço IPv6, bem como uma delegação de prefixo IPv6 do ISP na interface A

2) ele atribui um / 64 do prefixo delegado para a interface B, que possui todas as outras máquinas. Anuncia este prefixo através de pacotes RA e / ou através do daemon do servidor DHCP da sua escolha

3) os clientes pegam endereços IPv6 e registram-se no DNS local pelo nome do host, ou respondem às solicitações do mDNS para esse nome se estiverem executando bonjour, Avahi, etc.

4) regras de firewall e praticamente qualquer outra configuração relacionada à rede é baseada em nomes de host, não em endereços IP. Essa é a maneira do IPv6: nomes DNS bons, endereços literais ruins porque são difíceis de lembrar e digitar.

O principal problema que você encontrará é que iptables e ip6tables suportam apenas regras baseadas em nomes de host resolvendo nomes de hosts uma vez durante a instalação da regra. Então você provavelmente terá que escrever algum script para reinstalar as regras sempre que o prefixo mudar. Pior, se um host estiver offline ou não puder ser resolvido por mDNS ou DDNS no momento da instalação da regra, as coisas serão interrompidas silenciosamente.

Em suma, as tabelas ip (6) são simplesmente quebradas para qualquer caso em que os endereços IP mudem, mesmo no IPv4. Isso significa que ele é quebrado para qualquer rede de tamanho razoável, pelo menos em um sistema que age como um roteador.

Muitos produtos de firewall comerciais lidam com esse caso de uso muito melhor (embora muitos sejam baseados em Linux, como o SonicWall). Eu suspeito que eles simplesmente resolvam os FQDNs periodicamente com base no TTL e atualizem os IPtables ou seus módulos de kernel de rede personalizados.

    
por 26.08.2014 / 02:50

Tags