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
/64com 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.
