PDA

Bekijk de volledige versie : помогите с конфигурацией iptables



gaaronk
26-07-2006, 14:42
кто либо можеть сказать в чем глубинный смысл такой записи в таблице nat

Chain POSTROUTING (policy ACCEPT 113K packets, 6722K bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * br0 192.168.1.0/24 192.168.1.0/24

где 192.168.1.0/24 адреса локальной сети.

?

andlev
26-07-2006, 15:22
кто либо можеть сказать в чем глубинный смысл такой записи в таблице nat
С какой целью интересуешься? :D

А вообще не помешало бы указать конфигурацию сетки, а то у меня сегодня с телепатическими способности не очень...

Короче, здесь в цепочке POSTROUTING (на выходе роутера) задано маскардить пакеты из 192.168.1.0/24 в 192.168.1.0/24, казалось бы бред, но если железка у тебя работает как активный ретранслятор (шлюз) объединяющий две части одной подсетки, то почему бы и нет?

gaaronk
26-07-2006, 15:29
С какой целью интересуешься? :D

А вообще не помешало бы указать конфигурацию сетки, а то у меня сегодня с телепатическими способности не очень...

с целью понять - НО ЗАЧЕМ?


Короче, здесь в цепочке POSTROUTING (на выходе роутера) задано маскардить пакеты из 192.168.1.0/24 в 192.168.1.0/24, казалось бы бред, но если железка у тебя работает как активный ретранслятор (шлюз) объединяющий две части одной подсетки, то почему бы и нет?

поподробнее плз. шлюз он то с одной стороны одна сеть с другой другая. и маршрутизация между ними. натить из 1.1.1.1 в 1.1.1.1 для меня кажется бредом

andlev
26-07-2006, 15:43
поподробнее плз. шлюз он то с одной стороны одна сеть с другой другая. и маршрутизация между ними. натить из 1.1.1.1 в 1.1.1.1 для меня кажется бредом
Частный случай, _ два куска одной подсетки _, между ними 200 метров (или одна проводная, другая Wi-Fi), одним куском провода объединить не реально (воздух с проводом не склеить). Вот и ставиться по середине шлюз который помогает докидывать пакеты, а чтобы все работало как надо (кваку в локалке погонять), пакеты нужно маскарадить, вот это действие данное правило и определяет.

gaaronk
26-07-2006, 15:52
Частный случай, _ два куска одной подсетки _, между ними 200 метров (или одна проводная, другая Wi-Fi), одним куском провода объединить не реально (воздух с проводом не склеить). Вот и ставиться по середине шлюз который помогает докидывать пакеты, а чтобы все работало как надо (кваку в локалке погонять), пакеты нужно маскарадить, вот это действие данное правило и определяет.

для таких вещщей ставят свич посредине
но даже такое правило я бы понял. если бы был включен proxy arp.

вообщем посмотрел что в это правило попадают только пакеты когда инициируешь сессию с роутера внутрь сети, при работе одного клиента по ethernet а другого через wi-fi слава богу этот ужас не задействуется.

andlev
26-07-2006, 16:51
для таких вещщей ставят свич посредине
но даже такое правило я бы понял. если бы был включен proxy arp.
Возможно я не теми метафорами говорю, но рисовать лень... В общем есть две подсетки, она на одном роутере, вторая на другом, надо соединить их в одну подсетку 192.168.1.0/24. Для этого выделяется на обоих роутерах по интерфейсу, и прописываются правило, маскарадить все входящие соединения (из сети) на выход (другой роутер). На втором, очевидно, пишется тоже самое. Как по другому можно объединить данные сетки я не представляю.


вообщем посмотрел что в это правило попадают только пакеты когда инициируешь сессию с роутера внутрь сети, при работе одного клиента по ethernet а другого через wi-fi слава богу этот ужас не задействуется.
Да этот случай надо фильтровать отдельно, чтобы с роутера небыло возможности шариться по локалке, но это уже другая тема.

gaaronk
26-07-2006, 17:07
Возможно я не теми метафорами говорю, но рисовать лень... В общем есть две подсетки, она на одном роутере, вторая на другом, надо соединить их в одну подсетку 192.168.1.0/24. Для этого выделяется на обоих роутерах по интерфейсу, и прописываются правило, маскарадить все входящие соединения (из сети) на выход (другой роутер). На втором, очевидно, пишется тоже самое. Как по другому можно объединить данные сетки я не представляю.

это другое, это мы понимаем. двойной нат. но в этом случае локалка натится в ип что смотрит в сторону транспортной сетки. там все по другому и к этому нату оно отношения не имеет. вообщем непонятно и бесполезно.


Да этот случай надо фильтровать отдельно, чтобы с роутера небыло возможности шариться по локалке, но это уже другая тема.

ну с этим то у меня слава богу проблем нет.

andlev
08-08-2006, 08:53
Вот бодягу развели :D
http://www.wl500g.info/showthread.php?t=4921

Это нужно для случая, когда Вы обращаетесь к виртуальному серверу, расположенному в вашей же сети по внешнему адресу Wl500g.

emt
30-11-2006, 14:27
Хочу немного усложнить работу iptables в коробке. опыт настройки iptables есть нормальный.
Чтобы не работать в режиме "метода тыка" для этого надо бы разобраться как происходит загрузка цепочек в роутере, а ещё лучше как происходит инциализация системы в целом. может есть неведомый мне init - скрипт который всё делает?

Нашёл в tmp некие filter_rules и nat_rules. Кем они и когда используются? Можно ли их править?

Про post-firewall читал и даже немного его использую. Но было бы намного проще если бы разобрался в системе в целом.

Где бы почитать? Или подскажите на пальцах.

Duke
01-12-2006, 08:39
Проще всего - в post-firewall почисть все цепочки и пиши с чистого листа.

emt
01-12-2006, 09:01
Проще всего - в post-firewall почисть все цепочки и пиши с чистого листа.
да, такой варинат пока единственный =(
но разобраться как оно работает было бы тоже неплохо =)

Oleg
01-12-2006, 09:40
Хотите разобраться - читайте исходники. Только не пойму, что за вопросы... Генерирует он эти файлы по содержимому nvram, потом запускает iptables-restore. Потом я дёргаю post-firewall...

emt
01-12-2006, 09:42
Генерирует он эти файлы по содержимому nvram, потом запускает iptables-restore. Потом я дёргаю post-firewall...
примерно такого ответа я и ждал, спасибо! =)

asdf123
18-01-2007, 21:12
просьба кому не лень стукнуть в аську 740004

требуется открыть порт исходящий.

буду очень признателен

andycpp
19-01-2007, 06:50
сперва:

iptables -nvL -t nat
если определён VSERVER то:

iptables -t nat -A VSERVER -j DNAT -i vlan1 -d <твой внешний IP> -p tcp --dport <твой порт> --to <твой внутренний IP>:<твой порт>

если нет:

iptables -t nat -I PREROUTING 1 -j DNAT -i vlan1 -d <твой внешний IP> -p tcp --dport <твой порт> --to <твой внутренний IP>:<твой порт>

Rambalac
21-06-2007, 17:08
iptables --list
iptables -t nat --list

порой выводит все сразу, а порой по строчке в минуту.
роутер ничем не занят, остальные команды не тормозят

owld
21-06-2007, 20:05
iptables --list
iptables -t nat --list

порой выводит все сразу, а порой по строчке в минуту.
роутер ничем не занят, остальные команды не тормозят

дайте опцию -n для команд или почините DNS

Rambalac
22-06-2007, 07:11
DNS? у меня там всегда были IP, и когда тормозит, и когда нет
А DNS сервер работает нормально, вроде.
Тормозит когда доходит до строк, где ИП локальных компов

owld
22-06-2007, 07:38
DNS? у меня там всегда были IP, и когда тормозит, и когда нет
А DNS сервер работает нормально, вроде.
Тормозит когда доходит до строк, где ИП локальных компов

с опцией -n тормозит вывод ?

Rambalac
22-06-2007, 09:10
дома надо будет проверить

al37919
22-06-2007, 10:57
дОлжно отметить, что с опцией -n вывод не тормозит.
Вместо, скажем, такого глубокомысленного резолвинга имени как anywhere (который действительно занимает с полминуты) получаем 0.0.0.0 мгновенно.

А что не так с ДНС? Вроде работает довольно шустро...

owld
22-06-2007, 11:35
дОлжно отметить, что с опцией -n вывод не тормозит.
Вместо, скажем, такого глубокомысленного резолвинга имени как anywhere (который действительно занимает с полминуты) получаем 0.0.0.0 мгновенно.

А что не так с ДНС? Вроде работает довольно шустро...


iptables пытается обротно-отрезолвить адреса. Не получается для некоторых адресов . Вот и паузы.
Пропишите в DNS in-arpa зоны или забейте и пользуйте -n :cool:

tchaynik
03-07-2007, 07:48
Подскажите плз, как настроить маршрутизацию
ситуация следуюшая:
1-я сетка (wl500gP) vlan1 - 10.1.1.2 MASK 255.255.255.0 GW 10.1.1.1
br0 - 192.168.0.1 MASK 255.255.255.0
2-я сетка (wl500gP) vlan1 - 10.1.1.3 MASK 255.255.255.0 GW 10.1.1.1
br0 - 192.168.1.1 MASK 255.255.255.0
Вапрос в том, что и где прописать чтоб из первой сети получить доступ ко второй и наоборот.

SpiderX
03-07-2007, 09:42
По-моему у вас тут перепутаны айпи-адреса на br0 и vlan1, или я чего-то не понял.
Можно ситуацию подробнее изложить, что прописано на роутере (WAN IP, LAN IP), что за сеть, куда надо получить доступ.

tchaynik
03-07-2007, 10:30
По-моему у вас тут перепутаны айпи-адреса на br0 и vlan1, или я чего-то не понял.
Можно ситуацию подробнее изложить, что прописано на роутере (WAN IP, LAN IP), что за сеть, куда надо получить доступ.
Да ничего не перепутано. Городская сетка с адресами 10.1.1.* подключена у обоих роутеров к WAN
первая домашняя сеть:
Внешний IP 10.1.1.2 маска 255.255.255.0 шлюз 10.1.1.1
Внутренние IP 192.168.0.* (у роутера 192.168.0.1) mask 255.255.255.0
вторая домашняя сеть:
Внешний IP 10.1.1.3 маска 255.255.255.0 шлюз 10.1.1.1
Внутренние IP 192.168.1.* (у роутера 192.168.1.1) mask 255.255.255.0
Требуется чтобы компы из 192.168.0.* (первая сетка) имели достут к компам 192.168.1.* (вторая сетка) и наоборот

KOCTET
03-07-2007, 11:25
Поднимай VPN между роутерами, настраивай маршрутизацию и все :)
Как это сделать описывалось здесь много, много раз.

tchaynik
03-07-2007, 15:22
Поднимай VPN между роутерами, настраивай маршрутизацию и все :)
Как это сделать описывалось здесь много, много раз.
А зачем мне ВПН подымать ?? Они у меня итак оба в одной сетке (на Ванах)
Ткните меня в настройку маршрутизации или повторите, бо я чесно говоря даж незнаю де искать. да и чтоб впн поднять нуна чтото ставить в роутер а у меня к ним даж флешки пока непоцеплены. Это раз.
А два - у меня скорость тада между сетками будет 2-3 мега, у меня в роутерах ващето ещё и pptp соединение для интернета, так что боюсь роутер будет тупо загибаца

tchaynik
03-07-2007, 15:28
Умом понимаю что нужно как минимум:
на первом роутере (1-я сеть) добавить маршрут
route add 192.168.1.0 netmask 255.255.255.0 GW 10.1.1.3
на втором (2-я сеть) соотведственно
route add 192.168.0.0 netmask 255.255.255.0 GW 10.1.1.2

Но када я это сделал почемуто пакеты не ходять
наверное нужно еще чтото в iptables сделать.

SpiderX
03-07-2007, 22:13
Самый простой вариант - это вот этим компам за роутером раздать айпи адреса из 10.1.1.х.
Не простой вариант - впн.
А вообще как компьютеры должны быть видимы? Может там пару сервисов, и можно ограничиться прокидыванием портов?

SpiderX
03-07-2007, 22:20
Умом понимаю что нужно как минимум:
на первом роутере (1-я сеть) добавить маршрут
route add 192.168.1.0 netmask 255.255.255.0 GW 10.1.1.3
на втором (2-я сеть) соотведственно
route add 192.168.0.0 netmask 255.255.255.0 GW 10.1.1.2

Но када я это сделал почемуто пакеты не ходять
наверное нужно еще чтото в iptables сделать.
Это ни к чему не приведет, ибо 10.1.1.3 для 192.168.1.х не существует, для них есть айпи роутера в 192.168.1.х, для 192.168.0.0 и 10.1.1.2 ситуация аналогична.

tchaynik
04-07-2007, 06:56
Почитав много чего на этом форуме я понял как сформулировать задачу правельнее. Мне нужно включить NAT пакетов с MAN(vlan1) в локалку (br0) но только для определенного IP. А как это сделать - я вощемто и пытаюсь узнать.
В более ранних версиях вродебы была такая дырка в безопастности и для ее закрытия, Олег писал, что нужно чтобы обязательно был включен фильтр пакетов с WAN в LAN.

Reyter
21-07-2007, 18:08
Вот такое вот сообщение получаю. Пытаюсь воспользоваться различными скриптами с форума, но там, где содержится аргумент "j" они не работают.
Хелп iptable выдает только аргумент --jump -j target
target for rule (may load target extension)
, но ведь это, насколько я понимаю, не одно и то же.
Где копать?
Прошивка в подписи, пакеты ставил с альтернативного репозитария, но видимо какой-то пакет не переустановил. А отдельно пакета iptable я не нашел.

Mam(O)n
23-07-2007, 07:51
Пакеты здесь не причем. На команду, которую вводишь можно взглянуть?

Reyter
23-07-2007, 09:39
Пакеты здесь не причем. На команду, которую вводишь можно взглянуть?
Ну это не тайна. Используется скрипт Вашего (Гранд мерси!) приготовления ipmac.sh (http://wl500g.info/showthread.php?p=55275&highlight=ipmac.sh#post55275).

И вот когда дело доходит до строк:

$IPT -t nat -A ${pref}REDIR -p tcp --dport 80 -j REDIRECT --to-port $tport
$IPT -t nat -A ${pref}REDIR -j DROP
$IPT -t nat -N ${pref}FILTER

... и далее, выдаются такие сообщения.
Единственное, что может быть, данный скрипт был вставлен в редактор MC методом copy/paste непостредственно со странички форума. Но весь скрипт до этих строк работает нормально.

Mam(O)n
23-07-2007, 11:37
Хм. Обычно такое бывает, когда после -j ничего нет. Проверь параметры запуска, cкорее всего ошибки вываливаются на этой строчке.


$IPT -t nat -I PREROUTING -m mac --mac-source $mac -j $pref$mac &&

Хотя может и глюк при copy-paste. Я временно скрипт выложил в инете, попробуй скачать:
wget http://mamon.xost.ru/ipmac.sh

Reyter
23-07-2007, 16:11
Спасибо. "Натуральный" скрипт очень даже помог. :) Где-то я у себя намудрил (пришлось редактировать "сбившиеся" табуляции при вставке в MC).

Mam(O)n
23-07-2007, 16:49
Чтоб при копи-пасте в mc табуляции не сбивались отключи опцию в редакторе F9 => Options => General => Return does autoindent

