
Вот правила, которые я использую:
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface wlan5 -j MASQUERADE
iptables --append FORWARD --in-interface wlan3 -j ACCEPT
У меня wlan5 с 192.168.1.100 и wlan3 с 10.0.0.1. Я делаю из своего ноутбука повторитель Wi-Fi с 2 картами Wi-Fi.
Итак, люди подключаются к wlan3, шлюз — 10.0.0.1, и все перенаправляется на wlan5 [gw 192.168.1.1].
Теперь это работает отлично,кромеЯ не могу получить доступ к локальному HTTP-серверу, размещенному на моем ноутбуке. Он размещен на моем ноутбуке и работает как localhost, или 10.0.0.1:
$ curl -I 10.0.0.1
HTTP/1.1 301 Moved Permanently
Date: Tue, 26 Feb 2013 02:35:32 GMT
Server: Apache/2.2.22 (Ubuntu)
Location: http://10.0.0.1/index.php
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1
Итак, вот где возникает проблема. Клиент в моей общей сети [wlan3] с IP 10.0.0.20 пытается получить доступ к 10.0.0.1:80 и не может подключиться:
$ wget http://10.0.0.1
Connecting to 10.0.0.1 (10.0.0.1:80)
wget: can't connect to remote host (10.0.0.1): Connection refused
Он может пинговать 10.0.0.1 и даже пинговать внешний IP. Так что у него есть подключение к Интернету, в этом и суть, но он не может получить доступ к HTTP, я полагаю, из-за правил iptables. Сразу после ошибки я получаю это в системном журнале моего ноутбука:
Feb 25 21:36:19 toshi kernel: [57806.285170] Inbound IN=wlan3 OUT= MAC=9c:b7:0d:a5:45:67:a8:26:d9:3e:04:21:08:00 SRC=10.0.0.20 DST=10.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=28282 DF PROTO=TCP SPT=58343 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
Итак, вопрос в том, как мне исключить пересылку IP-запросов на 10.0.0.1, а не на wlan5?
Спасибо
решение1
edit: еще раз, после того как я подумал, что проблема устранена, он просто перестал работать снова, без того, чтобы я давал НИКАКИЕ команды iptables. Я не могу понять, почему он продолжает работать, а затем перестает работать. >.<
Я нашел другую команду iptables, которая позволяет раздать интернет с одного [большого] устройства Wi-Fi на другое [внутреннее]:
iptables -t nat -A POSTROUTING -o wlan5 -j MASQUERADE
вместо команд iptables в вопросе. И это позволяет мне по-прежнему иметь доступ к интернету и по-прежнему иметь доступ к http/ssh на 10.0.0.1 с 10.0.0.20.
решение2
Theiptables-save
выходВы разместили, показывает следующие пользовательские цепочки в таблице фильтров: INBOUND, OUTBOUND, LOG_FILTER, LSI и LSO. Firestarter создает 5 цепочек, все названы именно так.
Я уверен, что проблема вызвана Firestarter. Откройте его и проверьте, действительно ли он отключен.
Использованная литература: