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

natd vs kernel nat

Добавлено: 2009-02-18 10:51:33
schizoid
в общем суть вопроса. есть сейчас такая вот схема

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

# ipfw list 2400-3300
02400 divert 8667 ip from table(2) to 192.168.1.0/24
02500 divert 8669 ip from table(1) to any
02600 divert 8669 ip from table(2) to table(3)
02700 divert 8668 ip from table(2) to any
02800 fwd 192.168.40.1 tcp from any to table(3)
02900 fwd 192.168.30.1 ip from 192.168.30.2 to any
03000 fwd 192.168.40.1 ip from 192.168.40.2 to any
03100 divert 8667 ip from any to 192.168.5.54
03200 divert 8668 ip from any to 192.168.30.2
03300 divert 8669 ip from any to 192.168.40.2

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

# ps -aux| grep natd
root   67796  0,0  0,2  3372  1252  ??  Rs   10:01    27:31,14 /sbin/natd -n sk0 -p 8668
root   67798  0,0  0,2  3372   960  ??  Is   10:01     0:00,32 /sbin/natd -n ng2 -p 8667
root   68809  0,0  0,2  3372  1140  ??  Ss   10:03     0:40,77 /sbin/natd -n fxp0 -p 8669 -f /etc/natd.conf
все работает как нада.
но решил таки заюзать ядерный НАТ, т.к. таки смог переехать на фрю 7.1
что делаю

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

${fwcmd} nat 100 config if fxp0
${fwcmd} nat 200 config if sk0
${fwcmd} nat 300 config if ng2

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

        ${fwcmd} add nat 300 log ip from 'table(2)' to 192.168.1.0/2
        ${fwcmd} add nat 100 log ip from 'table(1)' to any
        ${fwcmd} add nat 100 log ip from 'table(2)' to 'table(3)'
        ${fwcmd} add nat 200 log ip from 'table(2)' to any
        ${fwcmd} add fwd ${sgw} log tcp from any to 'table(3)'
        ${fwcmd} add fwd ${dgw} log ip from ${dip} to any
        ${fwcmd} add fwd ${sgw} log ip from ${sip} to any
        ${fwcmd} add nat 300 log ip from any to 192.168.5.54
        ${fwcmd} add nat 100 log ip from any to ${sip}
        ${fwcmd} add nat 200 log ip from any to ${dip}
собсна тоже самое.
но при этом перестает работать данная схема.
т.е. к примеру если на серваке шлюз по умолчанию через sk0 (192.168.30.1), то трафик через канал fxp0 (192.168.40.1) перестает ходить
т.е. грубо говоря, для natd это 02600 divert 8669 ip from table(2) to table(3) срабатывает, а для NAT - нет.

какая между ними разница в прохождении пакетов, между этими двумя натами?

пока логов выложить не могу, т.к. сейча юзается натд (конторе нужен инет)
пока только теоретически выскажете свои предположения.
снкс.

Re: natd vs kernel nat

Добавлено: 2009-02-22 16:58:56
schizoid
в общем вот взялся снова за настройку.
что-то у меня вкрадываются смутные сомнения, на счет того, что пакет при использовании kernel nat больше в файер не попадает.
ведь после диверта, пакет возвращается в фаервол и продолжает путь со следующего правила, т.е. у меня после диверта на НАТД шел форвад и все было пучком. а вот в случае с кернел-НАТом правило форварда вообще не срабатывает, похоже, что пакет при попадании в НАТ просто выходит из фаервола....
кто-нить что-нить про это знает?

Re: natd vs kernel nat

Добавлено: 2009-02-22 19:18:13
schizoid
протупил

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

net.inet.ip.fw.one_pass=0
и все пашет.