O mascaramento só é configurado pelo OpenWrt se a saída zone
estiver configurada para ele.
Por exemplo:
config zone
option name 'wan'
option masq '1'
#...everything else
Ou na interface da Web:
Eu atualizei meu roteador TP-Link 1043 para o OpenWrt 14.07. Tudo é perfeito, Wi-Fi e LAN estão em ponte, as máquinas de rede podem acessar uma a outra pelo nome, posso conectar o SSH ao roteador e o roteador pode acessar a Internet na interface pppoe-wan
.
O problema é pequeno. O roteador não é roteado. A internet não está acessível a partir da LAN. Com uma exceção engraçada: as pesquisas de DNS funcionam.
O arquivo /etc/config/firewall
contém a seguinte seção:
config forwarding
option src 'lan'
option dest 'wan'
option mtu_fix '0'
Mas quando eu listo a cadeia POSTROUTING de iptables
, não há nada
# iptables -L POSTROUTING
iptables: No chain/target/match by that name.
# iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Então, tentei adicionar o mascaramento manualmente e parece funcionar:
# iptables -t nat -A POSTROUTING -o pppoe-wan -j MASQUERADE
# iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
E voilá, de repente a internet funciona da LAN.
Mas por que a regra iptables não é adicionada com base na configuração da UCI em /et/config/firewall
?
Eu adicionei a regra de correção do iptables às regras personalizadas na interface da web. Então eu verifiquei, foi de fato inserido em /etc/firewall.user
, que é incluído em /etc/config/firewall
. Mas depois de uma reinicialização, a regra não é listada pelo iptables. E sem internet na LAN. Parece um problema de análise de configuração da UCI ...
Acontece que eu não tinha nenhum firewall. Meu /etc/config/firewall
é completamente ignorado. É só que a falta de regras de filtragem é difícil de perceber.
O mascaramento só é configurado pelo OpenWrt se a saída zone
estiver configurada para ele.
Por exemplo:
config zone
option name 'wan'
option masq '1'
#...everything else
Ou na interface da Web:
A análise de configuração da UCI parece estar quebrada. Problema corrigido temporariamente adicionando uma linha a /etc/rc.local
:
iptables -t nat -A POSTROUTING -o pppoe-wan -j MASQUERADE