От себя еще добавлю - обратите ОСОБОЕ внимание на порядок прохождения пакетов по таблицам. У iptables принцип построения правил ДРУГОЙ, поэтому пользователи iptables и пользователи ipfw/pf смотрят на правила друг у друга и недоумевают, как же все работает.
В iptables если правило ACCEPT, то оно переходит в следующую таблицу, а если DROP, то это финиш обработки, правила после него не будут рассматриваться. Это позволяет избежать прохождения пакетов по ненужным уже правилам. И можно для ряда цепочек выставить политику по умолчанию - это то действие, которое будет выполнено, если не подошло ни одно из правил. (Лучше ставить DROP)
Примерно эквивалентные наборы правил. Поправьте меня, если я в чем-то не прав, так как во ФриБСД разбираюсь не очень сильно, могу дать неверную инфу.
// Сбросить все правила
# ipfw -q -f flush
// Проверять состояние
# ipfw -q add check-state
// Запретить все фрагментированные пакеты
# ipfw -q add deny all from any to any frag
// Запретить все установившиеся соединения
# ipfw -q add deny tcp from any to any established
// Но при этом сделать исключение для 80 порта через tun0, при этом отслеживая состояние соединения
# ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state
// То же самое для ДНС
# ipfw -q add allow udp from any to any 53 out via tun0 keep-state
// Для линукс
// Сбросить все правила
iptables -F
// Политика по умолчанию -дроп
iptables -P FORWARD DROP
// Добавим правило для пакетов установившихся соединений
// Дальше этого правила пройдут только пакеты от новых соединений
iptables -A FORWARD -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
// Будем пропускать дальше только новые tcp пакеты с установленным битом SYN
// Все остальные новые tcp пакеты умрут на этом правиле
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
// Будут пропущены пакеты на 80 порт по TCP
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
// Будут пропущены пакеты на 80 порт назначения
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
// А тут сработает политика по умолчанию, и умрут все пакеты, которые не попали под два предыдущих правила