Есть настройка файрволла:
#!/bin/sh
# Сбрасываем все правила
ipfw -q -f flush
# Определяем переменную для строки добавления нового правила
cmd="ipfw -q add"
# Определяем переменную для внешней сетевой карты
pif="re1" # имя сетевой карты, которая смотрит в Интернет
# Нет ограничений на Loopback интерфейсе
$cmd 00005 allow all from any to any via lo0
# Нет ограничений на сетевом интерфейсе внутренней сети
$cmd 000010 allow all from any to any via re0
#################################################################
# Позволяем пакету проходить, если предыдущий был добавлен
# в "динамическую" таблицу правил с разрешением состояния keep-state.
#################################################################
$cmd 00014 check-state
########################
# Секция безопастности
########################
# Запрет X-сканирования:
$cmd 00015 reject log tcp from any to any tcpflags fin, syn, rst, psh, ack, urg via $pif
## Запрет N-сканирования:
$cmd 00016 reject log tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !urg via $pif
## Запрет FIN-сканирования:
$cmd 00017 reject log tcp from any to any not established tcpflags fin via $pif
## Защита от спуфинга (подмена адреса отправителя)
$cmd 00018 deny log ip from any to any not verrevpath in via $pif
# Ограничение числа одновременных соединений:
#$cmd 00019 allow ip from any to any setup limit src-addr 50
### Строим таблицу банов
ban="table(10)"
ipfw table 10 flush
#ipfw table 10 add 111.111.111.111
#ipfw table 10 add 222.222.222.222
$cmd 00050 deny log all from any to ${ban}
$cmd 00051 deny log all from ${ban} to any
### Строим таблицу с довереннеыми внешними ip-адресами
unban="table(20)"
ipfw table 20 flush
ipfw table 20 add 195.8.40.38
ipfw table 20 add 195.8.40.41
$cmd 00052 allow all from any to ${unban}
$cmd 00053 allow all from ${unban} to any
#################################################################
# Интерфейс смотрящий в интернет (Исходящая секция)
# Опрашиваем запросы начала сессии идущие из-за файрвола
# в локальную сеть или от гейта в Интернет.
#################################################################
#Открыто все для ДНС
$cmd 00114 allow udp from any to any 53 out via $pif
# Разрешаем исходящие не безопасные стандартные www функции
$cmd 00200 allow tcp from any to any 80 out via $pif.
# Разрешаем исходящую функцию отправки и приема почты
$cmd 00225 allow tcp from any to any 25 out via $pif
$cmd 00227 allow tcp from any to any 110 out via $pif
# Разрешаем исходящий пинг
$cmd 00250 allow icmp from any to any out via $pif keep-state
# Разрешаем исходящий Time
$cmd 00255 allow all from any to any 123 out via $pif
# Разрешаем исходящий SSH
$cmd 00300 allow tcp from any to any 22 out via $pif setup keep-state
# Разрешаем ICQ
$cmd 00350 allow all from any to any 5190 out via $pif
# Запрещаем и протоколируем все остальное пытающееся пройти.
# Это правило предписывает блокировать и протоколировать все по умолчанию.
$cmd 00400 deny log all from any to any out via $pif
#################################################################
# Интерфейс смотрящий в Internet (Входящая секция)
# Опрашиваем запросы начала сессии идущие из Интернета
# в локальную сеть или к гейту
#################################################################
# Запрещаем весь входящий траффик из зарезервированных адресных пространств по внешней сети
$cmd 01301 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 01301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 01302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 01303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 01304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 01305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 01306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 01307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster interconnect
$cmd 01308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Входящий запрос DNS
$cmd 01381 allow udp from any 53 to any in via $pif
# Разрешаем входящую www функцию
# разрешаем только "me", тоесть на этот сервер и не дальше + ограничение с одного ip-адреса 200 соединений
#$cmd 01399 allow tcp from any to me dst-port 80 in via $pif setup limit src-addr 200
# разрешаем "везде", тоесть дальше этого сервера + ограничение с одного ip-адреса 400 соединений
#$cmd 01400 allow tcp from any to any 80 in via $pif setup limit src-addr 400
# просто разрешаем входящий 80-й порт для веб
$cmd 01400 allow tcp from any 80 to any in via $pif
# ICQ
$cmd 01447 allow all from any 5190 to any in via $pif
# Запрещаем весь сервис Netbios. 137=имя, 138=дейтаграмма, 139=сессия
# Блокируем MS/Windows hosts2 name server requests 81
$cmd 01450 deny tcp from any to any 137 in via $pif
$cmd 01460 deny tcp from any to any 138 in via $pif
$cmd 01470 deny tcp from any to any 139 in via $pif
$cmd 01480 deny tcp from any to any 81 in via $pif
# Запрещаем пакеты прибывшие позже
$cmd 01485 deny all from any to any frag in via $pif
# Отбрасываем и протоколируем все входящие пакеты из внешнего мира
$cmd 01500 deny log all from any to any in via $pif
# Остальное отбрасывается по умолчанию
# отбрасываем и протоколируем все непрошедшие пакеты,
# что бы можно было увидеть какие они
$cmd 09999 deny log all from any to any
################ Конец файла правил IPFW ###############################
Пытаюсь всунуть сюда NAT следующим образом:
ipfw -q nat 1 config log if $pif reset same_ports deny_in
$cmd 09998 nat 1 ip from any to any via $pif
Никак не хочет работать... В чем может быть проблема? P.S. Если засунуть 2 этих правила в начало - NAT работает, но не работает весь фаер... За любые советы буду очень признателен!