The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Теоретический вопрос - ipfw+divert+natd"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Теоретический вопрос - ipfw+divert+natd"
Сообщение от Usupov Искать по авторуВ закладки on 01-Апр-05, 15:00  (MSK)
Уважаемые Гуру, просветите немного в теории дивертирования.
В мане ipfw написано, что при соответствии divert производится передача пакета natd (в моем случае) и дальнейший поиск прекращается. natd изменяет отправителя и заново отправляет пакет, который снова попадает в начало списка правил. Как я понимаю, в нижеуказанном примере совершенно неважно, в каком месте находится правило divert, главное, до 900-й строки. В реальности, попытка поместить divert ниже 500-й строки приводит к невозможности выйти из внутренней сети. Чего-то я недопонимаю? Заранее спасибо.

ipfw add 0100 allow ip from any to any via lo0 // разрешаем все через loopback
ipfw add 0200 divert natd from any to any via $ext_if   // дивертим весь трафик
ipfw add 0300 allow ip from $int_net to me in recv $int_if   // разрешаем все из внутренней сети в меня
ipfw add 0400 allow ip from me to $int_net out xmit $int_if   // разрешаем все от меня во внутренную сеть
ipfw add 0500 allow ip from me to any out xmit $ext_if  // разрешаем весь трафик от меня наружу
ipfw add 0600 allow tcp from any http, https to me 1024-65535 in recv $ext_if established // разрешаем на вход http,https
ipfw add 0700 allow udp from any domain to me in recv $ext_if // разрешаем вход udp:53
ipfw add 0800 deny ip from any to me in recv $ext_if setup   // запрещаем вход "новых" пакетов на меня
ipfw add 0900 allow udp from $int_net to any domain // разрешаем проход udp:53
ipfw add 1000 allow udp from any domain to $int_net
ipfw add 1100 allow icmp from any to any icmptypes $icmptypes // разрешаем проход icmp
ipfw add 1200 allow tcp from any http, https to $int_net 1024-65535 // разрешаем проход во внутренную сеть http,https
ipfw add 1300 allow tcp from $int_net to any http,https

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Теоретический вопрос - ipfw+divert+natd"
Сообщение от else emailИскать по авторуВ закладки(ok) on 01-Апр-05, 19:16  (MSK)
>Уважаемые Гуру, просветите немного в теории дивертирования.
>В мане ipfw написано, что при соответствии divert производится передача пакета natd
>(в моем случае) и дальнейший поиск прекращается. natd изменяет отправителя и
>заново отправляет пакет, который снова попадает в начало списка правил. Как
>я понимаю, в нижеуказанном примере совершенно неважно, в каком месте находится
>правило divert, главное, до 900-й строки. В реальности, попытка поместить divert
>ниже 500-й строки приводит к невозможности выйти из внутренней сети. Чего-то
>я недопонимаю? Заранее спасибо.
>
>ipfw add 0100 allow ip from any to any via lo0  
>// разрешаем все через loopback
>ipfw add 0200 divert natd from any to any via $ext_if  
> // дивертим весь трафик
>ipfw add 0300 allow ip from $int_net to me in recv $int_if
>  // разрешаем все из внутренней сети в меня
>ipfw add 0400 allow ip from me to $int_net out xmit $int_if
>  // разрешаем все от меня во внутренную сеть
>ipfw add 0500 allow ip from me to any out xmit $ext_if
> // разрешаем весь трафик от меня наружу
>ipfw add 0600 allow tcp from any http, https to me 1024-65535
>in recv $ext_if established // разрешаем на вход http,https
>ipfw add 0700 allow udp from any domain to me in recv
>$ext_if // разрешаем вход udp:53
>ipfw add 0800 deny ip from any to me in recv $ext_if
>setup   // запрещаем вход "новых" пакетов на меня
>ipfw add 0900 allow udp from $int_net to any domain // разрешаем
>проход udp:53
>ipfw add 1000 allow udp from any domain to $int_net
>ipfw add 1100 allow icmp from any to any icmptypes $icmptypes //
>разрешаем проход icmp
>ipfw add 1200 allow tcp from any http, https to $int_net 1024-65535
>// разрешаем проход во внутренную сеть http,https
>ipfw add 1300 allow tcp from $int_net to any http,https

Известно, что правила обрабатываются по порядку. Т.е. если пакет попал в правило 1, то после обработки оно выходит из фаервола и дальше не проверяется.
Смотрим на правило 500

ipfw add 0500 allow ip from me to any out xmit $ext_if
> // разрешаем весь трафик от меня наружу

Так вот, если диверт стоит ПЕРЕД ним, то трафик натится и выходит.
А если после, то трафик выходит незаначенный (вот слово-то). Т.е. до правила диверт он просто не доходит. Ну а без ната он далеко не уйдет =)Вот и вся фишка.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Теоретический вопрос - ipfw+divert+natd"
Сообщение от Usupov Искать по авторуВ закладки on 01-Апр-05, 19:53  (MSK)
предположим, отправитель из внутренней сети - 192.168.1.3
наш гейт - 192.168.1.1 (int_ip), 195.34.32.11 (ext_ip)
Как я понимаю "me" - это 127.0.0.1, $int_ip и $ext_ip
Если не сложно, объясните, почему срабатывает правило 500, если там отправитель "me"

>ipfw add 0500 allow ip from me to any out xmit $ext_if
>
>> // разрешаем весь трафик от меня наружу
>
>Так вот, если диверт стоит ПЕРЕД ним, то трафик натится и выходит.
>
>А если после, то трафик выходит незаначенный (вот слово-то). Т.е. до правила
>диверт он просто не доходит. Ну а без ната он далеко
>не уйдет =)Вот и вся фишка.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Теоретический вопрос - ipfw+divert+natd"
Сообщение от else emailИскать по авторуВ закладки(??) on 02-Апр-05, 00:00  (MSK)
>предположим, отправитель из внутренней сети - 192.168.1.3
>наш гейт - 192.168.1.1 (int_ip), 195.34.32.11 (ext_ip)
>Как я понимаю "me" - это 127.0.0.1, $int_ip и $ext_ip
>Если не сложно, объясните, почему срабатывает правило 500, если там отправитель "me"
>
>
>>ipfw add 0500 allow ip from me to any out xmit $ext_if
>>
>>> // разрешаем весь трафик от меня наружу
>>
>>Так вот, если диверт стоит ПЕРЕД ним, то трафик натится и выходит.
>>
>>А если после, то трафик выходит незаначенный (вот слово-то). Т.е. до правила
>>диверт он просто не доходит. Ну а без ната он далеко
>>не уйдет =)Вот и вся фишка.

me - это пакеты, выходящие с твоих интерфейсов.
Пакет, который не обработан натом, но разрешен к отправке ipfw будет выходить с внешнего интерфейса с локальным адресом, что есть совершенно неправильно. Поэтому такой пакет далеко и не уйдет.
Если же пакет попадает сначала в divert, то нат подменяет заголовок и теперь пакет снова попадает в ipfw и встретив правило allow from me to any выйдет через него наружу. Но теперь его ip будет соотвествовать реальному ip.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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