PDA

Bekijk de volledige versie : Зачем прошивке SNAT правило в локальную сеть



checat
11-01-2010, 03:37
Вопрос для повышения общей образованности.

Зачем прошивка при включённом NAT на WAN создаёт ещё и правило для SNAT на LAN?

-A POSTROUTING -s 192.168.0.0/255.255.255.0 -d 192.168.0.0/255.255.255.0 -o br0 -j SNAT --to-source 192.168.0.1

В старых прошивках, судя по поиску в форуме, было -o br0 -j MASQUERADE

Зачем оно?

Нашёл тему с тем же вопросом, там тоже не отвечено http://wl500g.info/showthread.php?p=110210

al37919
11-01-2010, 07:59
В текущей прошивке Олега++ используются следующие три правила в цепочке POSTROUTING:

-A POSTROUTING -s ! WAN_IP -o ppp0 -j MASQUERADE
-A POSTROUTING -s ! MAN_IP -o vlan1 -j MASQUERADE
-A POSTROUTING -s LAN-IP/24 -d LAN-IP/24 -o br0 -j SNAT --to-source LAN-IP


В старых прошивках, судя по поиску в форуме, было -o br0 -j MASQUERADE
в них были все три правила, только третье, которое теперь звучит SNAT, было прописано также как MASQUERADE, причем, более того, это наследие исходной прошивки асуса.

Мне также неясен смысл этой строки, т.к. это пакеты, которые ходят из LAN в LAN и зачем там заменять исходящий адрес на адрес роутера мне неясно. Скорее это что-то из области "раз работает, то и не трогаем". Олег ее оставил и его последователи тоже. По моим наблюдениям без этой строки все работает не хуже и на ПК-роутерах я обхожусь без нее.


Однако, есть свежая идея --- раз SNAT полезен для случая статического адреса --- может имеет смысл сделать SNAT в случае выбора статики в вебморде вместо MASQUERADE для всех случаев? Реализация выглядит достаточно просто.


Немного справочных ссылок по теме:
обсуждение вопроса MASQUERADE/SNAT и принятие окончательного решения было в области этого сообщения:
http://wl500g.info/showpost.php?p=134311&postcount=127

что такое MASQUERADE и SNAT описывается в первоисточнике:
http://www.opennet.ru/docs/RUS/iptables/#MASQUERADETARGET
http://www.opennet.ru/docs/RUS/iptables/#SNATTARGET

интересная дискуссия:
http://lists.debian.org/debian-firewall/2001/12/msg00006.html

checat
11-01-2010, 13:59
Однако, есть свежая идея --- раз SNAT полезен для случая статического адреса --- может имеет смысл сделать SNAT в случае выбора статики в вебморде вместо MASQUERADE для всех случаев?
Мне тоже непонятно, что имеется в виду в мануалах, где написано "для статического IP использовать SNAT, а не маскарадинг". Полагаю, это надо делать конкретные тесты: сколько пакетов в секунду маршрутизируется на простом статическом соединении через SNAT и сколько через маскарадинг. А также сколько новых TCP соединений в секунду можно обработать, ибо там может быть разница в инициализации conn tracking. Если разница менее 5%, то лучше не трогать и оставить макарадинг на все случаи, ибо универсален. Глядя на приведённые цифры

Сравнил тут на досуге производительность.

WL500gP V1 / 32Mb RAM / 266MHz

Прошивка 1.9.2.7-10 - 89.2 Mbits/sec

Прошивка WL500gp-1.9.2.7-d-r1014
Средняя скорость порядка 77.5 Mb/s

Прошивка WL500gp-1.9.2.7-e-r1023M (RT-N транк).
Средняя скорость порядка 56Mb/s
мне не кажется, что маскарадинг - то, что тормозит :)


Про SNAT на локальном интерфейсе ещё мнения есть?
Я сначала было подумал, что это такой извращённый способ сделать бридж. Потом подумал, что это способ обработать LAN клиентов с неправильной маской подсети. Но эти предположения как-то критики не выдерживают.

checat
11-01-2010, 14:29
Однако, есть свежая идея --- раз SNAT полезен для случая статического адреса --- может имеет смысл сделать SNAT в случае выбора статики в вебморде вместо MASQUERADE для всех случаев? Реализация выглядит достаточно просто.


