Страница 1 из 1

redirect_port + kernel_nat + Netams = я в тупике!

Добавлено: 2011-06-22 5:30:47
qwl
Доброго времени суток.

имеем FreeBSD8 + ipfw + redirect_port + Netams

задача: Netams рулит трафиким, redirect_port пробрасывает из вне во внутрь.

вот чего получается:
все работает,НО ПО ОТДЕЛЬНОСТИ!
т.е.
имеем:

Код: Выделить всё

net.inet.ip.fw.one_pass=1
и

Код: Выделить всё

${FwCMD} nat 1 config if ${LanOut} same_ports reset unreg_only redirect_port tcp 192.168.1.12:5000 5000
${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut}
${FwCMD} add nat 1 ip from any to any via ${LanOut}
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut}
но при этом Netams не собирает трафик, по второму divert-у не идет трафик.
если делаем

Код: Выделить всё

net.inet.ip.fw.one_pass=0
то полностью работает Netams, но не работает redirect_port.
это меня завело в тупик, подскажите как это победить?
P.S. перехот на обычный NAT всегда успеется, давайте попробуем решить эту ситуацию.

Re: redirect_port + kernel_nat + Netams = я в тупике!

Добавлено: 2011-06-22 11:35:03
ivan__
Полный конфиг выкладывай

Re: redirect_port + kernel_nat + Netams = я в тупике!

Добавлено: 2011-06-22 11:41:45
qwl
пока так, убрал все чтоб не мешалось

Код: Выделить всё

#!/bin/sh 

FwCMD="/sbin/ipfw -q" 

LanOut="vr2" 
NetOut="192.168.0.0/24" 
IPOut="192.168.0.111"  - во вне 

LanIn="vr1" 
NetIn="192.168.1.0/24" 
IPIn="192.168.1"  - во внутрь 

${FwCMD} -f flush 
${FwCMD} -f pipe flush 
${FwCMD} -f queue flush 
${FwCMD} -f table 0 flush 

${FwCMD} add check-state 

${FwCMD} add allow ip from any to any via lo0 
${FwCMD} add deny not icmp from "table(0)" to me 

${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} nat 1 config if ${LanOut} same_ports reset unreg_only redirect_port tcp 192.168.1.12:5000 5000 
${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut} 
${FwCMD} add nat 1 ip from any to any via ${LanOut} 
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut}
сейчас

Код: Выделить всё

net.inet.ip.fw.one_pass=1
ipfw list

Код: Выделить всё

00100 check-state
00200 allow ip from any to any via lo0
00300 deny not icmp from table(0) to me
00400 deny ip from any to 127.0.0.0/8
00500 deny ip from 127.0.0.0/8 to any
00600 divert 199 ip from 192.168.1.0/24 to any out xmit vr2
00700 nat 1 ip from any to any via vr2
00800 divert 199 ip from any to 192.168.1.0/24 in recv vr2
65535 allow ip from any to any
и ipfw show

Код: Выделить всё

00100    0      0 check-state
00200    0      0 allow ip from any to any via lo0
00300    0      0 deny not icmp from table(0) to me
00400    0      0 deny ip from any to 127.0.0.0/8
00500    0      0 deny ip from 127.0.0.0/8 to any
00600  346  20760 divert 199 ip from 192.168.1.0/24 to any out xmit vr2
00700 1039 196654 nat 1 ip from any to any via vr2
00800    0      0 divert 199 ip from any to 192.168.1.0/24 in recv vr2
65535  659  39540 allow ip from any to any
при этих правилах работает redirect_port и я спокойно из вне попадаю куда надо.
но какда я меняю на 0

Код: Выделить всё

net.inet.ip.fw.one_pass=0
получается:
ipfw list

Код: Выделить всё

00100 check-state
00200 allow ip from any to any via lo0
00300 deny not icmp from table(0) to me
00400 deny ip from any to 127.0.0.0/8
00500 deny ip from 127.0.0.0/8 to any
00600 divert 199 ip from 192.168.1.0/24 to any out xmit vr2
00700 nat 1 ip from any to any via vr2
00800 divert 199 ip from any to 192.168.1.0/24 in recv vr2
65535 allow ip from any to any
и ipfw show

Код: Выделить всё

00100    0      0 check-state
00200    0      0 allow ip from any to any via lo0
00300    0      0 deny not icmp from table(0) to me
00400    0      0 deny ip from any to 127.0.0.0/8
00500    0      0 deny ip from 127.0.0.0/8 to any
00600 1098  65880 divert 199 ip from 192.168.1.0/24 to any out xmit vr2
00700 2196 131760 nat 1 ip from any to any via vr2
00800 1098  65880 divert 199 ip from any to 192.168.1.0/24 in recv vr2
65535  659  39540 allow ip from any to any
при тех же правилах redirect_port не работает, но зато подсчет идет полностью.

Re: redirect_port + kernel_nat + Netams = я в тупике!

Добавлено: 2011-06-22 13:42:14
ivan__
qwl писал(а):при тех же правилах redirect_port не работает, но зато подсчет идет полностью.
Попробуй skipto добавить

Код: Выделить всё

${FwCMD} 00750 skipto 00900 tcp from me to 192.168.1.12 dst-port 5000 in recv ${LanOut}

Re: redirect_port + kernel_nat + Netams = я в тупике!

Добавлено: 2011-06-22 13:49:14
qwl
ivan__ писал(а):
qwl писал(а):при тех же правилах redirect_port не работает, но зато подсчет идет полностью.
Попробуй skipto добавить

Код: Выделить всё

${FwCMD} 00750 skipto 00900 tcp from me to 192.168.1.12 dst-port 5000 in recv ${LanOut}
не помогло, результат остался тот же.

Re: redirect_port + kernel_nat + Netams = я в тупике!

Добавлено: 2011-06-22 15:06:09
ivan__
qwl писал(а):
ivan__ писал(а):
qwl писал(а):при тех же правилах redirect_port не работает, но зато подсчет идет полностью.
Попробуй skipto добавить

Код: Выделить всё

${FwCMD} 00750 skipto 00900 tcp from me to 192.168.1.12 dst-port 5000 in recv ${LanOut}
не помогло, результат остался тот же.
Забыл add добавить :smile:

Код: Выделить всё

${FwCMD} add 00750 skipto 00900 tcp from me to 192.168.1.12 dst-port 5000 in recv ${LanOut}

Re: redirect_port + kernel_nat + Netams = я в тупике!

Добавлено: 2011-06-23 6:19:00
qwl
:) add я добавил, суть понял.
Спасибо, ты подсказал верно, это я ступил, сегодня на свежую голову еще раз все проверил и заработало :)
надо:

Код: Выделить всё

net.inet.ip.fw.one_pass=0

Код: Выделить всё

${FwCMD} nat 1 config if ${LanOut} same_ports reset unreg_only redirect_port tcp 192.168.1.12:5000 5000 
${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut} 
${FwCMD} add nat 1 ip from any to any via ${LanOut} 
${FwCMD} add skipto 00950  tcp from me to 192.168.1.12 dst-port 5000 in recv ${LanOut}
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut}