Здравствуйте. Уже неделю бьюсь с ipfw и natd. Есть шлюз, локальная сеть в которой есть MAIL сервер расположенный на одтельной машинке в сети(в DMZ).
Стоит задача средствами ipfw + natd разрешить SMTP пакетам идущим из интернета на шлюз, пересылаться на DMZ_MAIL сервер.
Помимо этого разрешить некотором компьютерам локальной сети осуществлять выход в интернет через NAT на шлюзе.
Бью с этим неделю. Если настрою одно второе отпадает и наоборот. Подозреваю что неправильная последовательность правил для ipfw.
вот мои конфиги./etc/natd.conf:
log yes
log_denied no
same_ports yes
use_sockets yes
unregistered_only yes
dynamic yes
interface bge1
redirect_port tcp 192.168.7.101:25 25
firewall.sh:
#!/bin/sh
INET_IF="bge1"
LAN_IF="bge0"
INET_IP="xxx.xx.xx.xx"
LAN_IP="192.168.7.100"
MAIL_IP="192.168.7.101"
NET="192.168.7.0/24"
${ipfw} -f flush
${ipfw} add allow ip from any to any via lo0
${ipfw} add allow tcp from any to any established
${ipfw} add allow ip from ${INET_IP} to any out xmit ${INET_IF}
${ipfw} add allow icmp from any to any icmptypes 0,8,11
#----------------------DMZ SERVER-------------
${ipfw} add allow tcp from any to ${MAIL_IP} 25
${ipfw} add allow tcp from ${MAIL_IP} 25 to any
#------------------------------------------------
#-----------------------------NAT for VIP------------------
#------------------------------USER1-------------------
${ipfw} add allow tcp from 192.168.7.99 to any 9903
${ipfw} add allow tcp from any 9903 to 192.168.7.99
#------------------------------------------------------
#-----------------------------------------------------------
${ipfw} add divert natd ip from ${NET} to any out via ${INET_IF}
${ipfw} add divert natd ip from any to ${INET_IP} in via ${INET_IF}
#Запрещаем все что было не разрешено
${ipfw} add deny ip from any to any
ядро скомпилено с IPFIREWALL_DEFAULT_TO_ACCEPT
IPDIVER включен и прочие опции IPFIREWALL