Reyter
23-07-2007, 17:07
Спасибо за совет. Век живи, век учись.
Однако по самому скрипту возникли вопросы. Если не в тягость, то прошу ответить в соответствующей теме (http://wl500g.info/showthread.php?p=55275).

Ramm
16-08-2007, 12:47
Знаю, что это некоторый оффтопик, но тем не менее.

Мне нужен специалист по iptables, способный написать правила для требуемой мне конфигурации за денежку.

У самого меня, видимо, мозг на это не заточен - я пару раз попытался, но ничего приличного изобразить не смог. Готов заплатить, скажем, полстоимости нового премиума.

abi
04-10-2007, 12:12
Существует ли на патч mport для iptables роутера?
Очень бы хотелось в правилах просто перечислить нужные мне порыт через запятую, а не создавать одно правило на каждый порт.

Например, вот так

iptables -A INPUT -p tcp -m mport --ports 20:23,80 -j DROP

Zaslanec
16-10-2007, 17:50
Доброго времени суток.

Дано. Локальная сетка и инет через PPtP. Роутер (прошивка от Олега 1.9.2.7-7g) используется и как точка доступа и проводом для обычного компа.
Надо сделать так чтобы при падении ВПН (или не установлении коннекта) пакеты чемящие в инет резались, а пакеты идущие в локалку спокойно шли в локалку.

Как я понимаю мне надо дописать два правила к существующим уже:
1. Все пакеты на OUT через vlan1 - REJECT (или DROP).
2. Кучка правил (локальных подсеток дикое количество) добавляется в начало цепочки, в которых, все пакеты на OUT, которые идут в локалку, и через vlan1 -- ACCEPT.

Правильно ли я мыслю? Как написать правила (чтение man и HOWTO не помогло)?

PS. а чего у этих iptables нет команды "iptables-save"? :confused:

Mam(O)n
16-10-2007, 18:19
Хм. А если тунель не поднят, тогда пакеты для инета в локалку чтоль уходят? Где-то это я уже видел... Дело тут в маршрутах. Может и из за default gateway такие траблы. Если будет чтото типа такой байды в таблице:


Destination Gateway Genmask Flags Metric Ref Use Iface
default * 0.0.0.0 UG 0 0 0 vlan1

то вот по этому маршруту и будут уходить пакеты, если ppp туннель разорван. А если нет маршрута, то будет чтото типа Destination Unreachable. Тут маршруты править нада. Ну а если уж очень охота именно дропать пакеты, тогда при поднятом маршруте:
iptables -I FORWARD -o vlan1 -d ! подсеть_локалки -j DROP

Zaslanec
16-10-2007, 18:27
Хм. А если тунель не поднят, тогда пакеты для инета в локалку чтоль уходят? Где-то это я уже видел... Дело тут в маршрутах. Может и из за default gateway такие траблы.
А если туннель не поднят то они идут опять же в инет через default GW, но уже по совершенно другой цене, которая мне никак не нравится. В общем вроде как можно это вылечить удалением default GW, но мне как-то не нравится этот способ:(

Mam(O)n
16-10-2007, 18:42
Надо default gw убирать и конкретно прописывать маршруты к дикому количеству локальных подсеток. Это самый правильный способ

Игорь
27-11-2007, 21:30
Очень прошу совету, помогите понять почему не едут лыжи.
Хочу запретить аську, контру и разное другое по мелочи для определенного айпи, делаю так
iptables -A FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP
а она работает хоть бы хны :(
Посылание на хелп с примерами приветствуются, нашел http://www.opennet.ru/docs/RUS/iptables/ но это как для моей задачи слишком фундаментально имхо.
В общем спасайте камрады, а то сеструху с универа выгонят, ночью просыпается и асится :(, потом опаздывает.

Mam(O)n
28-11-2007, 03:46
На роутере данная команда будет блокировать только новые соединения на 5190 порт. Для блокирования всех исходящих пакетов:
iptables -I FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP

Ilmarinen
28-11-2007, 06:48
На роутере данная команда будет блокировать только новые соединения на 5190 порт. Для блокирования всех исходящих пакетов:
iptables -I FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP
Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190, во-вторых, Ваша команда написана с ошибкой, в-третьих, iptables -A добавить правило в конец, а iptables -I в указанное место, которое в вашей команде пропущено.


Очень прошу совету, помогите понять почему не едут лыжи.
Хочу запретить аську, контру и разное другое по мелочи для определенного айпи, делаю так
iptables -A FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP
а она работает хоть бы хны :(
Посылание на хелп с примерами приветствуются, нашел http://www.opennet.ru/docs/RUS/iptables/ но это как для моей задачи слишком фундаментально имхо.
В общем спасайте камрады, а то сеструху с универа выгонят, ночью просыпается и асится :(, потом опаздывает.
Указанное Вами правило добавляется в конец цепочки FORWARD, возможно что ранее есть правило -j ACCEPT которое и позволяет соединению устанавливаться.
Покажите результат выполнения команды iptables -v --line-numbers -L FORWARD

Mam(O)n
28-11-2007, 08:05
Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190
Я не ясно выразился. Я хотел подчеркнуть, что с моей командой будут болкироваться не только новые tcp соединения на 5190 порт.


во-вторых, Ваша команда написана с ошибкой
Она работает, я что то делаю не так?



а iptables -I в указанное место, которое в вашей команде пропущено.

Курим man iptables:


-I, --insert chain [rulenum] rule-specification
Insert one or more rules in the selected chain as the given rule number. So, if the rule number is 1, the rule or rules
are inserted at the head of the chain. This is also the default if no rule number is specified.




Указанное Вами правило добавляется в конец цепочки FORWARD, возможно что ранее есть правило -j ACCEPT которое и позволяет соединению устанавливаться.

По-умолчанию есть правило, которое пропускает уже установленные соединения в целях оптимизации. И если правило добавлять в конец цепочки то оно не будет влиять на уже установленные tcp сессии:

[root@router ~]$ iptables -L FORWARD -vn
Chain FORWARD (policy ACCEPT 1599 packets, 95300 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
2517 140K TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x16/0x02 TCPMSS clamp to PMTU
81907 50M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- !br0 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- !br0 vlan1 0.0.0.0/0 0.0.0.0/0
2881 207K SECURITY all -- !br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
2880 207K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate DNAT
0 0 DROP all -- * br0 0.0.0.0/0 0.0.0.0/0

Ilmarinen
28-11-2007, 08:42
Я не ясно выразился. Я хотел подчеркнуть, что с моей командой будут болкироваться не только новые tcp соединения на 5190 порт.

Возможно мы друг друга не поняли. Ваше правило само по себе дропает все пакеты согласно указанным критериям без относительно того новое это соединение или нет, другое дело, что в стандартной конфигурации есть правила в цепочке FORWARD которые пропускают пакеты в рамках уже установленных соединений.


Она работает, я что то делаю не так?
Курим man iptables:

Ну это да прогнал, по причине того, что редко пользуюсь -I, забыл, что 1 там по умолчанию


По-умолчанию есть правило, которое пропускает уже установленные соединения в целях оптимизации. И если правило добавлять в конец цепочки то оно не будет влиять на уже установленные tcp сессии:

Точно так же там есть правило которое пропускает и новые соединения "изнутри" (правило номер 8 в Вашем примере), поэтому я и попросил показать существующие правила.
А советовать добавить правило первым не зная того, что там еще в цепочке есть, как-то несколько рискованно. Я бы его поставил третьим в указанном Вами варианте (в моем это номер четыре, так как есть еще правило
1 130M 108G MACS all -- br0 any anywhere anywhere.

Mam(O)n
28-11-2007, 09:28
Возможно мы друг друга не поняли. Ваше правило само по себе дропает все пакеты согласно указанным критериям без относительно того новое это соединение или нет, другое дело, что в стандартной конфигурации есть правила в цепочке FORWARD которые пропускают пакеты в рамках уже установленных соединений.
Дык об чем и речь, поэтому правило вставляю в начало таблицы.



Точно так же там есть правило которое пропускает и новые соединения "изнутри" (правило номер 8 в Вашем примере)

Правило №8 в моем примере существует(по-умолчанию) дабы пропускать входящие соединения из wan в lan которые маскардятся, дабы они не дропнулись следующим правилом, которое устанавливается при WAN & LAN Filter => WAN to LAN Filter => Enable WAN to LAN Filter? Yes и Packets(WAN to LAN) not specified will be: DROP. Это правило в данном случае неинтересно.


А советовать добавить правило первым не зная того, что там еще в цепочке есть, как-то несколько рискованно.
Так у нас задача то именно дропнуть все транзитные пакеты на 5190 порт с источником ip=192.168.1.2. И чем же рисковано вставлять это правило в начало? Если только в lan не находится сервер который обрабатывает 5190 порт и со стороны wan есть клиент с ip=192.168.1.2. Но в этом случае достаточно к правилу добавить -i br0


Я бы его поставил третьим
В данном случае можно и третьим. Но вот теперь какраз и рискованно. Ведь неизвестно, что за правила могут оказатся перед ним под номером 1 и 2. Там может попастся и -j ACCEPT.

Oleg
28-11-2007, 10:22
Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190, во-вторых, Ваша команда написана с ошибкой, в-третьих, iptables -A добавить правило в конец, а iptables -I в указанное место, которое в вашей команде пропущено.

Это называется флуд. Либо пишите по делу, что конкретно неправильно, либо не пишите ничего.
И избегайте категоричных высказываний типа "всё не правда".

Reyter
28-11-2007, 10:35
Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190, во-вторых, Ваша команда написана с ошибкой, в-третьих, iptables -A добавить правило в конец, а iptables -I в указанное место, которое в вашей команде пропущено.
Хм... Указывать на безграмотность в iptables не кому-нибудь, а Mam(O)nу, на мой (и, полагаю, не только мой) взгляд лучшему эксперту нашего форума именно в этом вопросе, причем делать это в форме на грани корректности, да еще с неполной аргументацией (без указания на конкретную ошибку), да еще и не разобравшись толком в допускаемом синтаксисе для опции -I, но тем не менее пребывая в полной уверенности в своей правоте по этой позиции...
Вы, батенька, сильно рискуете.

Игорь
28-11-2007, 10:56
Вот до команды:
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- br0 br0 anywhere anywhere
2 0 0 DROP all -- any any anywhere anywhere state INVALID
3 18682 13M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
4 0 0 DROP all -- !br0 vlan1 anywhere anywhere
5 0 0 SECURITY all -- !br0 any anywhere anywhere state NEW
6 550 27730 ACCEPT all -- br0 any anywhere anywhere
7 0 0 ACCEPT all -- any any anywhere anywhere ctstate DNAT
8 0 0 DROP all -- any br0 anywhere anywhere
Вот после:

[admin@(none) root]$ iptables -I FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP
[admin@(none) root]$ iptables -v --line-numbers -L FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 DROP tcp -- any any 192.168.1.2 anywhere tcp dpt:5190
2 0 0 ACCEPT all -- br0 br0 anywhere anywhere
3 0 0 DROP all -- any any anywhere anywhere state INVALID
4 18904 13M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
5 0 0 DROP all -- !br0 vlan1 anywhere anywhere
6 0 0 SECURITY all -- !br0 any anywhere anywhere state NEW
7 558 28002 ACCEPT all -- br0 any anywhere anywhere
8 0 0 ACCEPT all -- any any anywhere anywhere ctstate DNAT
9 0 0 DROP all -- any br0 anywhere anywhere
[admin@(none) root]$
Все работает:D, Mam(O)n просто огромное спасибо.

AYuusuke
11-12-2007, 20:18
Подскажите, пожалуйста, можно ли на 500gP сделать сабж (прошивка от Олега, последняя)?

Хочется что то вроде:


iptables -t nat -I PREROUTING -i br0 -d 2.0.0.0/8 -j DNAT --to-destination 10.0.0.0/8
iptables -t nat -I POSTROUTING -s 10.0.0.0/8 -o br0 -j SNAT –-to-source 2.0.0.0/8

Но iptables по умолчанию не понимает таких диапазонов в "--to-xxx" параметрах.


iptables v1.2.7a: Bad IP address `10.0.0.0/8'

Если написать "10.0.0.0-10.255.255.255" вместо "10.0.0.0/8" то похоже вместо замены только первой цифры заменяется весь адрес на "10.0.0.0", чего не требуется...

ps Хочется такую штуку сделать для подключения к еще одной городской локалке, где адреса пересекаются...

Oleg
13-12-2007, 12:14
Попробую переформулировать вопрос: что нужно сделать что бы к Олеговской прошивке прикрутить iptables поновее (суда по FAQ-у на netfilter-е, то что я хочу работает в последних iptables-ах)?
Пересобрать прошивку? Или можно поставить какой нибудь пакет? Или может бинарник только пере собрать будет достаточно?...
Есть такая target - NETMAP, она входит в прошивку. Только вот она правлена АСУСом и я не уверен, буде оно работать или нет. :(

AYuusuke
13-12-2007, 14:22
Есть такая target - NETMAP, она входит в прошивку. Только вот она правлена АСУСом и я не уверен, буде оно работать или нет. :(

Спасибо за совет, попробовал этот NETMAP. Результат почти такой же как c DNAT/SNAT-ом - судя по документации и различным tutorial-ам это то что мне нужно, но в нашей коробочке оно не работает.

Выглядит это как полностью отсутствующий ответ даже от рутера когда выполняю tracert на интересующий меня хост.

Вот такие правила я соорудил (даже исключил диапазон, для начала пытаюсь хотя бы для одного адреса подстановку сделать, с полным диапазоном 10.0.0.0/8 результат такой же):


iptables -t nat -I PREROUTING -d 2.4.43.75/32 -j NETMAP --to 10.4.43.75/32
iptables -t nat -I POSTROUTING -s 10.4.43.75/32 -j NETMAP --to 2.4.43.75/32

Результат (со стационарного компа):


P:\>tracert -d 2.4.43.75

Tracing route to 2.4.43.75 over a maximum of 30 hops

1 * * * Request timed out.
2 ^C


C SNAT/DNAT один адрес работает:


iptables -t nat -I PREROUTING -d 2.4.43.75/32 -j DNAT --to 10.4.43.75
iptables -t nat -I POSTROUTING -s 10.4.43.75/32 -j SNAT --to 2.4.43.75

(10.0.17.66 - WL-500gP)


P:\>tracert -d 2.4.43.75

Tracing route to 2.4.43.75 over a maximum of 30 hops

1 <1 ms <1 ms <1 ms 10.0.17.66
2 1 ms 1 ms 1 ms 2.4.43.75
3 1 ms 1 ms 1 ms 2.4.43.75
4 3 ms 3 ms 4 ms 2.4.43.75
5 1 ms 2 ms 2 ms 2.4.43.75

Trace complete.


Судя по тому как ASUS-овцы его используют, подпилили реализацию этого NETMAP-а серьезно (мапить в тупую разные по размеру диапазоны друг в друга вообщем то невозможно, наверно там какая то дополнительная логика есть):


Chain PREROUTING (policy ACCEPT)
target prot opt source destination
NETMAP udp -- anywhere 192.168.30.54 udp spt:6112 10.0.17.64/28

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
NETMAP udp -- 10.0.17.64/28 anywhere udp dpt:6112 192.168.30.54/32

(192.168.30.54 - адрес на wan порту, 10.0.17.64/28 в lan-е, интересующие меня 10.0.0.0/8 доступны через gateway 192.168.24.1).

У меня возникло 3 следующих вопроса:
1. Много где пишут что NETMAP доступен только в ядрах 2.5-2.6, у нас как я понимаю 2.4. Если ли информация о том, есть ли где то в глубине ядра, правильный таки NETMAP?
2. Олег, не могли бы вы показать где в исходниках потрудились асусовцы, может я смогу придумать какой нибудь workaround не требующий перекомпиляции...
3. Некоторые tutorial-ы предлагают NETMAP размещать в mangle таблице (другие наоборот запрещают это), в нашей коробочке добавляесть только в nat таблицу. Кто прав?

Или я сделал какую то простую ошибку? :confused:

ps Нашел интересную ссылку: http://www.linuxkernel.ru/?q=node/222 - тут вроде требуется пересобрать только iptables, теоретически нужное мне преобразование я мог бы оформить в виде кода на c++, но вот как и что нужно собирать/регистрировать/подкладывать я пока плохо понимаю. Может какой нибудь гуру в Linux-е подсказать как для нашей коробочки будут выглядеть нужные команды сборки?

Oleg
13-12-2007, 15:38
Ещё есть вариант с командой ip (iproute2 Есть в прошивке):

http://linux-ip.net/html/nat-stateless.html

Там вроде где-то было про сеть в сеть.

AYuusuke
13-12-2007, 18:11
Ещё есть вариант с командой ip (iproute2 Есть в прошивке):

http://linux-ip.net/html/nat-stateless.html

Там вроде где-то было про сеть в сеть.

О, спасибо! Данная штука работает (преобразование сеть в сеть для source и destination полей пакетов). Эх, только теперь я понял, что этого мне все равно мало :( Раньше плохо разбирался со всеми стадиями маршрутизации/подмены адресов, сейчас понимаю около половины...

Вернемся к начальной задаче - сделать доступ к 2-м, пересекающимся по адресам, локалкам. Т.е. у WL-500gP делается 2 WAN интерфейса (vlan1 и vlan2) (предположим что непосредственно сегменты в которые смотрят интерфейсы не пересекаются, 10.1.1.5/24 и 10.2.2.6/24 соответственно, с локальным сегментом допустим все тоже хорошо). Т.к. у обоих провайдеров есть 2 большие сети локальных ресурсов (пересекающиеся адреса 10.0.0.0/8), хочется иметь возможность коннектиться ко всем, без дополнительных телодвижений. Например следующая схема: связь с адресами 10.0.0.0/8 должна идти на первого провайдера, на 2.0.0.0/8 на второго (с автоматическим преобразованием к нормальным адресам). Удобнее всего это делать с помошью обычного роутинга.

Суть преобразования же следующая:


1) на vlan2 поле source входящих пакетов 10.0.0.0/8 -> 2.0.0.0/8,
причем подмена поля source должна производится ДО маршрутизации - чтобы было понятно с какого интерфейса он пришел;
2) на vlan2 поле destination исходящих пакетов 2.0.0.0/8 -> 10.0.0.0/8,
причем подмена поля destination должна производится ПОСЛЕ маршрутизации - чтобы пакет был уже на нужном out-интерфейсе.


SNAT и DNAT же (как и соответствующие правила iproute2) работают в противоположном порядке (что конечно же правильно, но не помогает решить нужную мне задачу) - SNAT в POSTROUTING, DNAT в PREROUTING.

Пока единственное решение которое я вижу это подключить еще одну коробочку (наверно любой простой 2-х портовый маршрутизатор) на 2-й WAN порт WL-500gP, что бы она делала безусловное преобразование адресов, а главный рутер уже только маршрутизировал 10.0.0.0/8 и 2.0.0.0/8 подсети. Очень хочется избежать необходимости покупки еще одного рутера.

Чувствуется что задача очень специфичная, и простого решения нет, но если у кого то возникнут еще какие нибудь мысли по этому поводу, с удовольствием выслушаю.

zap
14-12-2007, 15:33
А Вы изучали бессмертную страничку: http://www.docum.org/docum.org/kptd/?

Навскидку не могу пока сказать, но мне кажется что эта задача должна быть вполне выполнима. Вечером приду домой, подумаю. В частности, возможно, каким-то образом можно просто грязно пропатчить поля src IP/dst IP в таблице mangle в цепочках PREROUTING и POSTROUTING соответственно. Гм, не помню точно где, но вроде видел средства для чуть ли не побайтного редактирования служебных полей IP заголовка... или то в tc было...

Oleg
14-12-2007, 16:59
Хм... Действительно, вчера меня как-то унесло не туда. В POSTROUTING/PREROUTING у mangle можно попробовать.

AYuusuke
14-12-2007, 20:50
А Вы изучали бессмертную страничку: http://www.docum.org/docum.org/kptd/?

Навскидку не могу пока сказать, но мне кажется что эта задача должна быть вполне выполнима. Вечером приду домой, подумаю. В частности, возможно, каким-то образом можно просто грязно пропатчить поля src IP/dst IP в таблице mangle в цепочках PREROUTING и POSTROUTING соответственно. Гм, не помню точно где, но вроде видел средства для чуть ли не побайтного редактирования служебных полей IP заголовка... или то в tc было...

С нетерпением жду ваших идей. :D
Пока я попробовал поэксперементировать с MARK целью в PREROUTING mange таблицы - не получается :(.

Мысль следующая:
1) Промаркируем интересующие нас пакеты, двигающиеся в обоих направлениях, разными маркерами;
2) Создадим свои табицы маршрутизации для этих пакетов;
3) Будем проводить nat (source и destination) обычным способом для промаркированных пакетов

Должно получится приблизительно следующее:


iptables -t mangle -I PREROUTING -d 2.0.0.0/8 -j MARK --set-mark 4
iptables -t mangle -I PREROUTING -i vlan1 -s 10.0.0.0/8 -j MARK --set-mark 5
ip route add table 4 default via 192.168.24.1
ip route add table 4 nat 2.0.0.0/8 via 10.0.0.0
ip rule add fwmark 4 table 4
ip rule add fwmark 5 nat 2.0.0.0 from 10.0.0.0/8
ip route flush cache

Тут 192.168.30.54 - адрес на WAN порту (NAT-ится в локальный сегмент 10.0.17.64/28), 192.168.24.1 гейтвей в городскую локалку, 10.0.0.0/8 имеющиеся в городской локалке адреса. Default gateway в основной таблице сделан к совсем другому провайдеру, там необходимых нам станций (из диапазона 10.0.0.0/8) нет.

Результат не утешительный (пакеты идут только до рутера):


Tracing route to 2.4.43.75 over a maximum of 30 hops

1 <1 ms <1 ms <1 ms 10.0.17.66
2 * * * Request timed out.
3 * * * Request timed out.
4 * * * Request timed out.

10.0.17.66 - рутер

Есть предположения что не нужно смешивать iproute2 и iptables... Может у кого нибудь есть мысли что я сделал не так? Или есть какой нибудь инструмент, что позволит более детально рассмотреть сей процесс?

zap
15-12-2007, 12:02
ip route add table 4 nat 2.0.0.0/8 via 10.0.0.0
Я не совсем понял, что Вы хотели сказать этим правилом. Что, адрес 10.0.0.0 это адрес Вашего роутера? По сути то, чего Вы добились этим правилом - на все Ваши пинги на любой IP из диапазона 2.0.0.0/8 будет выставляться адрес источника 10.0.0.0. Это наверняка не то, что Вы хотели. Эти пакеты надо NATить на выделенный Вам адрес из подсети 10.0.0.0/8, я так понял что это 10.2.2.6 (10.0.17.66?).

Вообще не вижу смысла мешать iptables и iproute. nat от iproute имеет достаточно ограниченное применение, iptables позволяет сделать всё то же самое, кроме роутинга - да и то, в ядре 2.6 iptables может вмешиваться даже в решения роутера пакетов. Даже место в цепочке, где выполняется nat у роутера и iptables практически совпадают, так что даже с этим особо не поиграешь.

Далее, для отладки tracert не годится нифига, это всё равно что пытаться понять, почему не работает телевизор, бросая в него теннисные шарики. Для этого удобно использовать tcpdump, он как раз есть в прошивке роутера:


tcpdump -n -i vlan1
покажет все пакеты, которые входят и выходят с WAN интерфейса, -i vlan0 покажет пакеты, которые тусуются на LAN интерфейсе и так далее. Командная строка у tcpdump очень гибкая, изучайте его man если что. Хождение пакетов обычно проверяю пингом.

Теперь о самой сути. Давайте попробуем составить план Пу... эээ работ :), а то, как мне кажется, Вы просто слепо перебираете все фичи, о которых нашли информацию, особо не вдумываясь в их смысл :-)

1. Первым делом понятно, что для доступа в любую сеть Вам необходим обычный SNAT. Адреса из Вашей внутренней сети (192.168.1.* ?) надо будет "замаскировать" либо как 10.1.1.5, либо как 10.2.2.6 в зависимости от того, в какую сеть уходит пакет. SNAT выполняется в самом-самом конце, перед отправкой пакета в сеть (и соответственно, ответные пакеты окучиваются сразу по приходе пакета из сети). Про NAT на диапазон адресов забудьте напрочь, это фича совсем для других случаев.

iptables -t nat -I POSTROUTING -o vlan1 -j SNAT --to-source 10.1.1.5
iptables -t nat -I POSTROUTING -o vlan2 -j SNAT --to-source 10.2.2.6

2. Далее, понятноm что для того, чтобы наш пакет для левой подсети "всосался" в нужный нам интерфейс (в дальнейшем я буду исходить из того, что это vlan2) необходимо указать, что у этого интерфейса есть доступ к нашей 'обманной' сетке:


ip r a 2.0.0.0/8 dev vlan2

Теперь все пакеты для этой подсети уйдут в правильную сетевую карту, и мы имеем шансы 'перехватить' их перед самым выходом.

3. Для изменения адресов с 2.0.0.0/8 в 10.0.0.0/8 и обратно DNAT опять же не годится совсем. Во-первых --to-destination понимает только диапазон адресов (10.0.0.0-10.255.255.255), во-вторых он подменяет адреса абсолютно незакономерно, то есть 2.2.2.2 может оказаться заменённым на 10.5.9.7 и это будет абсолютно правильной работой модуля.

4. К сожалению, я просмотрел какие есть возможности у таблицы mangle, и в своём 'стандартном' состоянии она мало на что способна - можно менять TTL, TOS и маркировать пакеты и это всё. Таким образом, единственный доступный способ сделать то, что нам надо - цель NETMAP. К счастью, она у нас имеется, пусть и в каком-то непонятно-модифицированном виде.

По идее, должно быть что-то вроде:


iptables -t nat -I PREROUTING -s 10.0.0.0/8 -i vlan2 -j NETMAP --to 2.0.0.0/8
iptables -t nat -I POSTROUTING -d 2.0.0.0/8 -o vlan2 -j NETMAP --to 10.0.0.0/8

Не забудьте загрузить модуль ipt_NETMAP.o, он (у меня?) почему-то не подгружается автоматически командой iptables:


insmod /lib/modules/2.4.20/kernel/net/ipv4/netfilter/ipt_NETMAP.o

После этого вышеуказанные правила загрузились без проблем, но вот попытка посмотреть каков результат меня несколько озадачило:


[zap@gate|/lib/modules/2.4.20/kernel/net/ipv4/netfilter]tcpdump -n -i vlan1 icmp
listening on vlan1, link-type EN10MB (Ethernet), capture size 68 bytes
03:26:46.769396 IP 10.0.0.0 > 2.1.2.3: icmp 64: echo request seq 5
03:26:47.769206 IP 10.0.0.0 > 2.1.2.3: icmp 64: echo request seq 6
03:26:48.769035 IP 10.0.0.0 > 2.1.2.3: icmp 64: echo request seq 7
03:26:49.768860 IP 10.0.0.0 > 2.1.2.3: icmp 64: echo request seq 8

То есть по какой-то причине модуль NETMAP в лоб заменило source IP на параметр --to (причём даже без учёта маски!). В общем, надо разбираться с исходниками NETMAP, это единственный реальный вариант, который я вижу. Завтра скачаю, поковыряюсь а сегодня уже поздно ;)

AYuusuke
15-12-2007, 13:39
zap, cпасибо за ответ!

Видимо я плохо сформулоровать свою проблему и плохо рассказал о попытках. В ообщих чертах вы правильно поняли, что мне нужно, но вот с конкретными адресами/масками не все хорошо.
Скорее всего это произошло из за того, что в 2-х последних постах я использовал разные подсети для иллюстрации того что я хочу сделать. Попробую переформулровать заново, максимально приблизившись к тому, что у меня есть сейчас.

Есть подключение к 2-м провайдерам:
- провайдер A выдал 2 блока адресов (10.0.17.64/28 и 89.223.97.248/29), со шлюзами 10.0.17.65 и 89.223.97.249 соответственно, для доступа в интетернет;
- провайдер B дал один IP (192.168.30.54) со шлюзом 192.168.24.1 для доступа в свою локалку (192.168.0.0/16, 10.0.0.0/8 и еще несколько подсетей) (интернет там тоже есть, но я его не использую)
(89.223.97.248/29 рассматривать отдель не имеет смысла)

Кабель A подключен в WAN порт рутера (настройки на static ip), кабель B в LAN порт.
Результат приблизительно следующий:


[admin@anthy root]$ ip route
192.168.24.1 dev vlan1 scope link
89.223.97.248/29 dev br0 proto kernel scope link src 89.223.97.254
10.0.17.64/28 dev br0 proto kernel scope link src 10.0.17.66
192.168.24.0/21 dev vlan1 proto kernel scope link src 192.168.30.54
85.249.160.0/20 via 192.168.24.1 dev vlan1 metric 2
192.168.0.0/16 via 192.168.24.1 dev vlan1 metric 2
1.0.0.0/8 via 192.168.24.1 dev vlan1 metric 2
10.0.0.0/8 via 192.168.24.1 dev vlan1 metric 2
127.0.0.0/8 dev lo scope link
default via 89.223.97.249 dev br0

Локальный сегмент 10.0.17.64/28, DHCP моего рутера раздает адреса в этом диапазоне.

Так я хожу в интернет:


Трассировка маршрута к ya.ru [213.180.204.8]
с максимальным числом прыжков 30:

1 1 ms 1 ms 1 ms 10.0.17.66
2 1 ms 1 ms 1 ms 10.0.17.65
3 4 ms 4 ms 4 ms 81.222.220.97
4 4 ms 5 ms 6 ms 10.54.0.1
5 5 ms 6 ms 5 ms 194.226.196.1
6 5 ms 6 ms 7 ms 217.170.94.241
7 5 ms 6 ms 8 ms 81.222.2.1
8 14 ms 14 ms 13 ms 81.222.15.1
9 14 ms 15 ms 14 ms 81.222.7.162
10 19 ms 15 ms 13 ms 87.250.233.99
11 15 ms 15 ms 17 ms 213.180.201.222
12 16 ms 16 ms 14 ms 213.180.204.8

Трассировка завершена.

, а так - в локалку


Трассировка маршрута к 10.4.43.75 с максимальным числом прыжков 30

1 1 ms 1 ms 1 ms 10.0.17.66
2 2 ms 2 ms 2 ms 192.168.24.1
3 2 ms 2 ms 2 ms 10.250.0.2
4 * 740 ms * 10.250.2.1
5 2 ms 2 ms 1 ms 10.4.43.75

Трассировка завершена.


Есть возможность подключить еще одну локалку (там тоже дадут только 1 IP), где тоже будет диапазон 10.0.0.0/8.
Пока подключения нет, я экспериментирую следующим образом:


ip route delete 10.0.0.0/8

все пакеты на 10.0.0.0/8 начинают идти в инет


Трассировка маршрута к 10.4.43.75 с максимальным числом прыжков 30

1 2 ms 1 ms 1 ms 10.0.17.66
2 2 ms 2 ms 1 ms 10.0.17.65
3 11 ms 112 ms 5 ms 81.222.220.97
4 * ^C


Назовем данную конфигурацию базовой. Задача - сделать так, что бы:
- пакеты идущие из локального сегмента на 2.0.0.0/8 уходили в vlan1 с соответствующей перекодировкой
- у пакетом идущих с vlan1 пере кодируется source поле 10.0.0.0/8 в 2.0.0.0/8 (destination пере кодируется обычным MASQUERADE/DNAT в зависимости от направления в котором установлено соединение)

------------------------------------------------------------

Теперь отвечаю на ваше сообщение:

ip route add table 4 nat 2.0.0.0/8 via 10.0.0.0 должно перекодировать поле destination из 2.0.0.0/8 в 10.0.0.0/8 для всех пакетов,
промаркированных 4-кой (http://linux-ip.net/html/nat-stateless.html example 5.2)

Я бы тоже не хотел смешивать iproute2 и iptables, нужного мне преобразования я не смог добиться с помошью iptables...

Про tcpdump спасибо, буду пользоваться.

Насчет "1." конечно же вы правы, у меня оно так и делается. Тут вопросов особых нет.

"2." - этого я попытался добиться отдельной таблицей маршрутизации (table 4) для помеченных пакетов. Попробую и ваш вариант.

"3." - тут я руководствовался статьей http://lists.netfilter.org/pipermail/netfilter/2001-March/008924.html и мне показалось что если размер подсетей
совпадает, должно быть прямое преобразование. Я был не прав? Конечно если размеры диапазонов разные - будет чехарда как вы и написали (в чем я пару раз убеждался).

"4." - определенную попытку использования NETMAP я делал (пару сообщений ниже), но результата я не добился. Так же Олег говорил о том что асусовцы подправили эту цель...
Как мне кажется моя конструкция из "ip route add nat" и "ip rule add nat" должны быть тождественно равна вашему iptables NETMAP. Это не так?

Жду ответа. :)

Теперь статистика с помошью tcpdump моего варианта с ip route nat (на базовую конфигурацию накатываю настройки их прошлого поста):


Трассировка маршрута к 2.4.43.75 с максимальным числом прыжков 30

1 1 ms 1 ms <1 мс 10.0.17.66
2 * * * Превышен интервал ожидания для запроса.
3 * * ^C

(должно быть как в начале поста)


[admin@anthy root]$ tcpdump -n -i vlan1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan1, link-type EN10MB (Ethernet), capture size 68 bytes
16:14:40.167239 IP 192.168.30.54 > 10.4.43.75: ICMP echo request, id 1, seq 488, length 72
16:14:40.169695 IP 192.168.24.1 > 192.168.30.54: ICMP time exceeded in-transit, length 36
16:14:43.897703 IP 192.168.30.54 > 10.4.43.75: ICMP echo request, id 1, seq 489, length 72
16:14:43.898984 IP 192.168.24.1 > 192.168.30.54: ICMP time exceeded in-transit, length 36
16:14:47.896878 IP 192.168.30.54 > 10.4.43.75: ICMP echo request, id 1, seq 490, length 72
16:14:47.897902 IP 192.168.24.1 > 192.168.30.54: ICMP time exceeded in-transit, length 36
16:14:51.896701 IP 192.168.30.54 > 10.4.43.75: ICMP echo request, id 1, seq 491, length 72
16:14:51.897705 IP 10.250.0.2 > 192.168.30.54: ICMP time exceeded in-transit, length 36
16:14:55.932562 IP 192.168.30.54 > 10.4.43.75: ICMP echo request, id 1, seq 492, length 72
16:14:55.933766 IP 10.250.0.2 > 192.168.30.54: ICMP time exceeded in-transit, length 36
16:14:59.900137 IP 192.168.30.54 > 10.4.43.75: ICMP echo request, id 1, seq 493, length 72
16:14:59.902178 IP 10.250.0.2 > 192.168.30.54: ICMP time exceeded in-transit, length 36

12 packets captured
12 packets received by filter
0 packets dropped by kernel

Интересный результат, не так ли? По крайней мере 2.0.0.0/8->10.0.0.0/8 преобразование происходит правильно (одновременно и source поле ставится как надо), пакеты уходят на нужный интерфейс, но вот ответы где то застревают...
Есть какие нибудь мысли?

zap
15-12-2007, 23:41
Видимо я плохо сформулоровать свою проблему и плохо рассказал о попытках. В ообщих чертах вы правильно поняли, что мне нужно, но вот с конкретными адресами/масками не все хорошо.
Я сначала хотел попросить разьяснений, но потом подумал что незачем тратить время впустую, лучше просто попытаюсь догадаться :)


Есть подключение к 2-м провайдерам:
- провайдер A выдал 2 блока адресов (10.0.17.64/28 и 89.223.97.248/29)
Гм, провайдер выделил Вам аж 16 серых и 8 реальных адресов? Весьма нетипично :)


Кабель A подключен в WAN порт рутера (настройки на static ip), кабель B в LAN порт.

Может имеет смысл переразбить порты на роутере? То есть, сделать порт WAN1, WAN2 и оставшиеся три порта обьединить в LAN? Или, с учётом ещё одного потенциального провайдера, разбить имеющиеся 5 портов на WAN1, WAN2, WAN3 и два порта оставить на LAN? Таким образом Вы получите свою приватную подсеть, где не будут бегать левые броадкасты от провайдера и где не надо защищаться файрволом, плюс Вам не понадобится целый блок адресов от первого провайдера, будет достаточно 1 выделенного адреса от каждого провайдера?



85.249.160.0/20 via 192.168.24.1 dev vlan1 metric 2

Обана... вижу знакомые цифры :) между прочим, мой адрес 85.249.169.28 :)


Локальный сегмент 10.0.17.64/28, DHCP моего рутера раздает адреса в этом диапазоне.
Если отделиться от WAN'ов высокой огненной стеной, то можно сделать себе спокойно внутри квартиры какой-нибудь 172.16.8.0/24 и не париться с публично видимыми диапазонами. Кстати, а что происходит когда какой-нибудь товарищ из локалки делает запрос DHCP, ему Ваш сервак выделит адрес в Вашем приватном диапазоне?


ip route add table 4 nat 2.0.0.0/8 via 10.0.0.0 должно перекодировать поле destination из 2.0.0.0/8 в 10.0.0.0/8 для всех пакетов,
промаркированных 4-кой (http://linux-ip.net/html/nat-stateless.html example 5.2)
Я не уверен. Пример задан для всего лишь одного айпишнега, то есть IF DST=205.254.211.17 THEN REPLACE DST=192.168.100.17. Про работу с целым диапазоном там нет ни слова.

Кстати спасибо за ссылку, я там прочитал ключевое слово STATELESS. Оказывается NAT у iproute не отслеживает состояние соединения, то есть он просто заменяет поле адреса и всё - этим он кардинально отличается от NAT'а iptables (но зато это же роднит его с NETMAP'ом, собственно NAT iproute == NETMAP iptables :). Так что если не выйдет с NETMAP'ом, может получится с iproute :)


"3." - тут я руководствовался статьей http://lists.netfilter.org/pipermail/netfilter/2001-March/008924.html и мне показалось что если размер подсетей
совпадает, должно быть прямое преобразование. Я был не прав? Конечно если размеры диапазонов разные - будет чехарда как вы и написали (в чем я пару раз убеждался).
Я не знаю, что курил этот Mark A. Howard в момент написания, но лично у меня такой синтаксис не прокатывает, и в мануале iptables такой синтаксис вообще не описан.

На роутере:

[zap@gate|/tmp/local/root]iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vlan0 -j SNAT --to-source 5.6.7.0/24
iptables v1.2.7a: Bad IP address `5.6.7.0/24'


На компьютере (ядро 2.6.23):


[1|root@zap|~]iptables -t nat -A POSTROUTING -s 192.168.211.0/24 -o eth0 -j SNAT --to-source 5.6.7.0/24
iptables v1.3.8: Bad IP address `5.6.7.0/24'

В мануале написано, что формат параметра - "--to-source <ipaddr>-<ipaddr>".

Возможно, учитывая что письмо написано в 2001м году, что информация относится к какой-то лысой версии ядра. В любом случае, современный SNAT не годится, так как и SNAT и DNAT делают STATEFUL NAT, а нам нужен STATELESS NAT.


"4." - определенную попытку использования NETMAP я делал (пару сообщений ниже), но результата я не добился. Так же Олег говорил о том что асусовцы подправили эту цель...
К сожалению, я сегодня весь день пытался скачать исходники с сайта асуса (http://support.asus.com/download/download.aspx?SLanguage=ru-ru&model=WL-500gP), но сайт так и не заработал, поэтому с исследованием исходников придётся подождать пока.


Как мне кажется моя конструкция из "ip route add nat" и "ip rule add nat" должны быть тождественно равна вашему iptables NETMAP. Это не так?
Как я писал выше, iproute nat оказался братом-близнецом NETMAP, только вроде бы работает правильно :-)



16:14:40.167239 IP 192.168.30.54 > 10.4.43.75: ICMP echo request, id 1, seq 488, length 72
О как! Таки iproute nat заменяет всё как надо, это здорово.



16:14:40.169695 IP 192.168.24.1 > 192.168.30.54: ICMP time exceeded in-transit, length 36
Хм, а это случайно не оттого что TTL слишком маленький? Попробуйте задать tcpdump опцию -v, он должен распечатать TTL пакета. Возможно, по какой-то причине TTL уменьшается до нуля раньше времени. Сравните с TTL пакетов, которые доходят до цели как надо.

AYuusuke
16-12-2007, 00:43
(Только что заметил описку, кабель B подключен в LAN порт, кабель A - в WAN)

Насчет 16-ти серых и 8 реальных адресов думаю я лучше оставлю как есть. Данная схемы еще с тех времен когда у меня стоял тупой свич. DHCP работает, т.к. мне выделили отдельный vlan на оборудовании провайдера, и другие пользователи в мой сегмент только с помошью l3 маршрутизации ходят, соответственно и лишних broadcast-ов нет. Зато 5 реальников и никакой головной боли из за зависшего рутера (у меня асус периодически виснет из за моих экспериментов). Когду буду подключать следующего провайдера (дада, я хочу в Корбину! :) ) конечно сделаю на асусе еще один WAN порт.

Давно вы в Озерках?

С диапазоном ip route/rule nat точно работает, причем синтаксис я написал правильно, если нужно попробую найти соответствующий tutorial...

По поводу SNAT/DNAT - http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2 раздел Multiple Mappings, Overlap and Clashes - там в поле --to используется подсеть. Тут вроде документ не такой старый.... Хотя я с вами абсолютно согласен, что в нашем iptables такое не пройдет.

Про Stateful и Stateless я пока плохо понимаю (ну кроме факта что в одном случае запоминается и сопровождается каждое соединение, а в другом - обработка отдельных пакетов без какой либо памяти). Нам кончено же должно хватить stateless, но почему помешает stateful я не понял. Поясните?

GPL исходники от асуса есть на files.wl500g.info (видимо нас интересует http://files.wl500g.info/asus/wl500g/gpl/GPL_1927.zip)

TTL там нормальный, я выполнял tracert, а не пинг. По логу прямо видено что сначала идет 3 ответа от первого хопа, потом 3 ответа от второго. Дальше я нажал ctrl-c. Тут вроде никаких проблем.

Заметил следующую вешь: если не удалять маршрут 10.0.0.0/8 и сначала сделать "tracert 10.4.43.75", а потом почти сразу "tracert 2.4.43.75", то ответы приходят, но с не поменяным source (с штатным, начинающимся с 10). Если подождать некоторое время и опять сделать "tracert 2.4.43.75", то ответа опять не будет (тут под "ответом" я понимаю доходящие ответы от 2-го, 3-го и т.п. хопа, 1-й хоп - рутер, он всегда отвечает).

Соответственно у меня возникло подозрение, что мои правила ip route/rule nat каким то образом мешают штатному stateful NAT из iptables... При трассировке адреса "2.4.43.75" в таблице conntrack появляется строчка


icmp 1 23 src=10.0.17.76 dst=2.4.43.75 type=8 code=0 id=1 src=2.4.43.75 dst=192.168.30.54 type=0 code=0 id=1 use=1 mark=0

, при трассировке на "10.4.43.75" - строчка


icmp 1 29 src=10.0.17.76 dst=10.4.43.75 type=8 code=0 id=1 src=10.4.43.75 dst=192.168.30.54 type=0 code=0 id=1 use=1 mark=0

Получается что сопровождение соединений происходит до нашего преобразования, что вообщем то правильно. Но почему обратные пакеты не пролезают?

(если я опять не понятно рассказал про мой эксперимент с одновременной трассировкой адресов 2.4.43.75 и 10.4.43.75 - говорите, я распишу подробнее и с картинками)

zap
16-12-2007, 11:25
(Только что заметил описку, кабель B подключен в LAN порт, кабель A - в WAN)
Хм, по-моему Вы опять описались =) Наверное всё-таки кабель A в LAN, кабель B - в WAN?


Насчет 16-ти серых и 8 реальных адресов думаю я лучше оставлю как есть.
Жадность, конечно, не порок ;-)


экспериментов). Когду буду подключать следующего провайдера (дада, я хочу в Корбину! :) ) конечно сделаю на асусе еще один WAN порт.
Так можно уже сейчас отцепить один из LAN портов, и сделать WAN2. Эксперименты лучше проводить в условиях, максимально приближенных к боевым :)


Давно вы в Озерках?
С 2003го года.


С диапазоном ip route/rule nat точно работает, причем синтаксис я написал правильно, если нужно попробую найти соответствующий tutorial...
Ну, вообще говоря, это логично, учитывая тот факт что iproute это скорее инструмент для управления массовыми скоплениями компьютеров а не для управления по одному :)


По поводу SNAT/DNAT - http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2 раздел Multiple Mappings, Overlap and Clashes - там в поле --to используется подсеть. Тут вроде документ не такой старый.... Хотя я с вами абсолютно согласен, что в нашем iptables такое не пройдет.
Обратная сторона того, что для Линукса очень много технической документации и информации в сети - то, что в сети полно устаревшей документации. У нас на форуме регулярно всплывает какой-нибудь пользователь, который пытается настроить VPN по туториалам десятилетней давности и тому подобное. Правда, это скорее касается того письма 2001го года :-)

Что же до раздела "Multiple Mappings, Overlap and Clashes", то как раз там написано обратное - что "NAT code is clever enough", чтобы подменять айпишнеги и порты на что попало :-) А пример с -j SNAT --to 1.2.3.0/24 вообще некорректен, я удивляюсь откуда эта ошибка кочует из мануала в мануал... ведь на роутере ядро времён царя Гороха, и то оно такой синтаксис не понимает.


Про Stateful и Stateless я пока плохо понимаю (ну кроме факта что в одном случае запоминается и сопровождается каждое соединение, а в другом - обработка отдельных пакетов без какой либо памяти). Нам кончено же должно хватить stateless, но почему помешает stateful я не понял. Поясните?
Вы правильно понимаете, просто надо сделать ещё один шаг и понять, зачем он запоминает каждое соединение. А запоминание делается потому, что адреса и/или порты могут заменяться, то есть не существует способа определить пару SRC IP/PORT <-> DST IP/PORT без линейного запоминания всех установленных соединений. Соответственно, сам факт, что NAT есть STATEFUL уже говорит нам о том, что маппинг не 1:1.

Ну и плюс к тому, каждое соединение жрёт ресурсы. Возможно, для маленькой домашней сети это не так страшно (хотя ресурсов у роутера не так уж много), а вот для шлюза типа нашего озерковского (между прочим, у нас как раз имеется доступ в две другие городские локалки по адресам 1.x.x.x и 2.x.x.x, хотя у них в локалках используется адресация 10.x.x.x) это ужосна.


GPL исходники от асуса есть на files.wl500g.info (видимо нас интересует http://files.wl500g.info/asus/wl500g/gpl/GPL_1927.zip)
Здорово, уже качаю. На oleg.wl500g.info приведена устаревшая информация о том, что нужны исходники GPL_1817.zip, я безуспешно пытался их найти на сайте асуса :-)


TTL там нормальный, я выполнял tracert, а не пинг. По логу прямо видено что сначала идет 3 ответа от первого хопа, потом 3 ответа от второго. Дальше я нажал ctrl-c. Тут вроде никаких проблем.
О как интересно, оказывается (http://en.wikipedia.org/wiki/ICMP_Time_Exceeded):


The Time Exceeded Message is an ICMP message which is generated by a gateway to inform the source of a discarded datagram due to the time to live field reaching zero. [...]

Time exceeded messages are used by the traceroute utility to identify gateways on the path between two hosts.

То есть time exceeded это штатная "фишка" traceroute, он намеренно выставляет низкий TTL, чтобы выявлять шлюзы. Зря Вы всё-таки не присмотрелись к выхлопу tcpdump -v. Вот пример моего traceroute до одного из шлюзов провайдера:


[2|root@zap|~]traceroute -z 1 -I 192.168.240.1
traceroute to 192.168.240.1 (192.168.240.1), 30 hops max, 40 byte packets
1 gate.home.lan (192.168.1.1) 0.464 ms 0.433 ms 0.431 ms
2 vlan16-DGS5.ozerki.net (85.249.169.1) 22.548 ms 19.714 ms 9.128 ms
3 DGS1.ozerki.lan (192.168.240.1) 16.148 ms 21.245 ms 21.045 ms


При этом на шлюзе всё очень сходно с Вашей ситуацией:


[zap@gate|/tmp/local/root]tcpdump -vn -i vlan1 icmp
tcpdump: listening on vlan1, link-type EN10MB (Ethernet), capture size 68 bytes
14:23:49.493446 IP (tos 0x0, ttl 5, id 64239, offset 0, flags [none], length: 68) 85.249.169.28 > 194.87.0.50: icmp 48: echo request seq 18
14:23:49.504422 IP (tos 0x0, ttl 251, id 37013, offset 0, flags [none], length: 56) 85.249.160.1 > 192.168.1.2: icmp 36: time exceeded in-transit
14:23:53.193230 IP (tos 0x0, ttl 1, id 64243, offset 0, flags [none], length: 68) 85.249.169.28 > 194.87.0.50: icmp 48: echo request seq 4
14:23:53.210666 IP (tos 0x0, ttl 30, id 0, offset 0, flags [none], length: 56) 85.249.169.1 > 192.168.1.2: icmp 36: time exceeded in-transit
14:24:07.948034 IP (tos 0x0, ttl 1, id 63648, offset 0, flags [none], length: 68) 85.249.169.28 > 192.168.240.1: icmp 48: echo request seq 4
14:24:07.963909 IP (tos 0x0, ttl 30, id 0, offset 0, flags [none], length: 56) 85.249.169.1 > 192.168.1.2: icmp 36: time exceeded in-transit
14:24:08.947740 IP (tos 0x0, ttl 1, id 63649, offset 0, flags [none], length: 68) 85.249.169.28 > 192.168.240.1: icmp 48: echo request seq 5
14:24:08.962690 IP (tos 0x0, ttl 30, id 0, offset 0, flags [none], length: 56) 85.249.169.1 > 192.168.1.2: icmp 36: time exceeded in-transit
14:24:09.947528 IP (tos 0x0, ttl 1, id 63650, offset 0, flags [none], length: 68) 85.249.169.28 > 192.168.240.1: icmp 48: echo request seq 6
14:24:09.963014 IP (tos 0x0, ttl 30, id 0, offset 0, flags [none], length: 56) 85.249.169.1 > 192.168.1.2: icmp 36: time exceeded in-transit
14:24:10.947347 IP (tos 0x0, ttl 2, id 63651, offset 0, flags [none], length: 68) 85.249.169.28 > 192.168.240.1: icmp 48: echo request seq 7
14:24:10.949408 IP (tos 0x0, ttl 254, id 63651, offset 0, flags [none], length: 68) 192.168.240.1 > 85.249.169.28: icmp 48: echo reply seq 7
14:24:11.947143 IP (tos 0x0, ttl 2, id 63652, offset 0, flags [none], length: 68) 85.249.169.28 > 192.168.240.1: icmp 48: echo request seq 8
14:24:11.948523 IP (tos 0x0, ttl 254, id 63652, offset 0, flags [none], length: 68) 192.168.240.1 > 85.249.169.28: icmp 48: echo reply seq 8
14:24:12.946996 IP (tos 0x0, ttl 2, id 63653, offset 0, flags [none], length: 68) 85.249.169.28 > 192.168.240.1: icmp 48: echo request seq 9
14:24:12.959689 IP (tos 0x0, ttl 254, id 63653, offset 0, flags [none], length: 68) 192.168.240.1 > 85.249.169.28: icmp 48: echo reply seq 9


Посмотрите на TTL исходящих пакетов :) И обратите внимание, что time-limit exceeded идут по три штуки, как раз сколько попыток делает traceroute на каждый хоп.

Итак вывод: исходящий траффик у Вас вроде бы работает как надо, значит затык происходит на обратном пути.


Заметил следующую вешь
Возможно это связано с тем, что TCP/IP стек работает асинхронно и кэширует дофига чего; не зря во всех примерах iproute всё время советуют делать ip route flush cache после каждого изменения таблицы маршрутов.


Получается что сопровождение соединений происходит до нашего преобразования, что вообщем то правильно. Но почему обратные пакеты не пролезают?
Вот это и есть следующая задача :-)

AYuusuke
16-12-2007, 11:53
Да, конечно же я опять описался (всетаки 3 часа ночи было). Ну похоже и так понятно какой кабель в какой порт подключен :)

Про второй WAN порт конечно можно попробовать, но к сожалению не сейчас. Пока все порты асуса заняты (я не с проста брал диапазон на 16 плюшевых адресов), нужно или еще свич покупать или еще кабели прокладывать... пока повременю с этим.

Я правильно понял что если получится необходимое мне преобразование реализовать с помошью какого то stateful nat-а, то сильно хуже не будет? У меня дома не так много компов (следовательно и общее кол-во соединений, которые будут сопровождаться рутером не очен велико), должно потянуть...

Про цифровские 1.0.0.0/8 адреса я кончено же знаю. То что наши админы смогли такое сделать и послужило поводом попробовать это же сделать самому. Имеющиеся альтернативы - потерять весь антхилл при подключении к корбине или же руками искать использующиеся подсети и прописывать на каждую из них свое правило маршрутизации (а они же еще и меняются со временем, да и какие то точно будут пересекаться), мне не очень нравится.

Насчет входящих пакетов: можете посоветовать какую либо утилиту или команду логирования, которая бы показала на каком этапе входящие пакеты отбрасываются? Я что то слышал про возможность логирования из iptables, но какую цель писать, в какой таблице и в какой цепочке мне плохо понятно. Поможете?

У вас есть мысли, почему не срабатывает обратное преобразование 10.0.0.0/8->2.0.0.0/8 ?


iptables -t mangle -I PREROUTING -i vlan1 -s 10.0.0.0/8 -j MARK --set-mark 5
ip rule add fwmark 5 nat 2.0.0.0 from 10.0.0.0/8

Правила написаны до смешного простыми, все преобразование должны быть stateless... Почему же не рабоатет.. :confused:

zap
16-12-2007, 12:22
То что наши админы смогли такое сделать и послужило поводом попробовать это же сделать самому.
Ну, у админов, я думаю, NETMAP работает правильно :-)


Я правильно понял что если получится необходимое мне преобразование реализовать с помошью какого то stateful nat-а, то сильно хуже не будет? У меня дома не так много компов (следовательно и общее кол-во соединений, которые будут сопровождаться рутером не очен велико), должно потянуть...
Я бы не стал, но в принципе конечно это будет работать.


Насчет входящих пакетов: можете посоветовать какую либо утилиту или команду логирования, которая бы показала на каком этапе входящие пакеты отбрасываются? Я что то слышал про возможность логирования из iptables, но какую цель писать, в какой таблице и в какой цепочке мне плохо понятно. Поможете?
Это достаточно просто, но я не уверен что это даст искомый ответ.

iptables -A xxx -j LOG

при этом пакеты будут уходить в журнал ядра (dmesg либо включите klogd на /var/log/messages).


У вас есть мысли, почему не срабатывает обратное преобразование 10.0.0.0/8->2.0.0.0/8 ?
Возможно, оно срабатывает но, например слишком поздно (после принятия решения о роутинге?). Может оно не в тот интерфейс уходит? Для профилактики посмотрите tcpdump на других интерфейсах, и не пользуйте Вы этот tracert, он даёт кучу ненужных эффектов. Простой пинг; один пакет туда - один обратно. Всё предельно ясно, а tracert вон какие сюрпризы выкидывает :)



iptables -t mangle -I PREROUTING -i vlan1 -s 10.0.0.0/8 -j MARK --set-mark 5
ip rule add fwmark 5 nat 2.0.0.0 from 10.0.0.0/8

Может попробовать сначала сделать простое правило:


ip rule add nat 2.0.0.0 from 10.0.0.0/8


Возможно mangle отрабатывает уже после того, как срабатывает ip rule?

Покопаюсь попозже в исходниках, посмотрю что там с NETMAP. Возможно, можно будет отказаться от iproute.

AYuusuke
16-12-2007, 13:43
Пока вы еще не разобрались с NETMAP, я поставил еще эксперимент. Тестировал только iproute2 правила (ниже по тексту видно).

Пингую адрес в антхилле, потому некоторые пакеты теряются, ну вы сами знаете какая у озерков линковка с антхиллом ;)

"ping 10.20.36.183" (настройки по умолчанию):


[admin@anthy root]$ tcpdump -n -i vlan1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan1, link-type EN10MB (Ethernet), capture size 68 bytes
15:58:03.115315 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 459, length 40
15:58:03.117777 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 459, length 40
15:58:04.117792 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 460, length 40
15:58:08.729143 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 461, length 40
15:58:08.745746 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 461, length 40
15:58:09.731992 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 462, length 40
[admin@anthy root]$ tcpdump -n -i br0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 68 bytes
15:58:03.115153 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 459, length 40
15:58:03.117992 IP 10.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 459, length 40
15:58:04.117633 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 460, length 40
15:58:08.728976 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 461, length 40
15:58:08.745886 IP 10.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 461, length 40
15:58:09.731827 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 462, length 40


Делаем


ip route add nat 2.0.0.0/8 via 10.0.0.0
ip rule add nat 2.0.0.0 from 10.0.0.0/8
ip route flush cache

Конечно это правило совсем не то что мне нужно, но будем проверять как это простое преобразование работает само по себе. Почти что пример из книжки.

"ping 10.20.36.183":


[admin@anthy root]$ tcpdump -n -i vlan1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan1, link-type EN10MB (Ethernet), capture size 68 bytes
16:02:27.112499 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 467, length 40
16:02:27.114954 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 467, length 40
16:02:31.691791 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 468, length 40
16:02:36.691114 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 469, length 40
16:02:41.690412 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 470, length 40
16:02:41.691577 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 470, length 40
[admin@anthy root]$ tcpdump -n -i br0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 68 bytes
16:02:27.112332 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 467, length 40
16:02:27.115121 IP 2.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 467, length 40
16:02:31.691623 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 468, length 40
16:02:36.690946 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 469, length 40
16:02:41.690244 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 470, length 40
16:02:41.691717 IP 2.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 470, length 40

Подмена source поля работает. На хосте в окне пинга "Превышен интервал ожидания для запроса". Пока все правильно.

Ждем минуту и делаем "ping 2.20.36.183":


[admin@anthy root]$ tcpdump -n -i vlan1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan1, link-type EN10MB (Ethernet), capture size 68 bytes
16:05:51.007108 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 477, length 40
16:05:51.023498 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 477, length 40
16:05:55.662083 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 478, length 40
16:05:55.664256 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 478, length 40
16:06:00.661375 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 479, length 40
16:06:00.666117 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 479, length 40
16:06:05.660651 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 480, length 40
16:06:05.671859 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 480, length 40
[admin@anthy root]$ tcpdump -n -i br0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 68 bytes
16:05:51.006936 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 477, length 40
16:05:55.661919 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 478, length 40
16:06:00.661200 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 479, length 40
16:06:05.660478 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 480, length 40

Ответы застряли где то внутри рутера.

Делаем "ping 10.20.36.183 -w 50" и сразу после этого "ping 2.20.36.183 -w 50":


[admin@anthy root]$ tcpdump -n -i vlan1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan1, link-type EN10MB (Ethernet), capture size 68 bytes
16:09:19.885091 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 506, length 40
16:09:19.895111 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 506, length 40
16:09:21.134841 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 507, length 40
16:09:21.138853 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 507, length 40
16:09:22.633631 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 508, length 40
16:09:24.133358 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 509, length 40
16:09:27.552651 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 510, length 40
16:09:27.555015 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 510, length 40
16:09:28.555700 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 511, length 40
16:09:29.633477 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 512, length 40
16:09:29.637206 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 512, length 40
16:09:30.639318 IP 192.168.30.54 > 10.20.36.183: ICMP echo request, id 1, seq 513, length 40
16:09:30.649347 IP 10.20.36.183 > 192.168.30.54: ICMP echo reply, id 1, seq 513, length 40
[admin@anthy root]$ tcpdump -n -i br0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 68 bytes
16:09:19.884839 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 506, length 40
16:09:19.895262 IP 2.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 506, length 40
16:09:21.134610 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 507, length 40
16:09:21.139002 IP 2.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 507, length 40
16:09:22.633392 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 508, length 40
16:09:24.133184 IP 10.0.17.76 > 10.20.36.183: ICMP echo request, id 1, seq 509, length 40
16:09:27.552409 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 510, length 40
16:09:27.555158 IP 2.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 510, length 40
16:09:28.555522 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 511, length 40
16:09:29.633313 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 512, length 40
16:09:29.637353 IP 2.20.36.183 > 10.0.17.76: ICMP echo reply, id 1, seq 512, length 40
16:09:30.639144 IP 10.0.17.76 > 2.20.36.183: ICMP echo request, id 1, seq 513, length 40

Работает и подмена source и подмена destination. На хосте в окне ping-а видны ответы :)

Как я интерпретирую полученный результат: где то все равно используется stateful преобразование, и пока нет запроса на 10.x.x.x, наши ответы с 2.x.x.x игнорируются. Когда проходит один запрос на 10.x.x.x - появляется запись в какой то таблице, и наши ответы на запрос уже на адрес 2.x.x.x приходят обратно по "соединению", оставшемуся от запроса на 10.x.x.x.

Посему вопрос: если мои рассуждения верны, то как называется эта таблица и где про нее можно прочитать?

Так же посмотрел что происходит на других интерфейсах - там все нормально, наши потерявшиеся пакеты на неправильный интерфейс не уходят.

dup!
29-12-2007, 15:59
To: Oleg
Я столкнулся с такой же проблемой NETMAP действительно битый (прошивка 1.9.2.7-8). У меня это проявляется тем что я не могу постаить правила для цепочки OUTPUT:

# iptables -t nat -A OUTPUT -d 192.168.0.0/16 -j NETMAP --to 10.24.0.0/16
iptables: Invalid argument
А правила для цепочки PREROUTING/POSTROUTING:

# iptables -t nat -A PREROUTING -d 192.168.0.0/16 -j NETMAP --to 10.24.0.0/16
Ставятся но неверно работают. Трансляция адреса происходит но младшие 16 бит содержат мусор, а не то что было в оригинальном адресе.

Это можно как-то исправить, так чтобы NETMAP работал как положено?

AntiMelk
31-12-2007, 15:48
Всех с новым годом !

Что-то никак не могу найти подходящее правило. Нужно чтобы машины с внутренней сети могли подключаться к vpn.

Заранее спасибо.

MMike
31-12-2007, 18:31
Это не правило iptables, a модуль conntrack ( connection tracking). Что-то типа ip_conntrack_pptp, как точно называется у Олега в прошивке сказать не могу, нет железки под рукой. Посмотри у себя в /lib/modules/<version>/kernel/net/ ....

Это если касательно pptp. IPSec работает и без трекинга ...

AntiMelk
31-12-2007, 19:44
Это не правило iptables, a модуль conntrack ( connection tracking). Что-то типа ip_conntrack_pptp, как точно называется у Олега в прошивке сказать не могу, нет железки под рукой. Посмотри у себя в /lib/modules/<version>/kernel/net/ ....

Это если касательно pptp. IPSec работает и без трекинга ...

Блин, нестыковочка вышла, у меня debian, contrack стоит или по у молчанию есть в тамошнем iptables...

MMike
01-01-2008, 10:16
Да у нас в Debiane :) лежат тут /lib/modules/<version>/kernel/net/netfilter/

по умолчанию в 2.6.23 есть такие:
nf_conntrack_amanda.ko
nf_conntrack_ftp.ko
nf_conntrack_h323.ko
nf_conntrack_irc.ko
nf_conntrack_pptp.ko нужный нам действительно есть
nf_conntrack_proto_gre.ko
nf_conntrack_proto_sctp.ko
nf_conntrack_proto_udplite.ko
nf_conntrack_sane.ko
nf_conntrack_sip.ko
nf_conntrack_tftp.ko

У Олега в прошивке, да и вообще по моему в 2.4м ядре должен называться ip_conntrack_pptp.

Так что ищите и обрящите :)

AntiMelk
02-01-2008, 09:10
Да у нас в Debiane :) лежат тут /lib/modules/<version>/kernel/net/netfilter/

по умолчанию в 2.6.23 есть такие:
nf_conntrack_amanda.ko
nf_conntrack_ftp.ko
nf_conntrack_h323.ko
nf_conntrack_irc.ko
nf_conntrack_pptp.ko нужный нам действительно есть
nf_conntrack_proto_gre.ko
nf_conntrack_proto_sctp.ko
nf_conntrack_proto_udplite.ko
nf_conntrack_sane.ko
nf_conntrack_sip.ko
nf_conntrack_tftp.ko

У Олега в прошивке, да и вообще по моему в 2.4м ядре должен называться ip_conntrack_pptp.

Так что ищите и обрящите :)

Так... странно что-то нет нужного файла...

xt_conntrack.ko - самое похожее

ядро 2.6.18.

MMike
02-01-2008, 09:41
Так... странно что-то нет нужного файла...

xt_conntrack.ko - самое похожее

ядро 2.6.18.

xt_conntrack.ko - это трекинг соединений (xt= eXtendedTracker ), так что это кусок нужного, но совсем не одно нужное для работы pptp.

Такс, тут интересно, где-то на уровне 2.6.20 произвели раздел на xt_ nf_ , соответственно у тебя должно быть ( если конечно не самосборное ядро, а стандартное майнтейнерсокое ) так (специально посмотрел на работе):

$ pwd
/lib/modules/2.6.18-4-amd64/kernel
$ find | grep pptp
./net/ipv4/netfilter/ip_conntrack_pptp.ko
./net/ipv4/netfilter/ip_nat_pptp.ko

AntiMelk
02-01-2008, 10:11
xt_conntrack.ko - это трекинг соединений (xt= eXtendedTracker ), так что это кусок нужного, но совсем не одно нужное для работы pptp.

Такс, тут интересно, где-то на уровне 2.6.20 произвели раздел на xt_ nf_ , соответственно у тебя должно быть ( если конечно не самосборное ядро, а стандартное майнтейнерсокое ) так (специально посмотрел на работе):

$ pwd
/lib/modules/2.6.18-4-amd64/kernel
$ find | grep pptp
./net/ipv4/netfilter/ip_conntrack_pptp.ko
./net/ipv4/netfilter/ip_nat_pptp.ko

Спасибо. Сейчас схожу полечусь, и посмотрю как эти файлы загрузить.

З.Ы.
А новые версии ядра работают медленнее старых ? (по анологии с windows)

MMike
02-01-2008, 12:41
Спасибо. Сейчас схожу полечусь, и посмотрю как эти файлы загрузить.

З.Ы.
А новые версии ядра работают медленнее старых ? (по анологии с windows)

Если по аналогии, то самое быстрое ядро в Вашем случае это 2.2.0 :D

Нет конечно, прямой корреляции между major версией ядра и его быстродействием нет. Бывают конечно "неудачные" версии, но это быстро решается.

Кстати .... ядро это только кусок самого линукса, все остальное прямого отношения к нему не имеет, ибо gnuтый софт работает и на xBSD и на соляре и еще на куче систем.

Раз уж назрел такой вопрос, то могу сказать так. Особого смысла постоянно переходить на более новые версии нет, конечно в том случае если все работает. В частности в дебиане вообще можно использовать только security fix, и жить себе спокойно. У меня в офисе один из серваков до сих пор живет на Сарже и 2.6.8 и что-то пока нет особой необходимости переходить выше.

Если смотреть на меня, то 2.6.23 с определенным пачсетом используется по одной причине, куча фишек моего ноута поддерживается начиная только с 2.6.23, а бэкпортить смысла не вижу. Да и работа обязывает быть в курсе нового ...

AntiMelk
02-01-2008, 17:04
Странно, загрузил модули через modprobe, не помогло.

Вбил правила
iptables -t nat -A PREROUTING -p tcp --dport 1723 -j DNAT --to xx.xx.xx.xx
iptables -t nat -A PREROUTING -p 47 -j DNAT --to xx.xx.xx.xx

Стало лучще, написало что удалённый узел не ответил на пакет.

Потом я поменял dns на тот что был на бумажке, он отличается от того, что выдало по dhcp... Что вообще довольно интересно... При этом пинг до vpn пошёл, а с роутера который получил dns по dhcp пинг до vpn не идёт...
В итоге мне написало что "vpn поключен к сети но не ответил на пакет. пожалуйста разрешите подключения через порт TCP 1723"

Сдаётся мне что не обязательно все проблемы на моей стороне.

MMike
02-01-2008, 19:39
Стоп.

Как я уже писал для работы pptp как таковой nat не нужен . Нужен pptp conntrack.

И что значит стало лучьше ? Покажи какие модули загружены:
# lsmod

От провайдера как подключение получаете ?

AntiMelk
02-01-2008, 20:13
Вот что выводит lsmod ,судя по всему требуемый модуль загружен.

router:~# lsmod
Module Size Used by
ip_nat_pptp 6020 0
ip_conntrack_pptp 10640 1 ip_nat_pptp
xt_tcpudp 3200 5
xt_state 2304 1
iptable_filter 3200 1
ipt_MASQUERADE 3584 1
iptable_nat 7044 1
ip_nat 16428 3 ip_nat_pptp,ipt_MASQUERADE,iptable_nat
ip_conntrack 47156 6 ip_nat_pptp,ip_conntrack_pptp,xt_state,ipt_MASQU ERADE,iptable_nat,ip_nat
nfnetlink 6680 2 ip_nat,ip_conntrack
ip_tables 12104 2 iptable_filter,iptable_nat
x_tables 12932 5 xt_tcpudp,xt_state,ipt_MASQUERADE,iptable_nat,ip _tables
wlan_tkip 11776 2
wlan_xauth 1792 0
bridge 48540 0
button 6800 0
ac 5252 0
battery 9732 0
ipv6 213984 18
wlan_wep 6528 0
wlan_scan_ap 5376 0
dm_snapshot 15644 0
dm_mirror 18000 0
dm_mod 48952 2 dm_snapshot,dm_mirror
loop 14216 0
evdev 9088 0
parport_pc 31524 0
parport 32200 1 parport_pc
floppy 52004 0
i2c_viapro 8340 0
serio_raw 6532 0
i2c_core 19472 1 i2c_viapro
rtc 11572 0
pcspkr 2816 0
psmouse 34568 0
via_ircc 22932 0
wlan_scan_sta 11520 0
via_agp 9728 1
irda 155836 1 via_ircc
ath_rate_sample 11264 1
ath_pci 81056 0
wlan 175812 8 wlan_tkip,wlan_xauth,wlan_wep,wlan_scan_ap,wlan_ scan_sta,ath_rate_sample,ath_pci
agpgart 29360 1 via_agp
shpchp 32796 0
pci_hotplug 28088 1 shpchp
crc_ccitt 2304 1 irda
ath_hal 191568 3 ath_rate_sample,ath_pci
ext3 116488 1
jbd 47272 1 ext3
ide_disk 14848 3
generic 4996 0 [permanent]
via_rhine 21768 0
via82cxxx 8452 0 [permanent]
ehci_hcd 27144 0
uhci_hcd 20236 0
ide_core 107760 3 ide_disk,generic,via82cxxx
usbcore 109444 3 ehci_hcd,uhci_hcd
8139too 24192 0
8139cp 20736 0
mii 5376 3 via_rhine,8139too,8139cp
thermal 13576 0
processor 23724 1 thermal
fan 4868 0
router:~#

Провайдер раздаёт инет через ip v4. Все адреса через dhcp, + привязка к mac-адресу. Выделенный IP есть.

Заетил что, когда я пытаюсь пинговать vpn ответ идёт от бриджа а не от интерфейса подключенного к провайдеру. Так что возможно он из-за этого не отвечает роутеру... Если прописать другой DNS на своей машине то пинг идёт, но и дрес vpn присваевается другой.

MMike
02-01-2008, 21:49
Модуль есть.

Судя по всему, если сеть по DHCP, то провайдер выдает "серые" адреса. Если это так, то скорее всего на их "бордере" где натируется внутр. сеть банально не настроен пропуск pptp через nat.

Как средство борьбы, можно использовать IPSec. Придется немного повозиться, но бонусы очевидны.

AntiMelk
02-01-2008, 22:48
Модуль есть.

Судя по всему, если сеть по DHCP, то провайдер выдает "серые" адреса. Если это так, то скорее всего на их "бордере" где натируется внутр. сеть банально не настроен пропуск pptp через nat.

Как средство борьбы, можно использовать IPSec. Придется немного повозиться, но бонусы очевидны.

Так адрес я выделенный купил...

И судя по всему проблема в роутере, vpn на прямую работает... ну по крайней мере работал неделю назад. Он от того же провайдера, но с траффиком и на 100 мегабит.
Тем более что при открытых портах он уже другую ощибку выдаёт.

zap
03-01-2008, 02:21
Пардон за длительное молчание, но в конце года как обычно, оказывается что есть ещё куча несделанных дел :-)

Посмотрел я исходники NETMAP. Ничего криминального в них нет, и асус ничего там не корёжила (собственно сами исходники просты как грабли, на две страницы).

Проблема просто в том, что модуль ipt_NETMAP использует ту же функцию, которая используется при NAT'е на диапазон адресов (т.е. например --DNAT --to-destination 10.0.0.0/8). А в ядре 2.4 не было предусмотрено, что если диапазон источника и целевых IP одинаковы, то нижняя часть адреса не меняется.

В ядре 2.6 сделали дополнительную проверку: если мы имеем правило вида:

-A PREROUTING -d 10.0.0.0/8 -j DNAT --to-destination 11.0.0.0/8

то есть в данном случае мы мапим друг на друга сети одинаковых размеров, в таком случае нижняя часть адреса не меняется. Иначе всё работает по старому алгоритму, то есть в диапазоне --to-destination случайным образом выбирается адрес (это то, что называли 'мусором').

Короче говоря, NETMAP на ядре 2.4 просто-напросто неработоспособен в том виде, в котором его имел в виду автор. Точнее говоря, он почти не отличается от обычного -j DNAT (если в цепочке PREROUTING) либо -j SNAT (если в цепочке POSTROUTING). Я не знаю, зачем асус его вставила в ядро 2.4, к тому же я видел, что они сами его используют в каких-то обстоятельствах. Я думаю, что он у них один фиг не работает.

К слову сказать, сам плагин расчитан исключительно на работу в цепочках PREPROCESSING и POSTPROCESSING таблицы nat. Других примерений не предусмотрено изначально, хотя для наших целей этого бы хватило, вот только ядро не той версии =)

Кстати, вот тут (http://www.linuxtopia.org/Linux_Firewall_iptables/x4471.html) написано явным образом, что работает только на ядрах 2.5 и 2.6.

Да, и ещё, я был неправ насчёт NAT: соединение отслеживается независимо от того, делаем мы NAT или простую подмену адресов. conntrack вообще работает независимо, он отслеживает вообще все соединения, а уже NAT использует данные из conntrack по необходимости.

AYuusuke
03-01-2008, 11:51
Короче говоря, NETMAP на ядре 2.4 просто-напросто неработоспособен в том виде, в котором его имел в виду автор. Точнее говоря, он почти не отличается от обычного -j DNAT (если в цепочке PREROUTING) либо -j SNAT (если в цепочке POSTROUTING).

Привет, zap!

Спасибо за разъяснение. Видимо не судьба. :p Из хорошего хочется заметить что свою проблему я смог решить почти без потерь с помошью одного только роутинга - не без известный Hawk посоветовал отдать адреса 10.0.0.0-10.31.255.255 Антхиллу, а 10.32.0.0-10.255.255.255 Корбине. Плюс я сделал парочку рутов на единичные важные ресуры, принадлежащие не своему диапазону (например 10.0.0.42 в Антхилл), и все вообщем работает. Можно даже сказать что как надо. Везение - это очень хорошо. :D

AntiMelk
03-01-2008, 22:34
Сегодня рано утром перезагрузил роутер поднял заново nat и всё заработало. Причём даже без загруженных модулей...

Соединение правда не установилось, но это уже скорее из-за провайдера.

AntiMelk
03-01-2008, 23:05
Так, наметился прогресс. Соединение устанавливается но никакго доступа в интернет не появляется (вернее даже пропадает - по nat). Затем через некоторое время соединение разрывается.

Завтра проверю, работает ли оно вообще, хоть на прямую.

MMike
04-01-2008, 19:24
Логи то сего процесса есть ? Может помочь в понимании процесса. А то как зубы по телефону лечить.

AntiMelk
05-01-2008, 10:26
Пока что время закончилось, сессия поджимает. Но логи конечно выложу, вечером.

AntiMelk
06-01-2008, 10:27
В виндовом логе это:

Тип события: Информация
Источник события: RemoteAccess
Категория события: Нет
Код события: 20159
Дата: 06.01.2008
Время: 13:09:27
Пользователь: Н/Д
Компьютер: 333
Описание:
", выполненное с помощью устройства "VPN1-1", было прервано.


Тип события: Информация
Источник события: Microsoft-Windows-User-PnP
Категория события: Нет
Код события: 20003
Дата: 06.01.2008
Время: 13:08:39
Пользователь: NT AUTHORITY\SYSTEM
Компьютер: 333
Описание:
Не получить значения разделов реестра. tunnel


Тип события: Информация
Источник события: RemoteAccess
Категория события: Нет
Код события: 20158
Дата: 06.01.2008
Время: 13:08:33
Пользователь: Н/Д
Компьютер: 333
Описание:
", с помощью устройства "VPN1-1".


Тип события: Информация
Источник события: RemoteAccess
Категория события: Нет
Код события: 20159
Дата: 06.01.2008
Время: 13:05:05
Пользователь: Н/Д
Компьютер: 333
Описание:
", выполненное с помощью устройства "VPN1-1", было прервано.

MMike
07-01-2008, 11:02
Мда, настолько информативные логи что взбесится можно :) Даже и не знаю что сказать ....

shell
15-01-2008, 14:22
подскажите пожалуйста как удобнее и лучше всего редактировать iptables с помощью чего и как, и вообще какие команды есть для этого - ктонить может подсказать плиз ? а то я внёс туда всякую гадость теперь всё виснет и тормазит, а убрать это не могу потому что не знаю как :(

angel_il
15-01-2008, 16:44
переделать правило которое с параметром log

Vollsky
16-01-2008, 05:37
подскажите пожалуйста как удобнее и лучше всего редактировать iptables с помощью чего и как, и вообще какие команды есть для этого - ктонить может подсказать плиз ?
Можно пользоваться через telnet встроенным редактором vi.
Описание команд в мануале по linux.
После не забыть записать во флеш.

Andrey_3
16-01-2008, 12:00
подскажите пожалуйста как удобнее и лучше всего редактировать iptables с помощью чего и как, и вообще какие команды есть для этого - ктонить может подсказать плиз ? а то я внёс туда всякую гадость теперь всё виснет и тормазит, а убрать это не могу потому что не знаю как :(


Наверное имеет смысл почитать руководство "Iptables Tutorial" в русском переводе http://gazette.linux.ru.net/rus/articles/iptables-tutorial.html

AntiMelk
16-01-2008, 16:32
Эта сессия меня в могилу сведёт...

Наконец-то появилось не много времени, какие именно нужны логи ? Конечно виндовые выглядят довольно забавно :D

Проявилась одна странность... через несколько дней после поднятия nat биткоммет перестаёт видеть внешний IP. И так до перезагрузки роутера. Nat в автогзагрузке не прописан, вбиваю вручную:


echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#этого в принципе достаточно, но по мануалу надо ещё две строки, для чего они нужны - ХЗ
/sbin/iptables -A FORWARD -i eth1 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i br0 -o eth1 -j ACCEPT

naves
16-01-2008, 17:33
попробуй уменьшить размер пакета до 1300 в винде через реестр для впн-подключений и проверь.
на сайте мелкомягких http://support.microsoft.com/kb/826159

AntiMelk
16-01-2008, 18:30
попробуй уменьшить размер пакета до 1300 в винде через реестр для впн-подключений и проверь.
на сайте мелкомягких http://support.microsoft.com/kb/826159

Большое спасибо - заработало, потом ввёл 1500, всёравно заработало но в два раза медленнее на закачку и в десть на отдачу.

Видимо просто в новый год всё упало, а поднимать было не кому.

AntiMelk
18-01-2008, 09:49
Вопрос "как правильнее поднимать nat ?" всё ещё открыт...

С биткометом я разобрался, но всё-таки хотелось бы узнать что делают последние две строки. :confused:

Mam(O)n
19-01-2008, 04:07
но всё-таки хотелось бы узнать что делают последние две строки. :confused:
Без полного листинга цепочки FORWARD смысл сих строк и для меня неясен. Тупо следующие правила можно прокоментировать так:


# Разрешаем прохождение транзитного трафика с интерфейса eth1 на интерфейс br0. Под правило попадают только установленные tcp сессии.
/sbin/iptables -A FORWARD -i eth1 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Разрешаем прохождение транзитного трафика с интерфейса br0 на интерфейс eth1.
/sbin/iptables -A FORWARD -i br0 -o eth1 -j ACCEPT

m0p3e
08-02-2008, 07:33
Добрый день!
Столкнулся со следующей проблемой.
Есть два роутера WL500G Premium (прошивка 1.9.2.7-8) в одной провайдерской сети. назовем их WL1 и WL2.


WL1 WL2
LAN 192.168.6.1 LAN 192.168.7.1
WAN 10.240.51.19 WAN 10.240.48.51
WAN Gate 10.240.51.1 WAN Gate 10.240.48.1

Оба успешно смотрят в интернет через vpn шлюз 10.254.0.1 (PPTP)

на роутерах заведены следующие маршруты
WL1
10.254.0.0 255.255.0.0 10.240.51.1 0 MAN
10.240.0.0 255.255.0.0 10.240.51.1 0 MAN

WL2
10.254.0.0 255.255.0.0 10.240.48.1 0 MAN
10.240.0.0 255.255.0.0 10.240.48.1 0 MAN

На WL2 поднят SSH. При попытке соединения (putty) из подсети WL1 на SSH WL2 пакеты появляются в списке дропнутых на WL2. Соединения нет.

Прописываю в post-firewall на WL2
#!/bin/sh
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -i vlan1 -p tcp --dport 22 -j DNAT --to-destination 192.168.7.1:22
iptables -A INPUT -j DROP

Сохраняем.Перегружаем. Вновь пытаемся соединиться на SSH WL2. Соединения нет. Черное окно putty появляется секунды на 3 и исчезает без какого либо сообщения. В списке дропнутых пакета тоже нет. В списке разрешенных нет тоже.

Что не так? Подскажите, плиз. Третий день уже бьюсь!

Ilmarinen
08-02-2008, 09:00
Добрый день!
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -i vlan1 -p tcp --dport 22 -j DNAT --to-destination 192.168.7.1:22
iptables -A INPUT -j DROP

Сохраняем.Перегружаем. Вновь пытаемся соединиться на SSH WL2. Соединения нет. Черное окно putty появляется секунды на 3 и исчезает без какого либо сообщения. В списке дропнутых пакета тоже нет. В списке разрешенных нет тоже.

Что не так? Подскажите, плиз. Третий день уже бьюсь!
Не очень понятно зачем делается DNAT. Хорошо бы посмотреть на вывод команд iptables INPUT -L -v --line-numbers и netstat -l | grep ssh
при этом стоит сохранить вывод первой команды до попытки коннекта и после. Хорошо бы убедиться с помощью tcpdump на стороне WL2 что пакеты с компьютера стоящего за WL1 вообще до WL2 доходят. В настройках putty кажется есть возможность не закрывать окно автоматически чтобы посмотреть что там написано. На асусе тоже есть ssh клиент, можно попробовать прямо с WL1 сделать ssh 10.240.48.51 и посмотреть результат.

m0p3e
08-02-2008, 11:56
Не очень понятно зачем делается DNAT.
По доке вроде положено. http://www.macsat.com/macsat/content/view/12/29/


Хорошо бы убедиться с помощью tcpdump на стороне WL2 что пакеты с компьютера стоящего за WL1 вообще до WL2 доходят.

Пакеты доходят. Заведен Virtual Server на WL2 (4899). С PC за WL1 на PC за WL2 RAdmin-ом конектится на ура. Т.е. PC(192.168.6.2)-WL1-WL2-PC(192.168.7.2).
На остальные вопросы смогу ответить только вечером.

m0p3e
09-02-2008, 07:21
Разобрался.
Уже непонятно после каких манипуляций, но правило в Virtual Server для RAdmin приняло вид 1-32000 192.168.7.131 4899 TCP. Со всеми вытекающими... 100% уверен, что вбивалось оно как 4899 192.168.7.131 4899 TCP.
И вторая причина лог DROP-нутых пакетов. Если его включить и выполнить:
#!/bin/sh
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
то ACCEPT на 22 порт оказывается после вызова logdrop, который в свою очередь дропает все пакеты.


Есть еще один вопрос. Можно ли между роутерами поднять VPN туннель?
Если да то как? OpenVPN?

Lupo_Alberto
25-02-2008, 09:22
Почему включение в роутере wl500gP "Internet Firewall" политика по умолчанию для iptables устанавливаются в ACCEPT?
На мой взгляд, правильнее всё запретить и добавить разрешения только на необходимое. Я очень уважаю мнение Oleg'а, но мне не понятно,с чем связана именно такая настройка Firewall на роутере?

Игорь
25-02-2008, 15:32
потому, что в случае запрета по умолчанию у многих пользователей не являющимися профессиональными линукс админами не будет шансов поработать в интернет. :)

djet
25-02-2008, 15:43
Политка - ACCEPT, но последнее правило - DROP. В чём премущество такого способа, пока не осознал.

Oleg
25-02-2008, 15:57
Почему включение в роутере wl500gP "Internet Firewall" политика по умолчанию для iptables устанавливаются в ACCEPT?
На мой взгляд, правильнее всё запретить и добавить разрешения только на необходимое. Я очень уважаю мнение Oleg'а, но мне не понятно,с чем связана именно такая настройка Firewall на роутере?
Потому что кроме ACCEPT/DROP есть ещё logaccept/logdrop, которые не могут использоваться в качестве дефолта.

Lupo_Alberto
25-02-2008, 23:53
Потому что кроме ACCEPT/DROP есть ещё logaccept/logdrop, которые не могут использоваться в качестве дефолта.
Возможно, я ошибаюсь, но политика по умолчанию это и есть то правило, которое применяется к пакетам, не удовлетворяющим ни одному из условий.
Т. е. нужно разрешить и залогировать в logaccept (если есть желание) только необходимые сервисы. Весь остальной траффик залогировать в logdrop (применяя, если надо, необходимые критерии - состояние соединения, флаги и т. д.). Далее применяется политика по умолчанию - DROP.

Политика "Всё что ЯВНО не разрешено - ЗАПРЕЩЕНО" считается более безопасной,чем "Всё РАЗРЕШЕНО, что ЯВНО не запрещено".

Меня ещё интересует такой вопрос, если в web-интерфейсе отключить Firewall, значит ли это, что политика iptables станет ACCEPT и не будет создано ни одного правила?

artp
11-03-2008, 22:14
Рассматривая результат iptables -vnL наткнулся на вот такое:
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30520 to:192.168.1.87:30520
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:14195 to:192.168.1.87:14195
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30521 to:192.168.1.119:30520
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30522 to:10.55.14.101:30520
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30523 to:192.168.1.101:30520

Адресов из блока 10.55 в сетке нет уже месяц. Кстати, 192.168.1.87 тоже даавно не выдается. Может мне кто-нибудь объяснить как эти "хвосты" вычистить? Они откуда-то из nvram должны ведь вылезать? в nat_rules соответствующие строки тоже есть. А он, если я правильно понимаю, должен генерироваться на взлете?

al37919
11-03-2008, 22:30
полагаю должно помочь отключение upnp

artp
12-03-2008, 20:29
помогло. спасибо

Sergey255
18-03-2008, 03:23
Помогите настроить камеру пожалуйста. Имеется камера с подключением по ethernet, камера сидит на внутреннем ip 192.168.1.10 на любом порте (можно выставить). Как получить доступ к ней через wan?

al37919
18-03-2008, 04:35
виртуальный сервер в веб морде

C_L_S
08-04-2008, 00:17
В Олеговой прошивки имеется
iptables :?, если да то как они дружат с firewall от асус...или это своего рода GUI для iptables?

azol
08-04-2008, 01:37
В Олеговой прошивки имеется
iptables :?,
конечно есть :-)
[admin@WL500gP root]$ ls -l /usr/sbin/iptables
-rwxr-xr-x 1 admin root 93768 Mar 30 11:52 /usr/sbin/iptables
[admin@WL500gP root]$ iptables -V
iptables v1.2.7a


если да то как они дружат с firewall от асус...или это своего рода GUI для iptables?
Куча всего (firewall, виртуальные сервера, ...) настраиваемое через web-интерфейс, как раз и создают "правила" для iptables.

Korse
16-04-2008, 16:10
Разъясните кто-нибудь

Как я понял
команда перебивает ip источника на 1.2.3.4:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

Вот непонятно что при этом происходит с портами если через шлюз выходят несколько клиентов (допустим 3 клиента на http сервер порт 80) при этом с одним и тем же портом 30150)
что сделает шлюз :

1 клиенту поменяет при выходе в internet адрес 1.2.3.4 оставив порт неизменным
2 клиенту поменяет и адрес и порт отличный от первого
3 клиенту поменяет адрес и порт отличный от 2 предыдущих.

а ответ на эти пакеты соответственно перепишет как-будто все 3 клиента общались с сервером без шлюза ?
Правильно ли я понял ?
И правил на обратное преобразование ответов из инета не надо ?

т.е шлюз помнит какое преобразование он делал и вернет все назад сам.

6opoga
17-04-2008, 09:06
Разъясните кто-нибудь

Как я понял
команда перебивает ip источника на 1.2.3.4:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

Вот непонятно что при этом происходит с портами если через шлюз выходят несколько клиентов (допустим 3 клиента на http сервер порт 80) при этом с одним и тем же портом 30150)
что сделает шлюз :

1 клиенту поменяет при выходе в internet адрес 1.2.3.4 оставив порт неизменным
2 клиенту поменяет и адрес и порт отличный от первого
3 клиенту поменяет адрес и порт отличный от 2 предыдущих.

а ответ на эти пакеты соответственно перепишет как-будто все 3 клиента общались с сервером без шлюза ?
Правильно ли я понял ?
И правил на обратное преобразование ответов из инета не надо ?

т.е шлюз помнит какое преобразование он делал и вернет все назад сам.

NAT не оставляет исходный порт, а выбирает очередной незанятый. ИП клиента и порт, а также порт с которого вышли записываются в специальную таблицу (ее, кстати, можно смотреть где-то в недрах /proc/net/...) и ответные пакеты роутятся куда надо автоматически (при этом никак не меняются).

Korse
17-04-2008, 10:33
Спасибо, прояснил.

Если перебивать не конкретный lan-ip на внешний ip , а целиком lan-сеть то iptables и с этим спокойно справится без конфликтования портов у lan клиентов?

И есть ли где дока про сам процесс nat 'a , т.е как все изнутри ?
А то постоянно либо на описание nat 'a , либо на описание команд iptables и нигде про сам процесс поэтапно?

lazyman
17-04-2008, 11:28
И есть ли где дока про сам процесс nat 'a , т.е как все изнутри ?
А то постоянно либо на описание nat 'a , либо на описание команд iptables и нигде про сам процесс поэтапно?

Есть вот здесь (http://iptables-tutorial.frozentux.net/iptables-tutorial.html). Это хорошее описание (можно уже книжкой назвать - по объему и стилю вполне тянет) iptables вообще и nat в частности.

ABATAPA
17-04-2008, 12:13
Есть вот здесь (http://iptables-tutorial.frozentux.net/iptables-tutorial.html). Это хорошее описание (можно уже книжкой назвать - по объему и стилю вполне тянет) iptables вообще и nat в частности.

Или более старый, но на русском:
www.opennet.ru/docs/RUS/iptables/

Еще настоятельно рекомендую:
http://lartc.org/

Korse
17-04-2008, 21:21
хоть и пробегал по этим докам,но
интересные моменты упустил:

SNAT (Source Network Address Translation) используется для изменения исходных адресов пакетов. С помощью этого действия можно
скрыть структуру локальной сети, а заодно и разделить единственный
внешний IP адрес между компьютерами локальной сети для выхода в
Интернет. В этом случае брандмауэр, с помощью SNAT, автоматически
производит прямое и обратное преобразование адресов, тем самым
давая возможность выполнять подключение к серверам в Интернете с
компьютеров в локальной сети.

Придется читать внимательней, хотя про порты ни слова

djet
08-06-2008, 21:49
Хотите разобраться - читайте исходники. Только не пойму, что за вопросы... Генерирует он эти файлы по содержимому nvram, потом запускает iptables-restore. Потом я дёргаю post-firewall...

А по каким событиям вызывается post-firewall впоследствие? Есть вручную поднятые vlan2 и ppp2, на обработку поднятия/падения которых бы хотелось его повесить.

OperVil
06-07-2008, 20:40
На интерфейсе vlan1 подключен провайдер. У провайдера статический айпи 172.25.103.36. С этого айпи видна сеть и интернет.

Мой сосед находится со мной на одном свиче этого провайдера и ему нужно дать доступ в сеть и инет. Т.к. он давно не платил у него нет своего айпи и я поставил на интерфейс vlan1 второй айпи 3.3.5.1 и ему 3.3.5.2. До покупки роутера я с помощью компа и Kerio Winroute давал ему доступ. Но теперь нужно это сделать под линуксом.

Помогите с правилом iptables что бы 3.3.5.2 мог видеть локалку и инет.

OperVil
07-07-2008, 21:31
Результаты ifconfig:

br0 Link encap:Ethernet HWaddr 00:1B:FC:D4:66:0F
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::21b:fcff:fed4:660f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11622 errors:0 dropped:0 overruns:0 frame:0
TX packets:9353 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4536244 (4.3 MiB) TX bytes:2789486 (2.6 MiB)

eth0 Link encap:Ethernet HWaddr 00:1B:FC:D4:66:0F
inet6 addr: fe80::21b:fcff:fed4:660f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21495 errors:0 dropped:0 overruns:0 frame:0
TX packets:21024 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:7776196 (7.4 MiB) TX bytes:7544079 (7.1 MiB)
Interrupt:4 Base address:0x1000

eth1 Link encap:Ethernet HWaddr 00:1B:FC:D4:66:0F
inet6 addr: fe80::21b:fcff:fed4:660f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:5
TX packets:0 errors:74 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:12 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:424 errors:0 dropped:0 overruns:0 frame:0
TX packets:424 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:36184 (35.3 KiB) TX bytes:36184 (35.3 KiB)

vlan0 Link encap:Ethernet HWaddr 00:1B:FC:D4:66:0F
inet6 addr: fe80::21b:fcff:fed4:660f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11623 errors:0 dropped:0 overruns:0 frame:0
TX packets:9355 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4582770 (4.3 MiB) TX bytes:2827054 (2.6 MiB)

vlan1 Link encap:Ethernet HWaddr 00:D0:B7:80:DB:7B
inet addr:172.25.103.36 Bcast:172.25.103.255 Mask:255.255.255.0
inet6 addr: fe80::2d0:b7ff:fe80:db7b/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9871 errors:0 dropped:0 overruns:0 frame:0
TX packets:11665 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2806434 (2.6 MiB) TX bytes:4716725 (4.4 MiB)

vlan1:0 Link encap:Ethernet HWaddr 00:D0:B7:80:DB:7B
inet addr:3.3.5.1 Bcast:3.3.5.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

AlexeiKozlov
06-08-2008, 08:04
Перезагрузка роутера,при изменение в virtual serve уже накладно.

может кто ,подкинуть примеров,как сделать все тоже самое с virtual server,только через iptables.

добавление,удаление

спасибо.

gaaronk
06-08-2008, 09:18
добавление

iptables -t nat -A VSERVER -p tcp -m tcp --dport 2222 -j DNAT --to-destination 1.2.1.2:2222

удаление

iptables -t nat -D VSERVER -p tcp -m tcp --dport 2222 -j DNAT --to-destination 1.2.1.2:2222

после ребута не сохраняется

колбаскин
06-08-2008, 09:56
добавление

iptables -t nat -A VSERVER -p tcp -m tcp --dport 2222 -j DNAT --to-destination 1.2.1.2:2222

удаление

iptables -t nat -D VSERVER -p tcp -m tcp --dport 2222 -j DNAT --to-destination 1.2.1.2:2222

после ребута не сохраняется

на роутере должны быть еще какие-то настройки чтобы проброска работала?

AlexeiKozlov
06-08-2008, 12:29
других настроек не надо для проброски порта.

спасибо за ответ.

колбаскин
06-08-2008, 12:47
других настроек не надо для проброски порта.

спасибо за ответ.

я так делаю и у меня программы не работают тем которым нужен открытый порт в интернет
почему я и спрашиваю - что еще нужно сделать?

EugeenB
06-08-2008, 15:29
я так делаю и у меня программы не работают тем которым нужен открытый порт в интернет
почему я и спрашиваю - что еще нужно сделать?
Во-первых, убрать мешающие правила, введенные Вами ранее через WEB-интерфейс и из файлов /usr/local/sbin/p*
Во-вторых, убедиться в том, что локальной программе нужны только эти два порта.

gaaronk
06-08-2008, 19:17
на роутере должны быть еще какие-то настройки чтобы проброска работала?

NAT Setting - Virtual Server - Enable Virtual Server? - Yes

колбаскин
06-08-2008, 19:18
NAT Setting - Virtual Server - Enable Virtual Server? - Yes

это включено... а все равно не работает проброска....

да и вообще...есть инструкция по настройке с нуля...
-не разобраны все параметры в веб интерфейсе роутера
-не могу найти как сделать доступным шару компьютера через роутер в сеть провайдера,и отдельно шару роутера
-пишется - можно разблокировать еще дополнительно 2 usb - как? я думаю купить usb hdd и засунуть его в роутер
-мне уже кучу советов давали как пробросить порты - но ни один совет так и не помог заставить правильно работать программы на компьютере(если включить кабель прямо в компьютер-то все работает) следовательно не помогли!

McNick
31-08-2008, 21:20
WL500gPV2 + oleg's FW 1.9.2.7-10.

Есть WAN-порт (клиент DHCP) на провайдера.
по дефолту WAN = vlan1. Так?

Из WAN-а виден рутерный ftp - сервер, что в моем случае не есть хорошо.
Вопрос - как ftp закрыть на WAN-е и оставить на vlan0 и vlan2 (домашняя и домовая сеть соотв) ?


iptables --insert INPUT 3 --destination 77.xxx.xxx.xxx --protocol tcp --destination-port 21 -j DROP
где 77.ххх.ххх.ххх - адрес полученый WAN-портом по DHCP
вопрос решает,

а вот

iptables --insert INPUT 3 --in-interface vlan1 --destination 0.0.0.0/0 --protocol tcp --destination-port 21 -j DROP

нет.

iptables -L -n -v подтверждает наличие правил в таблице.

Рабочий вариант опасен, а заменить не знаю на что.
Подскажите, плз, что делаю не так?

EugeenB
01-09-2008, 12:03
WL500gPV2 + oleg's FW 1.9.2.7-10.

Есть WAN-порт (клиент DHCP) на провайдера.
по дефолту WAN = vlan1. Так?

Из WAN-а виден рутерный ftp - сервер, что в моем случае не есть хорошо.
Вопрос - как ftp закрыть на WAN-е и оставить на vlan0 и vlan2 (домашняя и домовая сеть соотв) ?


iptables --insert INPUT 3 --destination 77.xxx.xxx.xxx --protocol tcp --destination-port 21 -j DROP
где 77.ххх.ххх.ххх - адрес полученый WAN-портом по DHCP
вопрос решает,

а вот

iptables --insert INPUT 3 --in-interface vlan1 --destination 0.0.0.0/0 --protocol tcp --destination-port 21 -j DROP

нет.
Подскажите, плз, что делаю не так?Вполне можно настроить независимо от адреса:
iptables -i INPUT 1 -i vlan1 -p tcp --dport 21 -j DROP

McNick
01-09-2008, 17:49
Вполне можно настроить независимо от адреса:
iptables -i INPUT 1 -i vlan1 -p tcp --dport 21 -j DROP

так вот как раз не работает! :mad:
Только что проверил то же самое по vlan2 - поведение такое же.
Если указать айпи адрес явно - все ок, если через -i vlanХ - не работает.

может что в настройках самих vlan-ов не так?
но почему же тогда в настройках маршрутов route add ... те же vlan-ы отлично работают?! да и в настройках маскарада тоже нормально все работает через vlan...:confused:

EugeenB
01-09-2008, 19:57
так вот как раз не работает! Ну, чтож, тогда показывайте Ваш ifconfig -a, iptables -nL и iptables -t nat -nL

McNick
02-09-2008, 10:41
Ну, чтож, тогда показывайте Ваш ifconfig -a, iptables -nL и iptables -t nat -nL



ifconfig -a

br0 Link encap:Ethernet HWaddr 00:1F:C6:69:C7:CC
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::21f:c6ff:fe69:c7cc/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:202916 errors:0 dropped:0 overruns:0 frame:0
TX packets:203544 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12270920 (11.7 MiB) TX bytes:15552969 (14.8 MiB)

eth0 Link encap:Ethernet HWaddr 00:1F:C6:69:C7:CC
inet6 addr: fe80::21f:c6ff:fe69:c7cc/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10075 errors:0 dropped:0 overruns:0 frame:0
TX packets:29765 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:3162440 (3.0 MiB) TX bytes:2720771 (2.5 MiB)
Interrupt:4 Base address:0x1000

eth1 Link encap:Ethernet HWaddr 00:1F:C6:69:C7:CC
inet6 addr: fe80::21f:c6ff:fe69:c7cc/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:202908 errors:0 dropped:0 overruns:0 frame:27866
TX packets:228507 errors:1 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:15111584 (14.4 MiB) TX bytes:18684028 (17.8 MiB)
Interrupt:13 Base address:0x5000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:57334 errors:0 dropped:0 overruns:0 frame:0
TX packets:57334 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4939070 (4.7 MiB) TX bytes:4939070 (4.7 MiB)

sit0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

vlan0 Link encap:Ethernet HWaddr 00:1F:C6:69:C7:CC
inet6 addr: fe80::21f:c6ff:fe69:c7cc/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:25179 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1646610 (1.5 MiB)

vlan1 Link encap:Ethernet HWaddr 00:1F:C6:69:C7:CC
inet addr:77.XXX.XXX.XXX Bcast:77.YYY.YYY.YYY Mask:255.255.240.0
inet6 addr: fe80::21f:c6ff:fe69:c7cc/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2619 errors:0 dropped:0 overruns:0 frame:0
TX packets:1656 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1986077 (1.8 MiB) TX bytes:789205 (770.7 KiB)

vlan2 Link encap:Ethernet HWaddr 00:1F:C6:69:C7:CC
inet addr:10.17.15.60 Bcast:10.17.15.255 Mask:255.255.255.0
inet6 addr: fe80::21f:c6ff:fe69:c7cc/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7456 errors:0 dropped:0 overruns:0 frame:0
TX packets:2928 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:995013 (971.6 KiB) TX bytes:284808 (278.1 KiB)




iptables -nL

Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
DROP tcp -- 0.0.0.0/0 77.XXX.XXX.XXX tcp dpt:80
DROP tcp -- 0.0.0.0/0 77.XXX.XXX.XXX tcp dpt:21
DROP tcp -- 0.0.0.0/0 10.17.15.60 tcp dpt:80
DROP tcp -- 0.0.0.0/0 10.17.15.60 tcp dpt:23
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
ACCEPT tcp -- 0.0.0.0/0 192.168.1.1 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
DROP all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate DNAT

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain MACS (0 references)
target prot opt source destination

Chain SECURITY (0 references)
target prot opt source destination
RETURN tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x16/0x02 limit: avg 1/sec burst 5
RETURN tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 1/sec burst 5
RETURN udp -- 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
RETURN icmp -- 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain logaccept (0 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 state NEW LOG flags 7 level 4 prefix `ACCEPT '
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

Chain logdrop (0 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 state NEW LOG flags 7 level 4 prefix `DROP '
DROP all -- 0.0.0.0/0 0.0.0.0/0





iptables -t nat -nL

Chain PREROUTING (policy ACCEPT)
target prot opt source destination
VSERVER all -- 0.0.0.0/0 77.XXX.XXX.XXX
NETMAP udp -- 0.0.0.0/0 77.XXX.XXX.XXX udp spt:6112 192.168.1.0/24

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
NETMAP udp -- 192.168.1.0/24 0.0.0.0/0 udp dpt:6112 77.XXX.XXX.XXX/32
MASQUERADE all -- !77.XXX.XXX.XXX 0.0.0.0/0
MASQUERADE all -- 192.168.1.0/24 192.168.1.0/24
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain VSERVER (1 references)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8088 to:192.168.1.1:80

77.ххх.ххх.ххх и 77.YYY.YYY.YYY это айпи адрес и маска соотв.

И не спрашивайте откуда в таблицах столько мусора -
это после стандартной загрузки рутера.
Мои только пара строчек касательно маскарада и блока 21, 23, 80 портов на двух интерфейсах.

Выводы команд показывают конфигурацию, когда все работает так, как хотелось, но при использовании в аргументах iptables -d xxx.xxx.xxx.xxx , а не -i vlanX .

Но вопрос собссно о том, что iptables понимает -d xxx.xxx.xxx.xxx и не понимает [I]-i vlanX [/].

shell
03-09-2008, 06:55
Народ, кто знает плиз помогите - непонятно почему, но обязательно раз в сутки сбрасываются настройки iptables, а также не выполняются файлы post-mount, post-boot, post-firewall почему непонятно - все файлы исполняемые, каждый раз отваливается флэшка, приходится мапить по новой. Роутер сидит на упсе который его продержит сутки так что проблема не из-за отключения эл-ва, скачков напряжения и т.д.

Andyz
03-09-2008, 17:07
оо... я немного не о том подумал...
А раз в сутки это не 23:59 ??
в это время по умолчанию замыкается правило активности Wi-Fi, на который, наверное, роутер должен перезапускать iptables. Хотя при загрузке, например, он им flush не делает, все что сидело в post-boot остается в таблесах.

По поводу флешки, думаю, надо ее в постбуте руками монировать к /tmp/harddisk and so on... ну и записать все во флеш

EugeenB
03-09-2008, 17:24
Мои только пара строчек касательно маскарада и блока 21, 23, 80 портов на двух интерфейсах.

Выводы команд показывают конфигурацию, когда все работает так, как хотелось, но при использовании в аргументах iptables -d xxx.xxx.xxx.xxx , а не -i vlanX .

Но вопрос собссно о том, что iptables понимает -d xxx.xxx.xxx.xxx и не понимает [I]-i vlanX [/].С ума сойти!
Давайте попробуем с чистого листа (без Ваших правил с адресом) ввести
iptables -i INPUT 1 -i vlan1 -p tcp --dport 21 -j DROP
потом посмотреть наличие правила,
iptables -vnL
(обратите внимание на "v")
смотрим, как изменилась доступность FTP.

Достойна внимания и эта вот засада:

Chain PREROUTING (policy ACCEPT)
target prot opt source destination
VSERVER all -- 0.0.0.0/0 77.XXX.XXX.XXX

[...]

Chain VSERVER (1 references)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8088 to:192.168.1.1:80 , дающая доступ к ВЕБ-интерфейсу снаружи по порту 8080...

EugeenB
03-09-2008, 17:58
Народ, кто знает плиз помогите - непонятно почему, но обязательно раз в сутки сбрасываются настройки iptablesНаверное потому, что Вы не купили правильный роутер - WL500gP.

Andyz
03-09-2008, 19:14
EugeenB, простите, а по какому роутеру этот форум и раздел форума :confused: ...при том что видимо стоит олеговская прошивка...

EugeenB
03-09-2008, 22:42
EugeenB, простите, а по какому роутеру этот форум и раздел форума :confused: ...при том что видимо стоит олеговская прошивка...Судя по наименованию форума, должны обсуждать wl500g, разновидностей которых, я насчитал с пол-дюжены (всякие там 500gx, 500gw и др). Но кроме этого, обсуждаются также 700gE, 520gC, 320gE, 520gU и др.

McNick
04-09-2008, 12:10
С ума сойти!


??


Давайте попробуем с чистого листа (без Ваших правил с адресом) ввести
iptables -i INPUT 1 -i vlan1 -p tcp --dport 21 -j DROP
потом посмотреть наличие правила,
iptables -vnL
(обратите внимание на "v")
смотрим, как изменилась доступность FTP.


правило есть.


iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- vlan1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
1176 74130 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
29 1740 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
32 3572 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
4 1312 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:80
3 192 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
2 458 DROP all -- * * 0.0.0.0/0 0.0.0.0/0


на ftp:// захожу запросто.
о чем и говорил в стартовом посте.



Достойна внимания и эта вот засада:

Chain PREROUTING (policy ACCEPT)
target prot opt source destination
VSERVER all -- 0.0.0.0/0 77.XXX.XXX.XXX

[...]

Chain VSERVER (1 references)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8088 to:192.168.1.1:80 , дающая доступ к ВЕБ-интерфейсу снаружи по порту 8080...


спокуха!
все задумано и под контролем!

EugeenB
04-09-2008, 12:45
iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- vlan1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
1176 74130 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
29 1740 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state NEW
32 3572 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 state NEW
4 1312 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:80
3 192 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
2 458 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Правила у Вас все в порядке. И первое из них НЕ отменяется предпоследним. ФТП с WAN не может быть доступен, если только в каких-нибудь конфигах ФТП сервера не установлен ДРУГОЙ порт...

на ftp:// захожу запросто.
о чем и говорил в стартовом посте.Зато у меня появилась мысль: а как Вы проверяли доступность ФТП из WAN? Вы перетыкали провод от своего ПК/ноутбука в WAN и пробовали достучаться? Или пробовали зайти на свой ФТП с ПК друга/соседа/"со служебного" ФИЗИЧЕСКИ находящегося со стороны WAN?

McNick
04-09-2008, 13:49
Правила у Вас все в порядке. И первое из них НЕ отменяется предпоследним. ФТП с WAN не может быть доступен, если только в каких-нибудь конфигах ФТП сервера не установлен ДРУГОЙ порт...


я тоже подозреваю, что не может. Потому и пишу сюда.



Зато у меня появилась мысль: а как Вы проверяли доступность ФТП из WAN? Вы перетыкали провод от своего ПК/ноутбука в WAN и пробовали достучаться? Или пробовали зайти на свой ФТП с ПК друга/соседа/"со служебного" ФИЗИЧЕСКИ находящегося со стороны WAN?

Я из своей домашней 192.168.1.0 сетки по внешнему адресу 77.ххх.ххх.ххх захожу фтп клиентом. снаружи, честно гря, не пробовал.
Хотя мысль о том, что если ходить как я, то пакет до уровня интерфейса не опускается, очень своевременна! Угадал? ;)

Ну тогда вопрос блока порта снаружи требует формальной проверки. ;)

.. и остается закрыться от "внутренних" сетей!
как правильно это сделать?
и желательно так, чтобы внутренние сети видели каждая свой ФТП-сервер.

EugeenB
04-09-2008, 17:18
Я из своей домашней 192.168.1.0 сетки по внешнему адресу 77.ххх.ххх.ххх захожу фтп клиентом. снаружи, честно гря, не пробовал.Гы-гы-гы-гы :)
Ушам/глазам своим не верю: три года переписки по пустому поводу...

Хотя мысль о том, что если ходить как я, то пакет до уровня интерфейса не опускается, очень своевременна! Угадал? ;)Причём здесь "опускается"? Мы же фильтруем трафик пришедший на интерфейс vlan1, а тестируете Вы пакетами с интерфейса br0, вот они и пролазиют.

.. и остается закрыться от "внутренних" сетей!
как правильно это сделать? и желательно так, чтобы внутренние сети видели каждая свой ФТП-сервер.Это все через критерии -s и -mac-source в iptables.

shell
05-09-2008, 09:41
wl500gP роутер стоит Олеговская прошивка последняя ...

EugeenB
05-09-2008, 12:40
wl500gP роутер стоит Олеговская прошивка последняя ...Это хорошо, что собщили такие подробности, но поскольку ни у кого больше не сбрасываются настройки, и файлы скриптов в /tmp/local/sbin/ - выполняются, то либо Вы не полностью выпонили рекомендации из темы: http://wl500g.info/showthread.php?t=3171 , либо после настроек внесли какие-нибудь изменения. Какие Вы внесли изменения - догадаться не представляется возможным, а Вы нам не рассказываете. Пока Вы будете скрытничать - помочь Вам будет трудно.

shell
08-09-2008, 07:53
хех, вот заметил такая тенденция ровно гдето в 00:00 сбрасываются iptables при этом флэшка не размонтируется и все запущенные приложения тоже работают как раньше т.е. всё норм кроме файрвола - что очень странно, ну а что я скрытничаю то ? говорю же в post-firewall правила заведены, chmod +x на все эти файлы проставлен так что я даже и не знаю в чем может быть причина :(((, началось всё кстати после подключения принтера по ЮСБ м.б. по той инструкции (подключения принтера) вносятся какие-то изменения... хотя причем тут iptables непонятно =(((

McNick
09-09-2008, 11:41
Гы-гы-гы-гы :)
Ушам/глазам своим не верю: три года переписки по пустому поводу...


Очень полезный коммент, кста! :confused:



Мы же фильтруем трафик пришедший на интерфейс vlan1, а тестируете Вы пакетами с интерфейса br0, вот они и пролазиют.


vlan1 имеет уникальный АйПи адрес. И соотв, наоборот - конкретный АйПи-адрес присвоен конкретному интерфейсу - vlan1.
Т.е. в смысле iptables они есть одно и то же. Просто "названия разные".
И пох с какого АйПи/интерфейса/br0 пришел пакет...

Или все-таки для iptables vlan1 и его адрес по сути своей не одно и тоже?
тогда в чем отличия?

Если я без проблем дропаю пакеты пришедшие с любого адреса на айпи-адрес vlan1, то почему они не дропаются просто указанием непосредственно vlan1?

EugeenB
09-09-2008, 12:31
Очень полезный коммент, кста! :confused:- просто взрыв эмоций.
Вот, Вы не написали: протестировали ли Вы свой файрвол, подключившись с WAN порта, или просто переписываетесь со мной.

vlan1 имеет уникальный АйПи адрес. И соотв, наоборот - конкретный АйПи-адрес присвоен конкретному интерфейсу - vlan1. Интерфейс может не иметь IP вообще (не быть проинициализированым) и на один интерфейс можно назначить несколько IP адресов.

Т.е. в смысле iptables они есть одно и то же. Просто "названия разные".
И пох с какого АйПи/интерфейса/br0 пришел пакет...
Нет не одно и то же.


Или все-таки для iptables vlan1 и его адрес по сути своей не одно и тоже?тогда в чем отличия?Здание одно, но над одним входом висит табличка "Прод-маг", а над другим входом две таблички: "Сберкасса" и "Узел связи", но внутри имеется общий коридор с санитарным узлом. И это два разных правила: "отстреливать любого, кто вошел во второй подъезд" и "отстреливать любого, кто вошел в узел связи".

Если я без проблем дропаю пакеты пришедшие с любого адреса на айпи-адрес vlan1, то почему они не дропаются просто указанием непосредственно vlan1?Потому, что в правилах написано дропать пакеты, пришедшие на указаный IP. Вот они и дропаются отовсюду.
А пакеты пришедшие на br0 не дропаются правилом, запрещающим приём пакетов из vlan1.

McNick
09-09-2008, 13:30
-Здание одно, но над одним входом висит табличка "Прод-маг", а над другим входом две таблички: "Сберкасса" и "Узел связи", но внутри имеется общий коридор с санитарным узлом. И это два разных правила: "отстреливать любого, кто вошел во второй подъезд" и "отстреливать любого, кто вошел в узел связи".


Хороший примерчик! :)
Наглядный такой!

Может еще и ссылку дадите, где все эти линуховые коридорчики, санузлы, подъезды, снайпер iptables и его секторы обстрела красиво нарисованы?

EugeenB
09-09-2008, 14:36
Вот уже третий раз спрашиваю Вас: какой результат доступности FTP (при использовании правила iptables -i INPUT 1 -i vlan1 -p tcp --dport 21 -j DROP) если стучаться с компьютера, физически находящегося с wan-стороны роутера?

Может еще и ссылку дадите, где все эти линуховые коридорчики, санузлы, подъезды, снайпер iptables и его секторы обстрела красиво нарисованы?Я предпочитаю пользоваться вот этой докой.
http://www.opennet.ru/docs/RUS/iptables/
Она - с картинками

EugeenB
09-09-2008, 15:22
хех, вот заметил такая тенденция ровно гдето в 00:00 сбрасываются iptables при этом флэшка не размонтируется и все запущенные приложения тоже работают как раньше т.е. всё норм кроме файрвола - что очень странно,У некоторых провайдеров, раз в сутки, чаще всего в полночь, заканчивается суточный срок аренды IP-адреса для клиентов. Клиентам выдаются новые IP-адреса.
Почему при этом сбрасываются настройки iptables? - надо смотреть файлы конфигурации.

ну а что я скрытничаю то ? говорю же в post-firewall правила заведены, chmod +x на все эти файлы проставлен так что я даже и не знаю в чем может быть причина :(((,Смотрим файл /tmp/local/sbin/post-firewall, для того чтоб убедится - права доступа выставлены правильные, выполняем
ls -l /tmp/local/sbin/
вывод сообщаем сюда.
Дальше, внимательно разглядываем первую строчку этого файла: есть ли там волшебное слово "#!/bin/sh", не перескочило ли оно "случайно" на вторую строчку, не добавился ли какой лишний пробел или "^M" к ней.
Какой результат? Собщите вывод
cat /tmp/local/sbin/post-firewall
Для проверки того, что скрипт выполняется-таки, вставляем второй строкой
date >> /tmp/firewall.log.txt
И через несколько дней смотрим улов в этом файле - выполнялся ли скрипт когда и как.

al37919
09-09-2008, 15:46
firewall сбрасывается при разрыве соединения и при установлении нового соединения каждый раз выполняется post-firewall. Так что проблема, действительно, в том --- почему не запускается (или вылетает) post-firewall

Andyz
09-09-2008, 23:28
хех, вот заметил такая тенденция ровно гдето в 00:00 сбрасываются iptables
в 23:59 замыкается правило включения/выключения RF Wi-Fi.
Возможно, должны перезапуститься iptables?
Но не понятно, почему у Вас 1)происходит их полный flush 2)почему не выполняется post-firewall.

За своим я пока такого не заметил, хотя только начал пользоваться, еще не поборол тормознутость и нек. моменты настойки.

vectorm
10-09-2008, 08:50
Добавлю свои 5 копеек :)
Запуск скриптов из-под_системной_учетки отличается от запуска из-под_юзера.
Раз при рестарте роутера все пашет, то проверять конфигурацию админа, возможно пути разные для шеллов прописаны.

shell
10-09-2008, 12:03
Я юзаю WinSCP для доступа к роутеру через dropbear так что по директориям хожу через него и команды тоже через него лью.
в директории /tmp/local/sbin:
post-boot-свойства файла 0777

#!/bin/sh
if [ -w /dev/usb/lp0 ]
#!/bin/sh
dropbear -p 2120 > /dev/null 2>&1
#!/bin/sh
/opt/bin/dbhub
#!/bin/sh
# Printer
/bin/echo "/usr/local/sbin/hotplug.sh" >> /proc/sys/kernel/hotplug

post-firewall-свойства файла 0777

#!/bin/sh
if [ -w /dev/usb/lp0 ]
#!/bin/sh
iptables -I INPUT -p tcp --dport 411 -j ACCEPT
iptables -I INPUT -p tcp --dport 2120 -j ACCEPT
#!/bin/sh
post-mount - 0777

#!/bin/sh
if [ -w /dev/usb/lp0 ]
#!/bin/sh
mount -obind /tmp/harddisk/opt /opt
pre-shoudown

#!/bin/sh
if [ -w /dev/usb/lp0 ]
#!/bin/sh

usb_printerid - 0777
sihpP1006.dl - 0777
hotplug.sh - 0777

#!/bin/sh
PRN_BIN=/usr/local/sbin/usb_printerid
PRN_FRM=/usr/local/sbin/sihpP1006.dl
if [ "$ACTION" = "add" ] || [ "$1" = "usb" ] || [ "$DEVFS" = "/proc/bus/usb" ]; then
sleep 5
$PRN_BIN /dev/usb/lp0 | grep -q FWVER || cat $PRN_FRM > /dev/usb/lp0
fi
killall hotplug.sh

больше в этой директории файлов нет :(.
папки /usr/local/sbin /tmp/local/sbin идентичные



Смотрим файл /tmp/local/sbin/post-firewall, для того чтоб убедится - права доступа выставлены правильные, выполняем
ls -l /tmp/local/sbin/
/tmp/local/sbin$ ls -l /tmp/local/sbin/
-rwxrwxrwx 1 admin root 278 Sep 9 19:33 hotplug.sh
-rwxrwxrwx 1 admin root 189 Sep 9 19:32 post-boot
-rwxrwxrwx 1 admin root 147 Aug 19 20:26 post-firewall
-rwxrwxrwx 1 admin root 78 Aug 19 20:25 post-mount
-rwxrwxrwx 1 admin root 43 Aug 19 20:53 pre-shutdown
-rwxrwxrwx 1 admin root 222555 Aug 19 20:16 sihpP1006.dl
-rwxrwxrwx 1 admin root 5800 Aug 19 20:14 usb_printerid

cat /tmp/local/sbin/post-firewall

/tmp/local/sbin$ cat /tmp/local/sbin/post-firewall
#!/bin/sh
if [ -w /dev/usb/lp0 ]
#!/bin/sh
iptables -I INPUT -p tcp --dport 411 -j ACCEPT
iptables -I INPUT -p tcp --dport 2120 -j ACCEPT
#!/bin/sh

al37919
10-09-2008, 12:16
из всех файлов уберите эту строку:
if [ -w /dev/usb/lp0 ]

Далее, #!/bin/sh в каждом файле должно стоять один раз в начале самой первой строки.

И, наконец, я бы еще раз перепроверил, что при таком способе редактирования символы концов строк получаются правильные --- ( LF без CR ).

vectorm
10-09-2008, 14:21
И, наконец, я бы еще раз перепроверил, что при таком способе редактирования символы концов строк получаются правильные --- ( LF без CR ).
Это просто - в MC прекрасно видны "левые" концы строк.

EugeenB
10-09-2008, 15:53
cat /tmp/local/sbin/post-firewall
/tmp/local/sbin$ cat /tmp/local/sbin/post-firewall
#!/bin/sh
if [ -w /dev/usb/lp0 ]
#!/bin/sh
iptables -I INPUT -p tcp --dport 411 -j ACCEPT
iptables -I INPUT -p tcp --dport 2120 -j ACCEPT
#!/bin/shВ этом файле у Вас стоит оператор "if", не имеющий парного завершающего оператора "fi"; кроме того, нарушен его синтаксис, поэтому этот файл /tmp/local/sbin/post-firewall будет выполняться до второй строчки, после чего - вываливаться с синтаксической ошибкой. Поэтому и правила в iptables не восстанавливаются.

shell
10-09-2008, 16:32
из всех файлов уберите эту строку:
if [ -w /dev/usb/lp0 ]

Далее, #!/bin/sh в каждом файле должно стоять один раз в начале самой первой строки.

И, наконец, я бы еще раз перепроверил, что при таком способе редактирования символы концов строк получаются правильные --- ( LF без CR ).


В этом файле у Вас стоит оператор "if", не имеющий парного завершающего оператора "fi"; кроме того, нарушен его синтаксис, поэтому этот файл /tmp/local/sbin/post-firewall будет выполняться до второй строчки, после чего - вываливаться с синтаксической ошибкой. Поэтому и правила в iptables не восстанавливаются.

Большое спасибо, всё сделал как вы написали, вроде всё заработало как надо теперь при перезагрузке роутера настройки iptables применяются корректно!

BladeRazoR
18-09-2008, 19:36
Всем привет :) Помогите пожалуйста, вторую неделю бьюсь с проблемой а решения так и не нашел.
Имеется asus WL500GPV2 с прошивкой WL500gpv2-1.9.2.7-10 от Олега и интернет провайдер Уфанет. Подключение к интернету происходит по VPN туннелю.
Так же провайдер дает два учетные записи для подключения:

1.Для доступа к локальным ресурсам, скорость до 10Мбит/c;
2.Основной доступ к интернет, доступ к локальным ресурсам ограничивается скоростью доступа к интернет ресурсам(128кбит/c).

Как поднять два VPN туннеля разобрался, а вот как распределить траффик непонятно. Может быть и туннели не правильно настроены.
Ход моих действий:


cp /tmp/ppp/options.wan0 /tmp/local/sbin/options.wan1
cd /tmp/local/sbin

Правлю options.wan1 (user 'user_name1', password 'pass_word1', unit 0) -> (user 'user_name2', password 'pass_word2', unit 1).

noauth refuse-eap
user 'user_name2'
password 'pass_word2'
connect true
sync pty '/usr/sbin/pptp --idle-wait 0 10.8.0.1 --nolaunchpppd --nobuffer --sync'
lock
nomppe-stateful -mppc mtu 1400
maxfail 0
usepeerdns
persist
ipcp-accept-remote ipcp-accept-local noipdefault
ktune
default-asyncmap nopcomp noaccomp
novj nobsdcomp nodeflate
lcp-echo-interval 10
lcp-echo-failure 6
unit 1

Дальше подключаю второй VPN

pppd file options.wan1
по логам роутера видно что второй туннель поднялся:

Sep 18 22:27:52 pppd[316]: Serial connection established.
Sep 18 22:27:52 pppd[316]: Using interface ppp1
Sep 18 22:27:52 pppd[316]: Connect: ppp1 <--> /dev/pts/2
Sep 18 22:27:53 pppd[316]: CHAP authentication succeeded: Welcome
Sep 18 22:27:53 pppd[316]: local IP address 172.27.15.31
Sep 18 22:27:53 pppd[316]: remote IP address 10.8.0.8
Sep 18 22:27:53 pppd[316]: primary DNS address 81.30.199.5
Sep 18 22:27:53 pppd[316]: secondary DNS address 81.30.199.94

Дальше не знаю, как настроить, что бы локальный трафик шёл через ppp1, а внешний через ppp0.

Подскажите пожалуйста как это настроить?

пробовал из соседней темы добавлять маршруты:

route add -net 77.79.128.0/18 dev ppp1
route add -net 81.30.192.0/19 dev ppp1
route add -net 81.30.176.0/20 dev ppp1
route add -net 89.189.128.0/19 dev ppp1
#route add -net 172.27.0.0/16 dev ppp1
route add -net 92.50.128.0/18 dev ppp1
#route add -net 94.41.0.0/16 dev ppp1
route add -net 194.0.68.0/22 dev ppp1
#route add -net 79.140.16.0/20 dev ppp1
route add -net 193.84.31.0/27 dev ppp1

route add -net 192.168.0.0/16 dev ppp1
route add -net 172.16.0.0/12 dev ppp1
route add -net 10.0.0.0/8 dev ppp1

route add -host 81.30.199.50 dev ppp0
route add -host 81.30.199.69 dev ppp0
route add -host 81.30.197.10 dev ppp0
route add -host 81.30.199.238 dev ppp0


Но после их добавления доступа к локальным ресурсам нет, хотя тотже google.ru работает и с самого роутере всё ресурсы как локальные так и внешние пингуются.

BladeRazoR
19-09-2008, 08:16
то что у меня в таблице маршрутов по умочанию:


Destination Gateway Genmask Flags Metric Ref Use Iface
10.8.0.1 10.68.108.1 255.255.255.255 UGH 0 0 0 WAN vlan1
10.8.2.1 10.68.108.1 255.255.255.255 UGH 0 0 0 WAN vlan1
10.8.3.1 10.68.108.1 255.255.255.255 UGH 0 0 0 WAN vlan1
10.8.3.1 10.68.108.1 255.255.255.255 UGH 1 0 0 WAN vlan1
192.168.1.0 * 255.255.255.0 U 0 0 0 LAN br0
10.68.108.0 * 255.255.255.0 U 0 0 0 WAN vlan1
default 10.8.0.8 0.0.0.0 UG 0 0 0 WAN ppp0
default 10.68.108.1 0.0.0.0 UG 1 0 0 WAN vlan1

10.68.108.1 - шлюз провайдера
10.8.0.1 - VPN сервер провайдера
192.168.1.0 - локальная подсеть

Остальное непонятно откуда берется...

BladeRazoR
19-09-2008, 08:46
Добрые люди подсказали, что всё правильно, но нужно настроить nat на ppp1. Вопрос как это делается? :)

alexeigolovin
09-10-2008, 09:13
Хочется закрыть доступ в Инет ребенку (постоянно назначаемому IP) по времени

Путем тыканий выяснил, что время надо ставить на час раньше - т.е. чтобы заблокировать с 21:00:00, надо писать 20:00:00
Это что, iptables не понимает "летнего" времени ?

TZ стоит MSK-3MSD (из веб-морды выставлено). NTP синхронится. Команда date время показывает правильное - с учетом летнего.
Прошивка - Олега предпоследняя (9), WL-500gP v1

Как быть и куда копать, чтобы в конце октября не переделывать ?

bbsc
09-10-2008, 09:45
Тоже интересует подобный вопрос :)
Пока что регулирую вручную: поставил на телефон putty, сделал пару скриптов и запускаю их удаленно.
Хочу перейти на планирование по времени.
Скажите, а задание в crontab от имени пользователя, для которого таки настроена локаль, не помогает?

alexeigolovin
09-10-2008, 10:08
с CRON больше действий
в iptables просто правило добавить и все

TVadim
09-10-2008, 11:34
Хочется закрыть доступ в Инет ребенку (постоянно назначаемому IP) по времени

Путем тыканий выяснил, что время надо ставить на час раньше - т.е. чтобы заблокировать с 21:00:00, надо писать 20:00:00
Это что, iptables не понимает "летнего" времени ?

TZ стоит MSK-3MSD (из веб-морды выставлено). NTP синхронится. Команда date время показывает правильное - с учетом летнего.
Прошивка - Олега предпоследняя (9), WL-500gP v1

Как быть и куда копать, чтобы в конце октября не переделывать ?
Ищите тему про TZ.
У меня в pre-boot стоит код:

#!/bin/sh
tz="YEKT-5YEKST,M3.5.0,M10.5.0/3"
nvram set time_zone="$tz"
echo "$tz" > /etc/TZ

Работает правильно

alexeigolovin
09-10-2008, 12:49
Ищите тему про TZ
ага, спасибо
дома сделаю

alexeigolovin
09-10-2008, 17:21
Ищите тему про TZ.
Работает правильно
не, не работает, к сожалению

ну т.е. date показывает правильное время, в системном логе правильное время, а вот iptables срабатывает на час пожже
т.е. все работает точно так же как и было до изменений


[admin@GW root]$ cat /usr/local/sbin/pre-boot
#!/bin/sh
tz="MSK-3MSD,M3.5.0,M10.5.0/3"
nvram set time_zone="$tz"
echo "$tz" > /etc/TZ

[admin@GW root]$ nvram get time_zone
MSK-3MSD,M3.5.0,M10.5.0/3

[admin@GW root]$ cat /etc/TZ
MSK-3MSD,M3.5.0,M10.5.0/3

[admin@GW root]$ date
Thu Oct 9 20:19:04 MSD 2008

[admin@GW root]$ cat /usr/local/sbin/post-firewall
#!/bin/sh
iptables -I FORWARD -m time --timestart 19:00:00 --timestop 09:00:00 --days Mon,Tue,Wed,Thu,Fri,Sun,Sat -s 192.168.100.250 -j DROP

файрвольное правило срабатывает в 20:00, а не в 19:00 как записано

TVadim
10-10-2008, 08:27
не, не работает, к сожалению

ну т.е. date показывает правильное время, в системном логе правильное время, а вот iptables срабатывает на час пожже
т.е. все работает точно так же как и было до изменений
...
файрвольное правило срабатывает в 20:00, а не в 19:00 как записано

Надо тестировать, хотя мне казалось вовремя отрубает:confused:

Проверил: на на час позже. Видимо не учитывает летнее время.