Вот правила, которые я использую:
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?
Спасибо
edit: еще раз, после того, как я подумал, что проблема была исправлена, он просто перестал работать снова без того, чтобы я больше не выдавал больше команд iptables. Я не могу понять, почему он продолжает работать, а потом не работает. >. <
Я нашел другую команду iptables, которая работает, чтобы разделить мой интернет с 1 [дальнего] Wi-Fi устройства на другое [внутреннее]:
iptables -t nat -A POSTROUTING -o wlan5 -j MASQUERADE
вместо Команды iptables в вопросе. И это позволяет мне по-прежнему иметь доступ к Интернету и доступ к http / ssh на 10.0.0.1 с 10.0.0.20.
Вывод iptables-save
, который вы опубликовали, показывает следующие пользовательские цепочки в таблице фильтров: INBOUND, OUTBOUND, LOG_FILTER, LSI и LSO. Firestarter создает 5 цепочек, названных в точности так.
Я уверен, что ваша проблема вызвана Firestarter. Откройте его и проверьте, действительно ли он отключен.
Ссылки: