Configuração do Jool no OpenWrt
Este tutorial ensina como configurar o Jool para NAT64 em uma namespace de rede separada no OpenWrt.
1. Instalação de Pacotes Necessários
Instale os pacotes necessários para a configuração do Jool.
# Instalar pacotes opkg update && opkg install kmod-veth ip-full kmod-jool-netfilter jool-tools-netfilter
1. Configuração do Namespace de Rede do Jool
Criar ou copiar o seguinte script de shell para /etc/jool/setupjool.sh
:
# Copie e cole o comando via SSH: vi /etc/jool/setupjool.sh
#!/bin/sh # Configurar Jool ip link add jool type veth peer openwrt ip netns add jool ip link set dev openwrt netns jool ip netns exec jool sh << EOF sysctl -w net.ipv4.conf.all.forwarding=1 sysctl -w net.ipv6.conf.all.forwarding=1 sysctl -w net.ipv6.conf.openwrt.accept_ra=2 sysctl -w net.ipv4.ip_local_port_range="32768 32999" ip link set dev lo up ip link set dev openwrt up ip addr add dev openwrt 192.168.164.2/24 ip addr add dev openwrt fe80::64 ip route add default via 192.168.164.1 modprobe jool jool instance add --netfilter --pool6 64:ff9b::/96 jool global update lowest-ipv6-mtu 1500 jool pool4 add 192.168.164.2 33000-65535 --tcp jool pool4 add 192.168.164.2 33000-65535 --udp jool pool4 add 192.168.164.2 33000-65535 --icmp EOF
3. Torne o Script Executável
Execute o seguinte comando para tornar o script executável e executá-lo uma vez:
# Tornar script executável e executar chmod +x /etc/jool/setupjool.sh /etc/jool/setupjool.sh
Adicionar linha ao /etc/rc.local
Adicione a seguinte linha por /etc/rc.local meio da CLI ou da Luci UI (System - Startup - Local Startup), antes do exit 0
.
vi /etc/rc.local
Copiar e colar comando via SSH
Copie e cole o comando via SSH.
/etc/jool/setupjool.sh
Persistir sysupgrades
Adicione o arquivo /etc/sysupgrade.conf
por meio da CLI ou da Luci UI (System - Backup / Flash Firmware - Configuration).
Copie e cole o comando via SSH.
cat << EOF >> /etc/sysupgrade.conf /etc/jool/setupjool.sh EOF
4. Configurar Interface Jool
- Use sub-rede IPv4
192.168.164.1/24
- Alocar um IPv6
/64
com SLAAC - Rota prefixo NAT64 para
fe80::64
- Configurar Jool zona de firewall e encaminhar da zona LAN
Configurar nova interface no arquivo /etc/config/network
.
uci set network.jool='interface' uci set network.jool.proto='static' uci set network.jool.device='jool' uci set network.jool.ipaddr='192.168.164.1' uci set network.jool.netmask='255.255.255.0' uci set network.jool.ip6assign='64' uci set network.jool.ip6hint='64' uci commit network /etc/init.d/network restart
5. Configurar DHCPv4 e SLAAC/DHCPv6
Configure o arquivo '/etc/config/dhcp' para gerenciar a alocação de endereços IP na interface Jool.
# Configurar DHCPv4 e SLAAC/DHCPv6 uci set dhcp.jool='dhcp' uci set dhcp.jool.interface='jool' uci set dhcp.jool.start='100' uci set dhcp.jool.limit='150' uci set dhcp.jool.leasetime='12h' uci set dhcp.jool.ignore='1' uci set dhcp.jool.ra='server' uci set dhcp.jool.ra_default='2' uci commit dhcp /etc/init.d/dnsmasq restart
6. Adicionar uma rota IPv6 estática
Protocolo de Internet versão 6
Arquivo: /etc/config/network
uci add network route6 uci set network.@route6[-1].interface='jool' uci set network.@route6[-1].target='64:ff9b::/96' uci set network.@route6[-1].gateway='fe80::64' uci commit network /etc/init.d/network restart
7. Adicionar Jool à zona de firewall
Arquivo: /etc/config/firewall
uci add firewall zone uci set firewall.@zone[-1].name='jool' uci set firewall.@zone[-1].input='ACCEPT' uci set firewall.@zone[-1].output='ACCEPT' uci set firewall.@zone[-1].forward='REJECT' uci add_list firewall.@zone[-1].network='jool' uci add firewall forwarding uci set firewall.@forwarding[-1].src='jool' uci set firewall.@forwarding[-1].dest='wan' uci commit firewall /etc/init.d/firewall restart
8. Zona de avanço de LAN para Jool
Arquivo: /etc/config/firewall
uci add firewall forwarding uci set firewall.@forwarding[-1].src='lan' uci set firewall.@forwarding[-1].dest='jool' uci commit firewall /etc/init.d/firewall restart
9. Teste
Após a configuração, você pode testar o NAT64 pingando um endereço IPv4 sintetizado:
# Testar NAT64 ping 64:ff9b::1.1.1.1
10. Configuração do DNS64
Você pode configurar o DNS64 usando um servidor DNS como Cloudflare ou Google:
- Cloudflare DNS64: 2606:4700:4700::64
- Google DNS64: 2001:4860:4860::64
Adicionar a opção PREF64 às redes existentes
Opção nas mensagens de Anúncio de Roteador (Router Advertisement) que carrega o prefixo NAT64 que a rede está usando. Nova funcionalidade introduzida com a versão 23.05.0.
arquivo /etc/config/dhcp config dhcp 'lan' option interface 'lan' ... option ra_pref64 '64:ff9b::/96'
Configurar DNS64
Em uma rede padrão de pilha dupla, com DNS regular, um dispositivo apenas IPv6 não consegue se conectar a servidores apenas IPv4, pois não tem acesso ao NAT44.
O DNS64 vem para corrigir isso, sintetizando registros AAAA a partir de registros A. Esses endereços IPv6 são traduzidos pelo NAT64 (jool) para endereços IPv4.
Para usar o DNS64, você pode alterar seu DNS para o DNS64 do Cloudflare, DNS64 do Google ou configurar o unbound para DNS64 a fim de resolver corretamente os nomes de domínio em endereços traduzidos. O DNS64 do Cloudflare e do Google só pode ser usado se você utilizar o prefixo NAT64 bem conhecido 64:ff9b::/96.
11. Tornando sua Rede IPv6-Only (Modo IPv6-Mostly)
Adicione a opção DHCP 108 no arquivo /etc/config/dhcp da zona desejada para sinalizar aos dispositivos que eles devem operar apenas com IPv6.
Android, iOS e macOS funcionam bem em redes apenas IPv6. Para sinalizar aos clientes que estão aptos e dispostos a executar apenas IPv6, a opção DHCP 108 foi introduzida com a RFC8925.Adicione esta opção à configuração DHCPv4 da zona desejada, por exemplo, lan.
arquivo /etc/config/dhcp # 30 minutos = 1800 segundos = 0x708 segundos dhcp_option '108,0:0:7:8'
Após isso, todos os seus dispositivos móveis e macOS abandonarão o lease IPv4 e funcionarão em modo apenas IPv6.