В соседнем топике как раз обсуждается, но как раз не для случая статики


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

...

На моем шестимегабитном тарифе после перехода с PPPoE на PPTP максимальная скорость упала до 2-3 мегабит. После замены маскарадинга на snat скорость поднялась до прежних значений.



Этот способ даст преимущества при следующих условиях:

1. Скорость внешнего канала выше 3 мегабит/с.
2. Большое количество пакетов - т.е. инетом активно пользуется несколько человек И/ИЛИ запущено несколько торрентов без ограничения по пирам (по моим наблюдениям - более 7 торрентов и более сотни пиров).

Из этого следует, что на синтетических тестах вряд-ли можно увидеть разницу в скорости. И при скорости внешнего канала менее 3 мегабит менять маскарадинг на снат имеет смысл только для разгрузки проца роутера.


После чуть менее суток тестирования могу сказать следующее: на внутренней сетке скорость повысилась процентов на 10.
На внешней сетки изменений особых нет, НО загрузка проца стала меньше. Процентов на 30!
Получается по любому тюнинг пошел на пользу :cool:

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

Power
11-01-2010, 22:36
Вопрос для повышения общей образованности.

Зачем прошивка при включённом NAT на WAN создаёт ещё и правило для SNAT на LAN?

-A POSTROUTING -s 192.168.0.0/255.255.255.0 -d 192.168.0.0/255.255.255.0 -o br0 -j SNAT --to-source 192.168.0.1

В старых прошивках, судя по поиску в форуме, было -o br0 -j MASQUERADE

Зачем оно?


Чтобы проброс портов работал и в том случае, когда клиент сидит в LAN.

Представьте: внешний адрес роутера = 2.2.2.2, внутренний = 192.168.1.1, адрес клиента (из LAN) = 192.168.1.3, на роутере проброшен порт 21/tcp на адрес 192.168.1.5.

Когда идёт запрос (tcp syn) с адреса 192.168.1.3 на 2.2.2.2:21, на роутере срабатывает DNAT и адрес назначения меняется на 192.168.1.5:21 и пакет уходит обратно в LAN.

а) Если бы того правила не было, устройство 192.168.1.5 получило бы пакет с адресом отправителя = 192.168.1.3 и ответный пакет послало бы на этот адрес. Зато как бы удивился клиент 192.168.1.3 - он отправлял запрос на 2.2.2.2, а ответ получил с 192.168.1.5. Он просто отбросит этот пакет и будет ждать "настоящий" ответ.

б) Так как то правило есть, то адрес отправителя меняется на адрес роутера (192.168.1.1). Теперь устройство 192.168.1.5 будет слать ответы на роутер, где адреса опять будут подменены (обратно) и клиент 192.168.1.3 получит ответ с роутера (с адресом отправителя = 2.2.2.2) и посчитает его нормальным.

checat
11-01-2010, 23:29
Чтобы проброс портов работал и в том случае, когда клиент сидит в LAN.

О-о-о! Уважуха.
Клиент из LAN, конечно, мог бы стучаться не на внешний IP, а напрямую на IP сервера, но понятно, что ситуации бывают разные.

Спасибо за разъяснение!

Goletsa
12-01-2010, 12:10
Мне тоже непонятно, что имеется в виду в мануалах, где написано "для статического IP использовать SNAT, а не маскарадинг". Полагаю, это надо делать конкретные тесты: сколько пакетов в секунду маршрутизируется на простом статическом соединении через SNAT и сколько через маскарадинг. А также сколько новых TCP соединений в секунду можно обработать, ибо там может быть разница в инициализации conn tracking. Если разница менее 5%, то лучше не трогать и оставить макарадинг на все случаи, ибо универсален. Глядя на приведённые цифры

мне не кажется, что маскарадинг - то, что тормозит :)


Про SNAT на локальном интерфейсе ещё мнения есть?
Я сначала было подумал, что это такой извращённый способ сделать бридж. Потом подумал, что это способ обработать LAN клиентов с неправильной маской подсети. Но эти предположения как-то критики не выдерживают.
Не хочу вас огорчать но я при тестах NAT полностью выключал.
Там разница не изза ната.

checat
13-01-2010, 06:34
Не хочу вас огорчать но я при тестах NAT полностью выключал.
Там разница не изза ната.
Я так и понял