LINUX.ORG.RU
ФорумAdmin

Форвардинг в файрволле OpenWRT, или «surprise motherfucker!»

 , ,


1

1

Сижу, долблюсь в файрволл опенвртшный. Есть админская зона, есть пользовательская, есть гостевая. Ещё есть VPN'ный интерфейс, который тоже в отдельной зоне (точнее, сразу в двух, по подсетям).

Разрешил форвардинг из VPN'а в нормальную пользовательскую зону, дабы дать человеку remote access к его машине. Обратно, соответственно, по умолчанию, т. е. reject. Проверил, что форвардинг ESTABLISHED/RELATED тоже разрешён. Пингую девайс из пользовательской зоны — хрен. И счётчик реджектов растёт.

Удостоверился в том, что conntrack для ICMP вообще существует в природе. Офигел, почесал репу. Полез на опенвртшное вики. А там —

By default, the firewall will disable connection tracking

Surprise, motherfucker. И зачем так делать, да ещё и по дефолту? И вместе с тем форвардинг между зонами по дефолту однонаправленный, т. е. по сути априори неработающий. Принцип наименьшей неожиданности нервно курит в сторонке.

★★★★★

Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от redixin

Вобщем пакет не просто отправился, но в таблицу заносится инфа об этом пакете.

Когда приходит ответ — он совпадает с правилом «nat 10 from any to ${nat}» и происходит поиск в этой таблице и дальнейшее преобразование адреса-порта получателя согласно найденному.

Вот видете, мы до табличек и добрались. Теперь попытайтесь сформулировать все тоже самое но без нат.
Сеть A - Роутер - Сеть B. Надо что бы из сети A можно было ходить в сеть B, но из сети B доступа к сети A не было. На примере протокола udp.

anc ★★★★★
()
Ответ на: комментарий от redixin

Батенька это не так банально усе от протоколов зависит. Для этого люди отдельные модули пишут.

Ну например в случае ТЦП.

Протокол в данном случае я имел виду не tcp или udp, если брать тот же ftp то нужен разбор содержимого пакетов. А простой случай это icmp ответ в случае tcp, udp соединения он считается RELATED.

anc ★★★★★
()
Ответ на: комментарий от redixin

ЕМНИП, в такой ICMP ответ вкладывается пакет, его вызвавший, далее просто поиск по таблице ESTABLISHED.

А вообще, в conntrack есть две таблицы - conntrack и expect, в первую попадают установленные соединения, во вторую - относящиеся к ним. Вторая таблица заполняется при помощи модулей-хелперов, типа nf_conntrack_ftp.

К вопросу «1 лукап на пакет»: я не знаю, как это реализовано, но что мешает сделать 1 лукап перед таблицей nat, а затем просто прицепить ярлык к пакету, пока он идет через сетевые подсистемы ядра? Маркировка так и работает, например.

Так что, возможно, твоя BSD ничем не лучше :)

Deleted
()
Ответ на: комментарий от Deleted

Так что, возможно, твоя BSD ничем не лучше :)

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

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

Это конечно хорошо если в этих правилах о которых речь не происходит лукап, а лукап был до, и просто вешается метка, но все равно печалит что трекается абсолютно весь трафик. Да и все эти захардкоженные «таблицы» nat, mangle, filter, с этими захардкоженными цепочками prerouting, postrouting, forward выглядят как оверинжиниринг.

redixin ★★★★
()
Ответ на: комментарий от redixin

Вы от вопроса не уходите. Я вам конкретный пример привел и прошу описать на примере bsd.

anc ★★★★★
()
Ответ на: комментарий от redixin

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

Ну с этим никто спорить не будет. Только вот в чем фигня, если эти правила относятся ко всему трафику, то получается тоже самое что и в iptables

anc ★★★★★
()
Ответ на: комментарий от redixin

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

И в iptables можно делать то же самое, правда реализация может выглядеть по-другому, нежели чем в ipfw.

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

Каким именно образом чекать? Смотреть в таблицах conntrack?

Да и все эти захардкоженные «таблицы» nat, mangle, filter, с этими захардкоженными цепочками prerouting, postrouting, forward выглядят как оверинжиниринг.

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

Ну я и не жду знаний от админов мыльниц.

Этот хейт месседж я оставлю без ответа :)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.