Страница 1 из 1

Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-03-09 9:16:40
suspender
one_pass = 0 (вообще где то читал, что в 8.1 one_pass всегда 0)

1. Почему может не работать конструкция :

Код: Выделить всё

ipfw add nat 1 ip from $lan to any out via $if_ext
ipfw add nat 1 ip from any to $ip_ext in via $if_ext
Вариации с xmit, recv тоже не пахают. Приходится пользоваться конструкцией

Код: Выделить всё

ipfw add nat 1 ip from any to any via $if_ext
Соответственно, nat приходится конфигать с deny_in. И вот тут след вопрос.
2. ЧТо происходит с пакетом попавшим в nat с deny_in извне ? Он блокируется наглухо ? или тупо nat с ним ничего не делает и он идёт дальше по правилам ? (кажется мне что наглухо блокируется, если в таблице ната нет соответствующей записи).
Далее, как разделить траффик инициированный самим шлюзом от трафика лок сети ? (ну то есть не отправлять в нат, то, что не должно туда итти ?). У меня пока мысль использовать что то типа

Код: Выделить всё

ipfw add check-state
ipfw add allow ip from me to any out xmit $if_ext setup keep-state
Как теперь сделать, чтобы трафик вышедший из nata, уже замаскараденный не попадал под это правило ?
Есть ли в ipfw конструкция чтобы проверить, что у пакета нет заданного тага ? чтобы можно было сделать а ля :

Код: Выделить всё

...
ipfw add tag THIS_IS_FOR_NAT ip from $lan to any 
....
ipfw add allow ip from me to any out xmit $if_ext <<NOT_TAGGED THIS_IS_FOR_NAT>> setup keep-state


Или тупо не бабахать мозг и убрать deny_in ?

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-03-09 9:36:56
suspender
Хмм
меня проглючило, показалось что не работает сквид, из за того что отрубается deny_in натом. Но он по ходу дела всё таки работает, хотя непонятно почему.
Или все исходящие соединения тоже попадают в nat, и приходя обратно - не рубятся им, потому что в nat есть запись ?

тогда такой вопрос : Стоит ли городить огород, чтобы в нат шёл только тот траффик, который должен итти. Или нет ничего страшного чтобы через nat шёл весь траффик ?

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-03-09 9:40:34
suspender
И в догонку вопрос
Есть ли в ipfw аналог pf-ского reply-to ? Или для nginx, openvpn ,... (всего что должно слушать сразу много инетов) придётся запускать по второму экземпляру с другим setfib ?

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-03-09 11:37:22
hizel
1. имеют значение все правила, оба варианта правил могут работать
2. блокирует входящие соединения из вне, которых нет в таблице трансляции этого nat-а
man ipfw, tagged

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-03-09 12:34:54
suspender
man ipfw, tagged
Это то я покурил.
To check for previously applied tags, use the tagged rule option.
А что делать, если мне нужно To check that concrete tag was _not_ applied ?

Код: Выделить всё

... tagged !mytag ...
?

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-03-09 12:42:58
hizel
курите выше
RULE OPTIONS (MATCH PATTERNS)
Additional match patterns can be used within rules. Zero or more of
these so-called options can be present in a rule, optionally prefixed by
the not operand, and possibly grouped into or-blocks.

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-03-09 15:10:46
suspender
Спасибо
Просто чтение манов меня вводит в депрессию, поэтому стараюсь их читать по диагонали выясняю детали в инете :)
Плохое качество, согласен. Буду над собой работать.

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-06-03 8:51:45
kosmos-irk
Есть вопрос по ipfw nat:
Имею FreeBSD 8.2-STABLE #0

Код: Выделить всё

cat /etc/sysctl.conf
net.inet.ip.fw.one_pass=0
заворачиваю трафик в nat двумя правилами:

Код: Выделить всё

04000 nat 1 ip from any to ${ext_ip} in recv ng0
09000 nat 1 ip from any to any out xmit ng0

Код: Выделить всё

sysctl -a | grep ip.fw.one_pass
net.inet.ip.fw.one_pass: 0
Вопрос: конструкция с правилами такого вида прекрасно работает при установленном переметре net.inet.ip.fw.one_pass=0, после перезагрзуки системы этот параметр отаётся равным 0, но Ipfw ведёт себя так, будто net.inet.ip.fw.one_pass=1, до тех пор пока не сделаешь /etc/rc.d/ipfw restart

Есть предположения?

Re: Несколько вопросов по ipfw + kernel nat

Добавлено: 2011-06-03 10:11:01
hizel
<телепат>
см. kldstat до и после ipfw restart
</телепат>