Здравствуйте. Уже неделю бьюсь с 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
>Бью с этим неделю. Если настрою одно второе отпадает и наоборот. Подозреваю
>что неправильная последовательность правил для ipfw.Правильно подозреваете.
Чтобы мне не заниматься тавтологией,
читайте правильную статью
http://www.opennet.me/base/net/ipfw_flow_map.txt.htmlПримерно, должно быть так.
У Вас много еще чего не хватает в правилах ipfw, но
это от квалификации уже зависит.
>[оверквотинг удален]
>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 divert natd ip from any to any via ${INET_IF}
...
...
>[оверквотинг удален]
>#-----------------------------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 deny ip from any to any