>Уважаемые Гуру, просветите немного в теории дивертирования.
>В мане 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
> // разрешаем весь трафик от меня наружу
Так вот, если диверт стоит ПЕРЕД ним, то трафик натится и выходит.
А если после, то трафик выходит незаначенный (вот слово-то). Т.е. до правила диверт он просто не доходит. Ну а без ната он далеко не уйдет =)Вот и вся фишка.
|