http://www.lissyara.su/articles/freebsd ... #example_1
Вопрос по первому же примеру:
Код: Выделить всё
# разрешаем все через интерфейс локальной сети
add 1040 allow ip from any to any via fxp0
# боимся непонятного
add 1050 deny ip from any to 192.168.0.0/16 in recv em0
add 1060 deny ip from 192.168.0.0/16 to any in recv em0
add 1070 deny ip from any to 172.16.0.0/12 in recv em0
add 1080 deny ip from 172.16.0.0/12 to any in recv em0
add 1090 deny ip from any to 10.0.0.0/8 in recv em0
add 10100 deny ip from 10.0.0.0/8 to any in recv em0
add 10110 deny ip from any to 169.254.0.0/16 in recv em0
add 10120 deny ip from 169.254.0.0/16 to any in recv em0
# настройка ната.
# опции переноса строк "\" надо убрать все должно быть в одну строчку
# опции redirect_port приведены для примера - как делать "проброс портов"
nat 1 config log if em0 reset same_ports deny_in \
redirect_port tcp 1.2.3.4:6881 6881 \
redirect_port udp 1.2.3.4:4444 4444 \
redirect_port tcp 192.168.1.24:25 25
# заварачиваем все что проходит через внешний интерфейс в нат
add 10130 nat 1 ip from any to any via em0
# боимся непонятного
add 65534 deny all from any to any
После этого в точке (9) трафик выйдет из подсистемы нат и будет передан обратно в точку (6), заново попав в ip_output(). Так как значение one_pass выставлено в 1 (то есть разрешено) то трафик выйдет из ipfw (как если бы для него было применено правило allow) и уйдет в интернет через em0.
Непоянтно вот что, тут нет правило которое разрешало бы трафик исходящий на em0, тут только 2 правила которое 1) пуляет в нат пакеты и 2) запрещает любой трафик. Так по какому правилу папкет обработанный NAT выпускается в сеть?
И непонятен второй момент, если бы опция one-pass была отключена, то следовательно после прохождения нат пакет повторно попадает в ipfw и пробегает правила снова, и снова он доходит до правила 10130 и заруливается в нат, т.е. получается петля и так до бесконечности. Поясните кто в состоянии в чем я ошибаюсь.