FreeBSD (netgraph)

Технические вопросы по UTM 5.0
weldpua2008
Сообщения: 19
Зарегистрирован: Пн сен 24, 2007 13:02

Сообщение weldpua2008 »

Вопрос - что Я делаю не так???

weldpua2008
Сообщения: 19
Зарегистрирован: Пн сен 24, 2007 13:02

Сообщение weldpua2008 »

Тут же есть те у кого работает ng_nat - поделитесь как Вы его настраивали?

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

по манам, чес слово.

weldpua2008
Сообщения: 19
Зарегистрирован: Пн сен 24, 2007 13:02

Сообщение weldpua2008 »

mikkey finn писал(а):по манам, чес слово.
угу - говорю man ng_nat пример от туда - не работает, при этом man ng_netflow - пример работает
Я блин не из-за лени пишу...
Если используется natd совмесно с ng_nat - так и напишите, если нет -то что Я не так делаю?

Instruktor
Сообщения: 131
Зарегистрирован: Ср авг 10, 2005 21:32
Откуда: Москва

Сообщение Instruktor »

Работает ng_nat + ng_ipfw, всё по манам.

После сборки графы проверь что она правильно собрана (ngctl list, ngctl show nat: и т.д.), что все ноды подняты, все хуки в правильном зацепе.

Все ли соответствующие модули (ng_*) или подгружены динамично.

weldpua2008
Сообщения: 19
Зарегистрирован: Пн сен 24, 2007 13:02

Сообщение weldpua2008 »

Instruktor писал(а):Работает ng_nat + ng_ipfw, всё по манам.

После сборки графы проверь что она правильно собрана (ngctl list, ngctl show nat: и т.д.), что все ноды подняты, все хуки в правильном зацепе.

Все ли соответствующие модули (ng_*) или подгружены динамично.
Вопрос - надо ли собирать её в ядре или модулями?
Что конкретно надо в ядре указать...

Instruktor
Сообщения: 131
Зарегистрирован: Ср авг 10, 2005 21:32
Откуда: Москва

Сообщение Instruktor »

У меня всё работает в ядре, но и с подгруженными модулями проблем не ощущалось.

Кусок моего конфига, касающийся нетграфа:

#--------------------------- NETGRAPH -------------------------------
options NETGRAPH
options NETGRAPH_IPFW
options LIBALIAS
options NETGRAPH_NAT
options NETGRAPH_NETFLOW
options NETGRAPH_SPLIT
options NETGRAPH_KSOCKET
options NETGRAPH_SOCKET
options NETGRAPH_ETHER
options NETGRAPH_IFACE

#----- MPD ----
options NETGRAPH_PPP
options NETGRAPH_BPF
options NETGRAPH_VJC
options NETGRAPH_TEE
options NETGRAPH_PPTPGRE
options NETGRAPH_TCPMSS

Arti
Сообщения: 266
Зарегистрирован: Пн окт 01, 2007 02:44

Сообщение Arti »

weldpua2008 писал(а):Стоит:
192.168.100.1(шлюз в инет) ---192.168.100.99 (ТУТ нат хочу сделать)| 10.11.2.1(интерфейс в локалку) --- 10.11.2.3 (машина с WinXP)

...

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

#!/bin/sh
ngctl="/usr/sbin/ngctl "
ipfw="/sbin/ipfw " 
ifconfig="/sbin/ifconfig "
tcpdumt="/usr/sbin/tcpdump"

nat_ip="192.168.100.99"

$ngctl mkpeer ipfw: nat 60 out
$ngctl name ipfw:60 nat
$ngctl connect ipfw: nat: 61 in
$ngctl msg nat: setaliasaddr $nat_ip
   
$ipfw add 10 skipto 65400 ip from 192.168.100.1 to me
$ipfw add 300 netgraph 61 all from any to me in via rl1
$ipfw add 400 netgraph 60 all from 10.11.2.0/24 to not me out via rl1
$ipfw add 500 fwd 192.168.100.1 all from me to any 
$ipfw delete 10
$tcpdump -c 1000 >/ng_nat/tcpdump &

sleep 60
$ngctl list >/ng_nat/ngctllist
$ipfw show>/ng_nat/ipfwshow
$ipfw list>/ng_nat/ipfwlist
$ifconfig >/ng_nat/ifconfig
$ipfw -f flush
Имхо у Вас всё слишком запутано.
Если шлюз по-умолчанию один единственный, то форвард не нужен, да форвардить нужно пакеты, прошедшие маскарадинг в ng_nat - т.е. после маскарадинга пакеты должны возвращаться в ipfw.

Польза от скипа в правиле 10 крайне сомнительна (ну если только 192.168.100.1 является источником большого трафика, идущего к данному узлу) , кроме того 10 правило удаляется..

В правиле 400 пакеты ловятся на выходе rl1 т.е. они уже скорей всего идут не к этой машине и от "to not me" пользы мало.

как вариант, если конструкция "to not me" Вам очень нравится, можно так:

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

