Я обновил свой роутер TP-Link 1043 до OpenWrt 14.07. Все идеально, Wi-Fi и LAN соединены мостом, машины LAN могут обращаться друг к другу по имени, я могу подключиться к маршрутизатору по SSH, а маршрутизатор может получить доступ к Интернету на pppoe-wan
интерфейс.
Однако есть одна небольшая проблема. Маршрутизатор не выполняет маршрутизацию. Интернет недоступен из локальной сети. За одним забавным исключением: поиск DNS действительно работает.
В /etc/config/firewall
файл содержит следующий раздел:
config forwarding
option src 'lan'
option dest 'wan'
option mtu_fix '0'
Но когда я перечисляю цепочку POSTROUTING iptables
, ничего нет
# 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
Итак, я попытался добавить маскировку вручную, и, похоже, это сработало:
# 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
И вуаля, вдруг интернет работает из локальной сети. Но почему правило iptables не добавлено на основе конфигурации UCI в /et/config/firewall
?
Я добавил правило исправления iptables к пользовательским правилам в веб-интерфейсе. Затем я проверил, действительно ли он вставлен в /etc/firewall.user
который входит в /etc/config/firewall
. Но после перезагрузки правило не отображается в iptables. И нет интернета в локальной сети. Похоже на проблему синтаксического анализа конфигурации UCI ...
Оказывается, у меня вообще не было брандмауэра. Мой /etc/config/firewall
полностью игнорируется. Просто отсутствие правил фильтрации заметить сложно.
Маскарадинг настраивается OpenWrt, только если вывод zone
настроен для этого.
Например:
config zone
option name 'wan'
option masq '1'
#...everything else
Или в веб-интерфейсе:
Разбор конфигурации UCI, похоже, не работает. Проблема временно устранена путем добавления строки в /etc/rc.local
:
iptables -t nat -A POSTROUTING -o pppoe-wan -j MASQUERADE