Como ligar soquetes de servidor IPv6 ao roteador doméstico usando a delegação de prefixo dinâmico?

2

Estou tentando executar um serviço da web pessoal da minha lan no IPv6. Eu quero que seja visível na internet pública e por trás de um registro AAAA. Eu preciso equilibrar a facilidade de configuração e a reconfiguração elegante quando o prefixo IPv6 do meu ISP mudar.

Qual endereço devo ligar? Um endereço IPv6 local + NAT, ou devo aceitar opções globalmente roteáveis enviadas para o host via delegação de prefixo?

Meus hosts estão por trás de um roteador OpenWRT, IPv4 + IPv6. O OpenWRT recebe um prefixo /56 delegado pelo meu ISP (Telus no Canadá). No entanto, esse prefixo não é estático . Ele muda de vez em quando, na ordem dos dias. Eu posso agilizar a mudança às vezes fazendo resets.

Estou disposto a dar uma chance a essa coisa sem NAT no IPv6. Não há problemas em abrir portas / IPs no firewall com informações de estado, mas gostaria de evitar a tradução de endereços.

Na minha configuração de IPv6 com estado + stateful, meus hosts na rede fazem autoconfiguração, e também fazem DHCPv6 para obter endereços alugados. Na minha caixa Ubuntu:

192.168.1.4
fd00:cafe::4/128                    # ULA local (by dhclient -6)
2001:2:3:4:a8a8:efcf:d96d:1315/64   # slaac+privacy global
2001:2:3:4:22f:bcff:fe12:1234/64    # slaac+EUI64 (macaddr)
fd00:cafe::a8a8:efcf:d96d:1315/64   # slaac+privacy local
fd00:cafe::22f:bcff:fe12:1234/64    # slaac+EUI64 (macaddr)
fe80::21f:bcff:fe08:c07a/64         # link local

Os endereços 2001:2:3:4: são roteáveis na Internet pública. Os fd00:cafe:: são roteáveis apenas localmente na minha sub-rede. fd00:cafe:: é um prefixo que configurei no OpenWRT (ULA) apenas para minha rede interna. O fe80: , claro, não é roteável. O OpenWRT não aluga um 2001:2:3:4::4 nesta configuração, por design (eu gostaria muito disso, no entanto).

O IP que eu escolho para o meu serviço v6 terá que acabar em um registro DNS AAAA em algum lugar, então seria preferível que ele não mudasse a cada hora.

  • Os endereços slaac + EUI dizem um pouco sobre o meu endereço mac, e eu não gosto disso.
  • Os endereços de privacidade do slaac + são um pouco mais de preservação da privacidade, mas giram em intervalos de algumas horas, o que é menos desejável. Os endereços permanecem se ainda estiverem em uso, mas seriam liberados toda vez que eu iniciasse o serviço (e o dns precisaria ser atualizado - o que leva no mínimo 5 minutos).
  • Outra opção é apenas escolher estaticamente um sufixo que eu gosto para o meu serviço (por exemplo, ::d00d ), com o mesmo prefixo roteável globalmente e atribuí-lo estaticamente ao meu nic, assim:
$ sudo ip -6 addr add 2001:2:3:4::d00d/64 dev eth0

Então, em meus aplicativos, eu poderia ligar apenas para esse endereço (ou para "::" no dispositivo que armazena esse ip).

# ./myserver -l 2001:2:3:4::d00d/64 -p 8080

Agora, uma vez que tenho um soquete de escuta vinculado a um IP publicamente roteável no host, qual é a melhor maneira de informar o roteador para permitir que os pacotes SYN fluam para ele? Eu preciso de um buraco aqui. UPnP, NAT-pmp?

Estou pensando nisso de maneira errada? Qual é a configuração típica do IPv6?

Atualizar

Eu tentei usar a configuração hostid dhcp em minhas concessões do OpenWRT /etc/config/dhcp . Supostamente permite especificar os últimos 32bits de uma reserva dhcpv6. Eu estava esperando receber um IPv6 extra com o prefixo wan e meu sufixo escolhido, mas sem sorte. O cliente dhcp6 no meu host ainda não recebe esse IP extra. Provavelmente relacionado a este problema do odhcpd 61 .

    
por init_js 05.09.2016 / 22:49

1 resposta

2

Se você pretende configurar um registro AAAA , configure esse endereço como um endereço IP estático no host que requer um endereço IP estático. O DHCP pode ser usado para servir endereços IP estáticos, mas é uma solução de segunda escolha ruim.

O OpenWRT usou dnsmasq para DHCP (v4 e v6) e DNS. dnsmasq pode ser configurado para fornecer um endereço IPv6 estático se o cliente usar DHCPv6. Pode ser apropriado usá-los como um destino para um proxy ou VIP (Virtual IP. A versão mais recente do OpenWRT parece usar odhcpd para alguns, se não todos os serviços DHCP.

Use o firewall para abrir portas da Internet para o servidor. (O endereço que você atribuiu será seu endereço da Internet, assim como sua LAN.) Você deve conseguir se conectar localmente ao servidor sem abrir nenhuma porta no firewall.

odhcpd suporta endereço IP estático adicionando uma seção host à sua configuração. Eu não tenho meu roteador para a versão mais recente do OpenWRT, então estou usando dnsmasq , que também pode fornecer serviços RA e DHCPv6. Você deve ser capaz de especificar o endereço IP estático na parte inferior da página de configuração do DHCP e do DNS.

O IPv6 não deve exigir o NAT, embora possa ser o destino por trás de um proxy ou VIP (IP virtual). Crie um / 64 do / 56 delegado para você e atribua um endereço desse / 64 ao seu servidor web. Este é o endereço que você deve usar. Seu servidor da Web precisará de um cliente IP dinâmico que possa atualizar seu DNS sempre que a mudança de endereço for feita. Até que você tenha endereços IP estáticos do DHCP funcionando, o endereço MAC será o seu endereço estável.

O endereço no bloco de rede com fc00:/8 não deve ser usado para comunicações com a Internet. Estes são destinados para uso como endereços locais exclusivos, semelhantes aos endereços privados IPv4.

Você pode precisar desenvolver seus próprios scripts de endereço IP dinâmico. No roteador, você precisará atualizar o firewall quando o / 56 for alterado e precisar fazer outras alterações. No servidor da Web, você precisará atualizar o DNS e, possivelmente, atribuir um novo endereço IP estático. (Acho que a atribuição na alteração do prefixo do endereço IP pode ser mais simples do que a atribuição do endereço IPv6 estático do DHCP.)

    
por 05.09.2016 / 23:22