300 netgraph 61 all from any to ${nat_ip} in via rl1
400 netgraph 60 all from 10.11.2.0/24 to not me in via rl0
т.е. ловим входящие пакеты от 10.11.2.0/24 на rl0.

Ну и флуш стоит почему-то в конце, узлы в нетграфе создаются безусловно (а если там уже есть нат ?), если по-умолчанию в ipfw стоит запрещающие правило, то не хватает разрешающего правила в конце (в списке правил оно есть, но от куда от там не очень понятно)...

weldpua2008
Сообщения: 19
Зарегистрирован: Пн сен 24, 2007 13:02

Сообщение weldpua2008 »

я так понял что у Меня тупо где-то провтыкано что-то....

weldpua2008
Сообщения: 19
Зарегистрирован: Пн сен 24, 2007 13:02

Сообщение weldpua2008 »

Instruktor писал(а):У меня всё работает в ядре, но и с подгруженными модулями проблем не ощущалось.

Кусок моего конфига, касающийся нетграфа:

#--------------------------- NETGRAPH -------------------------------
options NETGRAPH
options NETGRAPH_IPFW
options LIBALIAS
options NETGRAPH_NAT
options NETGRAPH_NETFLOW
options NETGRAPH_SPLIT
options NETGRAPH_KSOCKET
options NETGRAPH_SOCKET
options NETGRAPH_ETHER
options NETGRAPH_IFACE

#----- MPD ----
options NETGRAPH_PPP
options NETGRAPH_BPF
options NETGRAPH_VJC
options NETGRAPH_TEE
options NETGRAPH_PPTPGRE
options NETGRAPH_TCPMSS
Сделал ядро Генерик и это туда добавил....
+ipfw+dummy net+pf+ALTQ

weldpua2008
Сообщения: 19
Зарегистрирован: Пн сен 24, 2007 13:02

Сообщение weldpua2008 »

в общем не работает :(

После завтра буду переустанавливать все заново - може т кто-то опишет как он добился работающего результата?
кинфиг ядра+rc.conf?

Роман
Сообщения: 265
Зарегистрирован: Вс май 08, 2005 00:55
Откуда: MSK

Сообщение Роман »

Все проще.

==== Делаем ng_nat с ng_netflow ======

/usr/sbin/ngctl mkpeer ipfw: nat 60 out
/usr/sbin/ngctl name ipfw:60 nat
/usr/sbin/ngctl connect ipfw: nat: 61 in
/usr/sbin/ngctl msg nat: setaliasaddr (IP внешнего интерфейса)

${fwcmd} add 300 netgraph 61 ipv4 from not (Внутренняя сетка /24 и т.п.) to (IP внешнего интерфейса) in via (внешний интерфейс)
${fwcmd} add 400 netgraph 60 ipv4 from (Внутренняя сетка /24 и т.п.) to not (Внутренняя сетка /24 и т.п.) out via (внешний интерфейс)
${fwcmd} add 500 netgraph 71 ip from any to any in

# тут Ваши правила ipfw

/sbin/sysctl net.inet.ip.fw.one_pass=0
/usr/sbin/ngctl mkpeer ipfw: netflow 71 iface0
/usr/sbin/ngctl name ipfw:71 netflow
/usr/sbin/ngctl connect ipfw: netflow: 70 out0
/usr/sbin/ngctl mkpeer netflow: ksocket export inet/dgram/udp
/usr/sbin/ngctl msg netflow:export connect inet/(IP коллектора UTM):9996
/usr/sbin/ngctl msg netflow: setdlt { iface=0 dlt=12 }
/usr/sbin/ngctl msg netflow: setifindex { iface=0 index=5 }



-bash-2.05b# ngctl list
There are 5 total nodes:
Name: ngctl44294 Type: socket ID: 00000010 Num hooks: 0
Name: <unnamed> Type: ksocket ID: 0000000c Num hooks: 1
Name: netflow Type: netflow ID: 00000008 Num hooks: 3
Name: nat Type: nat ID: 00000003 Num hooks: 2
Name: ipfw Type: ipfw ID: 00000001 Num hooks: 4

LMik
Сообщения: 39
Зарегистрирован: Вт фев 14, 2006 19:55

Сообщение LMik »

А не подскажет ли кто-нибудь как сделать из ng_netgraph два потока нетфлоу на разные ипы?

Аватара пользователя
Ata-man
Сообщения: 427
Зарегистрирован: Пт янв 21, 2005 10:04
Откуда: Екатеринбург

Сообщение Ata-man »

разделить поток, идущий на ng_netflow через ng_split. Или ловить через flow-fanout и отправлять на разные IP

LMik
Сообщения: 39
Зарегистрирован: Вт фев 14, 2006 19:55

Сообщение LMik »

Ata-man писал(а):разделить поток, идущий на ng_netflow через ng_split. Или ловить через flow-fanout и отправлять на разные IP
Насчет сплита уже думал но никак не пойму ничего в этих крючечках :( Где-нибудь пример можно посмотреть?

Ответить