> ${ipfw} add 1400 allow udp from dns.dns.dns.dns 53 to xxx.xx.xxx.xxx via ${ifout}
> ${ipfw} add 1500 allow udp from dns.dns.dns.dns 53 to xxx.xx.xxx.xxx via ${ifout}
И в чём тут разница между правилами?
> ${ipfw} add 1600 allow udp from dns.dns.dns.dns to xxx.xx.xxx.xxx 53 via ${ifout}
> ${ipfw} add 1700 allow udp from dns.dns.dns.dns to xxx.xx.xxx.xxx 53 via ${ifout}
Тут тоже без разницы. К тому же я бы скорее написАл
${ipfw} add 1600 allow udp from dns.dns.dns.dns 53 to xxx.xx.xxx.xxx via ${ifout}
т.к. DNS-сервер ответит со своего порта:53, а не на мой порт:53.
> ${ipfw} add 2400 divert natd all from 192.168.0.0/24 to any out via ${ifout}
> ${ipfw} add 2450 divert natd all from any to xxx.xx.xxx.xxx in via ${ifout}
Правила divert я бы вынес в начало, т.к. allow прерывает просмотр списка правил ipfw, а divert продолжает.
Нет правила для tcp established (а оно очень упрощает жизнь - не надо писАть отдельные правила для ответов сервера клиенту.
Прежде, чем задавать вопросы, надо сначала изучить /etc/rc.firewall - правда, он туповат, но хоть даёт основные представления о том, как надо формировать набор правил.