The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

как работает правило divert (freebsd ipfw divert firewall)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: freebsd, ipfw, divert, firewall,  (найти похожие документы)
_ RU.UNIX.BSD (2:5077/15.22) _____________________________________ RU.UNIX.BSD _ From : Anatoly A. Orehovsky 2:5020/400 23 Oct 99 22:18:08 Subj : как работает правило divert ________________________________________________________________________________ From: tolik@mpeks.tomsk.su (Anatoly A. Orehovsky) Valentin Davydov (val@sqdp.trc-net.co.jp) wrote: : А всё-таки, объясните, как работает правило divert? Вот, к примеру, В divert-socket приходит заказанный пакет с уже ntohs адресами src и dst. Программа, читающая сокет, может отфильтровать пакет или записАть обратно в сокет. При этом пакет пойдет дальше (но HЕ ОБРАТHО), не попадая уже в соответствующее правило, которое его в начале завернуло в диверт. : ipfw add divert 1234 tcp from any to ${my_ip} 123 via ${local_if} in : заворачивает tcp пакеты, пришедшие на 123 порт из локалки, на порт Съэмулировать работу по TCP при этом можно только, если слушающая программа имеет кроме divert для input еще и открытый RAW-сокет для output. И хитрые правила, чтобы исходящий через этот raw-сокет трафик опять в диверт не попал. И придется полностью эмулировать TCP. В общем, неблагодарное это занятие. Тем более, что все будет происходить в user level. Это если приходящий трафик прямо в диверт-демоне обрабатывать. Есть вариант, правда, такого плана - диверт-правило заворачивает в диверт приходящий на x-порт трафик и уходящий с y-порта. Hа y-порту должен сидеть некий обычный tcp-демон. А на диверт-сокете сидит программка, принимающая трафик на x-порт и пихающая его в локальный y-порт. А также, принимающая трафик с y-порта и рассовывающая по peerам, пришедшим на x-порт. Короче, libalias: PacketAliasRedirectPort(3). Опять же, со всеми прелестями user-level. И прочим геморроем. : 1234. Предположим, там слушает netcat, который эти пакеты обрабатывает Оригинальный netcat ни в коем случае не пойдет. Править его придется. Вплоть до полного переписывания. К тому же, 1234 - совсем не похож на обычный tcp-порт. Мало того, что инициализируется не так, так еще и туда будут валиться ПОЛHЫЕ ip-дейтаграммы. А вовсе даже не tcp-stream. Сразу в полный рост встает проблема по отлову tcp-сессий и прочие заморочки. : и посылает ответы (tcp всё-таки, как ни как). Как составить правило, : чтобы эти пакеты уходили обратно в локалку с того же 123 порта? Вот для такой задачи идеально подходит правило fwd с форважением на локальный порт. Тут и netcat пойдет, и что угодно еще. Совершенно стандартное. При этом, tcp peer будет иметь полное впечатление, что работает с тем, что заказывал (см. transparent proxy). А на divert в данном случае лучше не обращать внимание. -- Anatoly A. Orehovsky. AO9-RIPE. AAO1-RIPN http://www.tekmetrics.com/transcript.shtml?pid=6064 --- ifmail v.2.14dev3 * Origin: CISA Ltd. InterNetNews site (2:5020/400)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру
Hosting by Ihor