Да, давно я столько вопрсов не получал :)
В бсд системах есть как минимум 3 системы работы с пакетами.
1. Исторически первый - ipfw
2. ipfilter
3. pf (Packet filter, вроде)
Все они умеют делать почти одно и то же но по-разному и с той или иной специализацией.
Как по мне, то ipfilter наиболее удачно сделан.
В системе могут существовать все 3 вид фильтров одновременно.
NAT (он же SNAT в линухах) нужен для подмены ИСХОДЯЩЕГО адреса (source).
В ipfw он не был реализован, поэтому сделали демон пользовательского уровня natd и на него стали передавать пакеты путем divert.
ipnat это только утилита управления NAT'ом и сопутсвующими функциями из пакета программ ipfilter.
Для того, чтобы машина была видна ИЗ инета, то нужно использовать map по портам. Эта технология зовется PNAT (в линухах DNAT, от слова destination). Пример проброса порта 22 на локальную машину:
rdr fxp1 213.226.135.5/32 port 22 -> 10.1.0.28 port 22 tcp
Можно, конечно и полностью айпишник пробросить, но это в мануалах читай - долго объяснять.
Ну а на счет in/out в правилах, то это модификаторы относительно данного интерфейса. Т.е. пакет может быть входящим либо исходящим относительно данного интерфейса.
Ну а жать на входящем интерфейсе потому, что на сетевуху вторую уже должно попасть с новым адресом.
P.S. одно из предназначений NAT - защита от от доступа с внешних адресов.
Пробить NAT практически невозможно.
>Мне просто объясните, если не трудно, принцип работы ipfw - а то
>весь инет перерыл, ничего не нахожу, да и в мануале не
>растолковано.
>
>Есть сеть
>
>______ ___________________
>____________________ ________
> INET |______|rl1 213.226.135.5 |____| rl0 10.1.0.5/23 |____|LAN
> |
>______| |__________________| |___________________|
> |________|
>
>Пакет идет наружу из 10.1.0.0/23 - он попадает в rl0, сразу же
>вопрос - почему надо именно резать траффик на rl0, ведь тогда
>все равно до rl1 у пользователя с инета скачается на максимальной
>скорости, забьется канал, а только будет ограничения на интерфейсе rl0.
>Второй вопрос - почему
>
>/sbin/ipfw add 1106 pipe 1051 all from any to 10.1.0.28 out via
>rl0
>/sbin/ipfw add 1107 pipe 1052 all from 10.1.0.28 to any in via
>rl0
>
>Как бы должно быть по всем правилам 1051 "from any to 10.1.0.28
>in via rl0" ведь пакет приходит из инета на адрес 10.1.0.28??
>
>Аналогично и 1052, ведь пакет выходит через rl0?
>
>При выходе через интерфейс rl1, ип адрес ipnat меняет на 213.189.135.5
>
>Почему не работает конструкция, с которой, как я думаю, не было бы
>проблем с открытыми портами, т.к. я хочу чтобы клиентский компьютер был
>полностью доступен из инета:
>
>/sbin/ipfw add 1108 pipe 1051 all from any to 213.226.189.5 in via
>rl1
>
>
>или же
>
>/sbin/ipfw add 1108 pipe 1051 all from any to 10.1.0.5 in via
>rl1
>
>Надеюсь только на вашу помощь, хоть носом ткните, только не в мануал...:)
>