Код: Выделить всё
#!/bin/sh
int0="stge0"
ext0="stge1"
ext1="stge2"
ip_ats="192.168.0.2"
skip="skipto 10010"
ipfw -q flush
# атс-ка работает через один канал, локалка через другой
ipfw add 7 setfib 0 ip from not ${ip_ats} to any in via ${int0}
ipfw add 8 setfib 1 ip from ${ip_ats} to any in via ${int0}
# разрешаем для безопасного
ipfw add 9 allow ip from any to any via ${int0}
ipfw add 10 allow ip from any to any via lo0
ipfw add 15 check-state
# разрешаем определенный порт (сокращенный список)
ipfw add 1000 ${skip} tcp from any to any 80 out via ${ext0} setup keep-state
# запрещаем все, что не по правилам
ipfw add 9998 deny ip from any to any via ${ext0}
upfw add 9999 deny ip from any to any via ${ext1}
# NAT
ipfw nat 1 config if ${ext0} same ports reset deny_in
Ipfw nat 2 config if ${ext1} same ports reset deny_in
ipfw add 10010 nat 1 ip from any to any via ${ext0}
ipfw add 10011 nat 2 ip from any to any via ${ext1}
# разрешаем все, что вышло из NAT-а
ipfw add 50000 allow ip from any to any