Знатокам сетевой маршрутизации и ipfw посвящается...
Есть 3 сети, все они пересекаются на freebsd 5.3 машине.
ste0 172.16.0.0/24 - ведет к серверу SERVER1 (ftp,smtp,pop) и в этой же сети сидит админская машина
rl1 192.168.111.1/24 - сеть которой нужно предоставить интернет и доступ к SERVER1
rl0 172.16.2.0 - ведет в маршрутизатору cisco с поднятым nat
сразу оговорюсь, что если выключить ipfw - всё работает, трасерты бегают, почта снимается и отправляется, всё пучком, только что не защищено, поэтому решил поставить ipfw
собрал ядро, ipfw включился, но вот только в правила где то закралась ошибка.
вот конфиг.
cat /etc/rc.firewall:
#!/bin/sh
fwcmd='/sbin/ipfw -q'
net1='192.168.111.0/24'
SERVER1='172.16.0.2'
wserv='192.168.111.1'
# iface
ifnet1='rl1'
ifSERVER1='ste0'
ifinet='rl0'
iflo='lo0'
####################################################################################
# ICMP , spoof
${fwcmd} flush
${fwcmd} add 100 check-state
${fwcmd} add 101 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
${fwcmd} add 103 allow ip from any to any via ${iflo}
####################################################################################
# ICMP
${fwcmd} add 200 allow icmp from any to any
####################################################################################
# DNS
${fwcmd} add 201 allow udp from me to any domain via ${ifinet} keep-state
${fwcmd} add 201 allow udp from ${net1} to any domain keep-state
####################################################################################
# SSH from SERVER1
${fwcmd} add 301 allow tcp from ${SERVER1} to me ssh in via ${ifSERVER1}
${fwcmd} add 302 allow tcp from me 22 to ${SERVER1} out via ${ifSERVER1}
####################################################################################
# RAdmin from SERVER1
${fwcmd} add 303 allow tcp from ${SERVER1} to ${wserv} 4899 #via ${ifnet1}
${fwcmd} add 304 allow tcp from ${wserv} 4899 to ${SERVER1} #via ${ifnet1}
####################################################################################
# net1 to inet
${fwcmd} add 400 allow tcp from ${net1} to any http,https,ftp,smtp,pop3 via ${ifnet1}
${fwcmd} add 401 allow tcp from me to any keep-state
####################################################################################
# FWD to SQUID
${fwcmd} add 450 fwd 127.0.0.1,3128 tcp from ${net1} to any http,https via ${ifnet1}
####################################################################################
# From net1 to SERVER1 MAIL & FTP
${fwcmd} add 500 allow tcp from ${net1} to ${SERVER1} 25,110,21,1025 keep-state via ${ifSERVER1}
####################################################################################
# To inet
${fwcmd} add 800 allow all from me to any out via ${ifinet}
####################################################################################
получается так, что работают следующие правила:
icmp ходят, трасерт бегает
ssh подключается
radmin работает
правило 500 (доступ из net1 к SERVER1) работает
не работает net1 to inet, 400,401,450,800
т.е. никак не получается (даже без сквида) выйти на веб, фтп, почту интернета.
Где ошибка?