Добрый день.
Есть роутер под FreeBSD 9.1
Крутится ipfw + kernel nat
Нужно пробрасывать определенный порт внутрь локалки. Казалось бы задача
тривиальная, но бьюсь уже второй день. Суть в том, что пробласываются
только пакеты, приходящие на основной адрес интерфейса, пакеты
приходящие на этот интерфейс на любой другой адрес попадают в НАТ и
просто отбрасываются.
ext0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
ether 44:1e:a1:59:c5:ae
inet 1.1.1.1 netmask 0xfffffffc broadcast x.x.x.x
inet 2.2.2.2 netmask 0xfffffe00 broadcast x.x.x.x
${fwcmd} nat 1 config same_ports reset deny_in if ext0 \
redirect_port tcp 10.0.0.1:25 25
Если делаю телнет на 2.2.2.2:25, то:
# ipfw show
02000 0 0 allow ip from any to any dst-port 25 via int
05000 10 572 nat 1 log logamount 100 ip from any to any via ext0
65533 0 0 allow log logamount 100 ip from any to any
Если делаю телнет на 1.1.1.1:25, то все нормально:
# ipfw show
02000 2 276 allow ip from any to any dst-port 25 via int
05000 12 1012 nat 1 log logamount 100 ip from any to any via ext0
65533 0 0 allow log logamount 100 ip from any to any
Ядро собрано с опциями:
# ipfw
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
sysctl net.inet.ip.fw.
net.inet.ip.fw.static_count: 26
net.inet.ip.fw.default_to_accept: 1
net.inet.ip.fw.tables_max: 128
net.inet.ip.fw.default_rule: 65535
net.inet.ip.fw.verbose_limit: 100
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.autoinc_step: 100
net.inet.ip.fw.one_pass: 1
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_max: 4096
net.inet.ip.fw.dyn_count: 1
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_buckets: 256
net.inet.ip.fw.enable: 1
Если нат конфигурится так:
${fwcmd} nat 1 config same_ports reset deny_in ip 1.1.1.1 \
redirect_port tcp 10.0.0.1:25 2.2.2.2:25
то работает проброс на 2.2.2.2. Может я что-то пропустил или это фича?
Не хочется все возможные варианты подставлять в конфиг...