Вы пропускаете прямое правило.
sudo iptables -A ВПЕРЕД -i wlan0 -o состояние eth0 -m -– СОСТОЯНИЕ, УСТАНОВЛЕНО -j ПРИНЯТЬ
sudo iptables -A ВПЕРЕД -i eth0 -o wlan0 -j ПРИНЯТЬ
У меня есть следующие настройки:
A > 169.254.8.125/16 <- (ad-hoc) -> 169.254.9.109/16 < B > 192.168.178.21/24 <- (wifi) -> 192.168.178.1/24 < AP / router > интернет
Я хочу подключить A к Интернету через B. Пока что таблица маршрутизации A выглядит следующим образом:
default via 169.254.6.109 dev eth0 169.254.0.0/16 dev eth0 proto kernel scope link src 169.254.8.125
Таблица маршрутизации B выглядит следующим образом:
default via 192.168.178.1 dev wlan0 proto static 169.254.0.0/16 dev eth0 proto kernel scope link src 169.254.6.109 metric 1 192.168.178.0/24 dev wlan0 proto kernel scope link src 192.168.178.21 metric 2
На компьютере BI включена пересылка ip, sysctl net.ipv4.ip_forward=1
и я добавил правило NAT в iptables:iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Я знаю, что у меня пока нет DNS для A.
Я могу пинговать B от A и наоборот. Разве это не должно уже дать доступ к Интернету или хотя бы включить проверку связи с роутером? Что мне не хватает?
Вы пропускаете прямое правило.
sudo iptables -A ВПЕРЕД -i wlan0 -o состояние eth0 -m -– СОСТОЯНИЕ, УСТАНОВЛЕНО -j ПРИНЯТЬ
sudo iptables -A ВПЕРЕД -i eth0 -o wlan0 -j ПРИНЯТЬ