FreeBSD (netgraph)
-
- Сообщения: 19
- Зарегистрирован: Пн сен 24, 2007 13:02
-
- Сообщения: 19
- Зарегистрирован: Пн сен 24, 2007 13:02
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
-
- Сообщения: 19
- Зарегистрирован: Пн сен 24, 2007 13:02
-
- Сообщения: 131
- Зарегистрирован: Ср авг 10, 2005 21:32
- Откуда: Москва
-
- Сообщения: 19
- Зарегистрирован: Пн сен 24, 2007 13:02
Вопрос - надо ли собирать её в ядре или модулями?Instruktor писал(а):Работает ng_nat + ng_ipfw, всё по манам.
После сборки графы проверь что она правильно собрана (ngctl list, ngctl show nat: и т.д.), что все ноды подняты, все хуки в правильном зацепе.
Все ли соответствующие модули (ng_*) или подгружены динамично.
Что конкретно надо в ядре указать...
-
- Сообщения: 131
- Зарегистрирован: Ср авг 10, 2005 21:32
- Откуда: Москва
У меня всё работает в ядре, но и с подгруженными модулями проблем не ощущалось.
Кусок моего конфига, касающийся нетграфа:
#--------------------------- 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
Кусок моего конфига, касающийся нетграфа:
#--------------------------- 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
Имхо у Вас всё слишком запутано.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
Ну и флуш стоит почему-то в конце, узлы в нетграфе создаются безусловно (а если там уже есть нат ?), если по-умолчанию в ipfw стоит запрещающие правило, то не хватает разрешающего правила в конце (в списке правил оно есть, но от куда от там не очень понятно)...
-
- Сообщения: 19
- Зарегистрирован: Пн сен 24, 2007 13:02
-
- Сообщения: 19
- Зарегистрирован: Пн сен 24, 2007 13:02
Сделал ядро Генерик и это туда добавил....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
-
- Сообщения: 19
- Зарегистрирован: Пн сен 24, 2007 13:02
Все проще.
==== Делаем 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
==== Делаем 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