Один из сложных моментов настройки - создание правил файрвола. Рекомендую изучить статью Кузмича только не надо копировать правила которые написаны для примера. Эта статья хороша своими обьяснениями работы ключей и пр. Писать постоянные правила файрвол нужно только при полном понимании работы ipfw в противном случае или что то не будет работать (чаще всего) или хакеры через день сломают вашу машину.
Итак рабочие файлы файрвола и нат (подставлялись на место рабочих в момент написания. Учтите, что работа natd отличается от работы ipnat. :))
rc.conf
defaultrouter="195.195.95.100" gateway_enable="YES" hostname="bsd.myd.ru" ifconfig_rl0="inet 195.195.95.5 netmask 255.255.255.0" ifconfig_rl1="inet 192.168.10.1 netmask 255.255.255.0" inetd_enable="YES" kern_securelevel_enable="NO" lpd_enable="YES" nfs_reserved_port_only="YES" sendmail_enable="YES" sshd_enable="YES" # Секцию ниже нужно убрать если DNS для зоны не настроен named_enable="YES" named_program="named" named_flags="-u bind -g bind" # ipnat_enable="YES" ipnat_program="/sbin/ipnat -CF -f" ipnat_rules="/etc/ipnat.rules" ipnat_flags="" firewall_enable="YES" firewall_script="/etc/rc.firewall"
rc.firewall
# # IPFW RULES # /etc/ipfw.rules # fwcmd="/sbin/ipfw" LanOut="rl0" IPOut="195.195.95.5" NetOut="24" MaskOut="255.255.255.0" LanIn="rl1" IPIn="192.168.10.1" NetInIP="192.168.10.0" NetInMask="24" MaskIn="255.255.255.0" MyIP1="192.168.10.97" MyIP2="192.168.10.98" MyIP3="192.168.10.99" dns1="192.168.10.1" dns2="195.195.95.50" dns3="195.190.90.9" ${fwcmd} -q -f flush # ${fwcmd} -q add pass all from any to any via lo0 ${fwcmd} -q add pass all from any to any via ppp0 # Пропускаем все соединения с установленным битом RST или ACK ${fwcmd} -q add pass tcp from any to any established # Разрешаем все пакеты выходящие из внешнего интерфейса с внешнего IP ${fwcmd} -q add pass ip from ${IPOut} to any out xmit ${LanOut} # Stop private networks (RFC1918) from entering the outside interface. ${fwcmd} -q add deny ip from 192.168.0.0/16 to any in via ${LanOut} ${fwcmd} -q add deny ip from 172.16.0.0/12 to any in via ${LanOut} ${fwcmd} -q add deny ip from 10.0.0.0/8 to any in via ${LanOut} # NAT #${fwcmd} -q add divert natd ip from any to any via ${LanOut} # www, ftp... только по заданным интерфейсам - остальные через squid ${fwcmd} -q add pass tcp from ${MyIP1} to any 20,21,22,23,80,443 ${fwcmd} -q add pass tcp from any 20,21,22,23,80,443 to ${MyIP1} ${fwcmd} -q add pass tcp from ${MyIP2} to any 20,21,22,23,80,443 ${fwcmd} -q add pass tcp from any 20,21,22,23,80,443 to ${MyIP2} ${fwcmd} -q add pass tcp from ${MyIP3} to any 20,21,22,23,80,443 ${fwcmd} -q add pass tcp from any 20,21,22,23,80,443 to ${MyIP3} # Запрещаем - FTP, терминал, Squid - снаружи ${fwcmd} -q add deny tcp from any to any 20,21,22,23,3128 in via ${LanOut} # Запрещаем - www, FTP, терминал - изнутри ${fwcmd} -q add deny tcp from any to any 20,21,22,23,80,443 in via ${LanIn} ${fwcmd} -q add deny tcp from any to any 8000-8104 in via ${LanIn} # Разрешаем почту, DNS ${fwcmd} -q add pass tcp from any to any 25,110 via ${LanOut} ${fwcmd} -q add pass tcp from any 25,110 to any via ${LanOut} ${fwcmd} -q add pass udp from any to any 53 via ${LanOut} ${fwcmd} -q add pass udp from any 53 to any via ${LanOut} ${fwcmd} -q add pass all from any to any via ${LanIn} # Доступен сервер www из внешнего мира ${fwcmd} -q add pass tcp from ${IPOut} 80 to any via ${LanOut} ${fwcmd} -q add pass tcp from any to ${IPOut} 80 via ${LanOut} #ICMP ${fwcmd} -q add allow icmp from any to ${IPOut} in via ${LanOut} icmptype 0,3,4,11,12 ${fwcmd} -q add allow icmp from any to ${NetInIP}/${NetInMask} in via ${LanOut} icmptype 0,3,4,11,12 ${fwcmd} -q add allow icmp from ${IPOut} to any out via ${LanOut} icmptype 3,8,12 ${fwcmd} -q add allow icmp from ${IPOut} to any out via ${LanOut} frag ${fwcmd} -q add deny log icmp from any to any in via ${LanOut} ${fwcmd} -q add reject log icmp from any to any out via ${LanOut} ${fwcmd} -q add deny log all from any to any
ipnat.rules
map rl0 0/0 -> 0/32 proxy port ftp ftp/tcp map rl0 192.168.10.0/24 -> 195.195.95.5/24 proxy port ftp ftp/tcp map rl0 192.168.10.0/24 -> 195.195.95.5/24