Приветствую всех.
Сразу задам вопрос - ибо если это невозможно, то нет смысла просматривать конфиги, которые приведу ниже.
Вопрос: Может ли один NATD (привязанный к внешнему интерфейсу) транслировать пакеты на несколько public IP (алиасов на этом же внешнем интерфейсе). Или же для этого нужно поднимать еще natd - для каждого алиаса и привязывать по ним.
Если возможно, то продолжаю.
Для трансляции использую опцию redirect_adress и разрешающие правила в фаерволе на вход пакетов на определ порт на каждый алиас. Например
add allow tcp from any to ${IpOut} 80 via ${NIC_Out}
add allow tcp from any to ${IpOutAlias1} 80 via ${NIC_Out}
add allow tcp from any to ${IpOutAlias2} 80 via ${NIC_Out}
но эта конструкция не работает.
И толька при замене этих правил другим
add allow tcp from any to any 80 via ${NIC_Out}
пакеты ходят как нужно.
Подозреваю что возможно намудрил в фаерволе - но не могу определить где именно.
Для решивших поучавстовать в решении проблемы привожу конфигиrc.conf
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"
natd_enable="YES"
natd_interface="sk0"
natd_flags="-f /etc/natd.conf"
defaultrouter="195.xx.xx.113"
ifconfig_sk0="inet 195.xx.xx.114 netmask 255.255.255.240"
ifconfig_sk0_alias0="inet 195.xx.xx.115 netmask 255.255.255.255"
ifconfig_sk0_alias1="inet 195.xx.xx.116 netmask 255.255.255.255"
ifconfig_sk1="inet 10.0.1.1 netmask 255.255.255.0"
думаю тут все правильно :-)
natd.conf
log yes
log_denied yes
log_ipfw_denied yes
same_ports yes
use_sockets yes
unregistered_only yes
redirect_address 10.0.1.10 195.xx.xx.115
redirect_address 10.0.1.11 195.xx.xx.116
думаю тут проблем тоже нету.
ipfw.rules
#!/bin/sh
FwCMD="/sbin/ipfw -q " # location of ipfw
NIC_Out="sk0" # External interface
IpOut="195.xx.xx.114" # External IP address
IpOutAl1="195.xx.xx.115" # External IP address alias1
IpOutAl2="195.xx.xx.116" # External IP address alias2
NetOut="195.xx.xx.112/28" # External network
NIC_In="sk1" # Internal interface
IpIn="10.0.1.1" # Internal IP address
NetIn="10.0.1.0/24" # Internal network
${FwCMD} -f flush
${FwCMD} add check-state
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
${FwCMD} add deny ip from ${NetIn} to any in via ${NIC_Out}
${FwCMD} add deny ip from ${NetOut} to any in via ${NIC_In}
${FwCMD} add deny icmp from any to any frag
${FwCMD} add deny log icmp from any to 255.255.255.255 in via ${NIC_Out}
${FwCMD} add deny log icmp from any to 255.255.255.255 out via ${NIC_Out}
${FwCMD} add divert natd ip from ${NetIn} to any out via ${NIC_Out}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${NIC_Out}
${FwCMD} add divert natd ip from any to ${IpOutAl1} in via ${NIC_Out}
${FwCMD} add divert natd ip from any to ${IpOutAl2} in via ${NIC_Out}
${FwCMD} add allow ip from any to ${NetIn} in via ${NIC_In}
${FwCMD} add allow ip from ${NetIn} to any out via ${NIC_In}
${FwCMD} add allow tcp from any to any established
${FwCMD} add allow ip from ${IpOut} to any out xmit ${NIC_Out}
${FwCMD} add allow ip from ${IpOutAl1} to any out xmit ${NIC_Out}
${FwCMD} add allow ip from ${IpOutAl2} to any out xmit ${NIC_Out}
${FwCMD} add allow udp from any 53 to any via ${NIC_Out}
${FwCMD} add allow udp from any to any 53 via ${NIC_Out}
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
${FwCMD} add allow tcp from any to any 80 via ${NIC_Out}
#${FwCMD} add allow tcp from any to ${IpOut} 80 via ${NIC_Out}
#${FwCMD} add allow tcp from any to ${IpOutAl1} 80 via ${NIC_Out}
#${FwCMD} add allow tcp from any to ${IpOutAl2} 80 via ${NIC_Out}
${FwCMD} add allow ip from any to any via ${NIC_In}
${FwCMD} add 56000 allow tcp from any to me 22 via ${NIC_Out}
${FwCMD} add 65000 deny ip from any to any
Если кто знает - укажите на ошибку. Спасибо.