Если разобраться
1. Приходит пакет, который мы должны перенаправить на сервер в локальной сети перед принятием решения о маршрутизации
-A PREROUTING -i wlan0 -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.20:53
-A PREROUTING -i wlan0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 127.0.0.20:53
2. Маршрутизация по цепочке FORWARD, но я разрешил проброс в цепочке *filter :FORWARD ACCEPT [0:0]
-I FORWARD 1 -i wlan0 -o wlan0 -d 127.0.0.20 -p udp -m udp --dport 53 -j ACCEPT
-I FORWARD 1 -i wlan0 -o wlan0 -d 127.0.0.20 -p tcp -m tcp --dport 53 -j ACCEPT
3. Меняем обратный адрес пакета
-A POSTROUTING -o wlan0 -p udp -m udp --dport 53 -j SNAT --to-source 192.168.1.11:53
-A POSTROUTING -o wlan0 -p tcp -m tcp --dport 53 -j SNAT --to-source 192.168.1.11:53
4. Все dns запросы идут на локальный dns сервер
-A OUTPUT -o wlan0 -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.20:53
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 127.0.0.20:53
192.168.1.11 ip машины, где стоит dns сервер и настраиваю iptables
Так или нет? Где ошибка?
___________________________________________________________________
Решил задачу двумя правилами в цепочке *nat так:
-A PREROUTING -i wlan0 -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.20:53
-A POSTROUTING -o wlan0 -p udp -m udp --dport 53 -j SNAT --to-source 192.168.1.11:53
плюс команда для маршрутов через localhost
sysctl -w net.ipv4.conf.all.route_localnet=1
Всем спасибо за комментарии, помогли дойти до ответа :)