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

Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-20 11:52:04
qwl
Доброго времени суток.
Пытаюсь и не получается в ipfw настроить сбор в netams.
Имеем: шлюз FreeBSD 7.2 + ipfw + apache + mysql.
При правилах в rc.ipfw все работает:

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

${FwCMD} nat 123 config ip ${IPOut} same_ports log 
${FwCMD} add nat 123 all from ${NetIn} to any 
${FwCMD} add nat 123 all from any to ${IPOut}
при обертывании kernet_nat:

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

${FwCMD} nat 123 config ip ${IPOut} same_ports log 
${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut} (1) 
${FwCMD} add nat 123 all from ${NetIn} to any <- это правило менялось по разному 
${FwCMD} add nat 123 all from any to ${IPOut} <- это правило менялось по разному 
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut} (2)
по 1 divert-у покеты проходят, а по 2му нет.
проверял с natd:

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

${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut} 
${FwCMD} add divert natd ip from ${NetIn} to any out xmit ${LanOut} 
${FwCMD} add divert natd ip from any to ${IPOut} in recv ${LanOut} 
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut}
все хорошо работает.
Заранее благодарю.

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-20 12:01:48
terminus

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

sysctl -a | grep one_pass
:unknown:

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-20 12:20:52
qwl
sysctl -a | grep one_pass:

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

net.inet.ip.fw.one_pass: 1
я этот параметр менял на 0 результата не принесло.

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-20 12:55:46
terminus
Надо выставить в 0 и пробовать при нем - результат должен быть.
Если one_pass=1 то после прохода через правило с натом, трафик будет выходить из ipfw и до правила с дивертом не дойдет.
Попробуйте выставить в 0, перезапустить ipfw (а лучше сам комп целиком), и потом смотрите на счетчики на

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

ipfw -d show
будет видно через какие правила пакетики ходят.

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-22 7:54:39
qwl
рекомендации применил.
sysctl.conf:

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

net.inet.ip.fw.one_pass=0
sysctl -a | grep one_pass:

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

net.inet.ip.fw.one_pass: 0
rc.ipfw:

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

${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut}
${FwCMD} nat 123 config ip ${IPOut} same_ports log                
${FwCMD} add nat 123 all from ${NetIn} to any                     
${FwCMD} add nat 123 all from any to ${IPOut}                     
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut} 
ipfw -d 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 1466  65099 divert 199 ip from 192.168.1.0/24 to any out xmit vr0
00700 1764  97808 nat 123 ip from 192.168.1.0/24 to any                
00800   28   1761 nat 123 ip from any to 192.168.0.33                  
00900    0      0 divert 199 ip from any to 192.168.1.0/24 in recv vr0 
65535 2104 130896 allow ip from any to any                             
нужен ваш совет.

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-22 8:57:33
terminus
:unknown: А если так:

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

${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut}
${FwCMD} nat 123 config ip ${IPOut} same_ports log                
${FwCMD} add nat 123 all from any to any via ${LanOut}
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut}
И еще вопросик - там у вас check-state откуда-то - вы все правила из rc.ipfw и вывода ipfw -d show показали?

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-22 9:55:07
qwl
такое правило даже не принялось:

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

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 176  7834 divert 199 ip from 192.168.1.0/24 to any out xmit vr0
00700   0     0 divert 199 ip from any to 192.168.1.0/24 in recv vr0 
65535 345 24650 allow ip from any to any                             
полный rc.ipfw:

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

${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} add divert 199 ip from ${NetIn} to any out xmit ${LanOut}
${FwCMD} nat 123 config ip ${IPOut} same_ports log                
${FwCMD} add nat 123 all from to any via ${LanOut}                
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut} 

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-22 10:29:17
terminus
не принялось из-за опечатки, наверное:

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

${FwCMD} add nat 123 all from to any via ${LanOut}  
так правильно:

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

${FwCMD} add nat 123 all from any to any via ${LanOut}  

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-22 10:45:55
qwl
что то не так:

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

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  490  22554 divert 199 ip from 192.168.1.0/24 to any out xmit vr0
00700   89   9052 nat 123 ip from any to any via vr0                   
00800    8    961 divert 199 ip from any to 192.168.1.0/24 in recv vr0 
65535 1691 153136 allow ip from any to any                             
по 600 пакеты бегут, я по 700 и 800 пробегает два покета за одну задачу и в переиод когда эта задача сообщает об отказе выполнения.

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-22 11:46:32
qwl
у все заработало :)

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

${FwCMD} nat 123 config if ${LanOut} same_ports reset unreg_only  
${FwCMD} add divert 199 ip from ${NetIn} to any out xmit ${LanOut}
${FwCMD} add nat 123 all from ${NetIn} to any out via ${LanOut}   
${FwCMD} add nat 123 all from any to ${IPOut} in via ${LanOut}    
${FwCMD} add divert 199 ip from any to ${NetIn} in recv ${LanOut} 

Re: Нужна помощь. Netams + kernel_nat.

Добавлено: 2009-08-22 12:35:44
terminus
:Search: в чем же косяк то был? машину перезапустили и только тогда завелось?