Снова про NAT
Помогите разобраться с NATом.
Есть следующая конфигурация сети:
n810:192.168.3.12-->wlan0:192.168.3.2--pc1--192.168.1.116:eth1-->|router | |LAN:192.168.1.1| | |-->internet pc2:192.168.1.115 -->| |
Здесь pc1 это gentoo на которой настраиваю доступ таблетки Nokia n810 к интернету, router - Dlink DI-604
Выполняю скрипт
#! /bin/bash iptables -F iptables -t nat -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP export LAN=wlan0 export WAN=eth1 iptables -I INPUT 1 -i ${LAN} -j ACCEPT iptables -I INPUT 1 -i lo -j ACCEPT iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP iptables -I FORWARD -i ${LAN} -d 192.168.3.0/255.255.255.0 -j DROP iptables -A FORWARD -i ${LAN} -s 192.168.3.0/255.255.255.0 -j ACCEPT iptables -A FORWARD -i ${WAN} -d 192.168.3.0/255.255.255.0 -j ACCEPT iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
Скрипт создан копированием из http://www.gentoo.org/doc/ru/home-router-howto.xml
Даю команду
iptables -L : Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere REJECT udp -- anywhere anywhere udp dpt:bootps reject-with icmp-port-unreachable REJECT udp -- anywhere anywhere udp dpt:domain reject-with icmp-port-unreachable ACCEPT tcp -- anywhere anywhere tcp dpt:ssh DROP tcp -- anywhere anywhere tcp dpts:0:1023 DROP udp -- anywhere anywhere udp dpts:0:1023 Chain FORWARD (policy DROP) target prot opt source destination DROP all -- anywhere 192.168.3.0/24 ACCEPT all -- 192.168.3.0/24 anywhere ACCEPT all -- anywhere 192.168.3.0/24 Chain OUTPUT (policy ACCEPT) target prot opt source destination
Команда на n810:
ping 192.168.1.1
проходит нормально.
Команда на n810:
ping 192.168.1.115
(или на любой адрес в интернете) не исполняется, доступа на web интерфейс router'а нет.
При исполнении на n810: ping 192.168.1.1, анализатор wireshark, запущенный на pc1 показывает пакеты идущие в обоих направлениях (192.168.3.12--->192.168.1.1 и 192.168.1.1-->192.168.3.12)
При исполнении на n810: ping 192.168.1.115 - wireshark показывает пакеты идущие только
в одном направлении 192.168.3.12--->192.168.115.
Не могу ничего понять?!
- Для комментирования войдите или зарегистрируйтесь
на всяк случай
Так, на всякий случай: прописано ли на вашей таблетке
route add default gw 192.168.3.2
?Скрипт отрабатывает гладко? iptables не ругается, что какой-то target не найден?
:}
Ни каких ошибок iptables не
Ни каких ошибок iptables не выдает. Мне именно не понятно почему 192.168.1.1 отвечает, а 192.168.1.115 - нет??
works for me ™
Хм. Ну а с 192.168.1.116 видно .115, я полагаю?
Чесно говоря, я шибко в этом деле не разбираюсь. Но недавно делал очень похожую схему, только пускал линк от рс1 через блютооth. И также читал хавту, и скрипт оттуда же, и таки все получилось. Вот, короче, мой скрипт (моя под-подсеть там 10.10.10.0/24), и да поможет вам интуиция:
:}
Почему же не можете?
При пинге с 192.168.3.12 на 192.168.1.115 должно показывать, что пингует на самом деле только 192.168.1.116 — это бы означало, что маскарадинг работает. Если же у вас на 192.168.1.115 приходят пакеты от 192.168.3.12, то, разумеется, хост 1.115 ответить не может, т.к. не знает, где находится хост 3.12. :)
Почему же раутер отвечает, я не могу сказать. Может там поставили маршрут до 192.168.1.116, если приходят пакеты от 192.168.3.0 и забыли.
Спасибо всем
Спасибо всем откликнувшимся.
Проблема разрешилась путем повторного внимательного прочтения выщеуказанного howto.
Не были включены все нужные опции в ядре. В заблуждение и ступор ввело то что iptables при запуске скрипта не выдавало ни каких ошыбок а маскарадинг не работал.
CONFIG_IP_ADVANCED_ROUTER и товарищи
...не иначе субжевые опции не была включены? Я-то в своем посте хотел было намекнуть, да постеснялся показаться умнее :} Однако, я все ж был уверен, что в ее отсутствие iptables стали бы ругаться -- чего, очевидно, не вышло.
:}
Да именно так и было - позор
Да именно так и было - позор на мою седую голову! :)