Привет Всем
# uname -r
6.2-RELEASE-p7# pfctl -d
pfctl: pf not enabledВ ядре опции:
options NETGRAPH
options NETGRAPH_ASYNC
options NETGRAPH_BPF
options NETGRAPH_BRIDGE
options NETGRAPH_CISCO
options NETGRAPH_DEVICE
options NETGRAPH_ECHO
options NETGRAPH_EIFACE
options NETGRAPH_ETHER
options NETGRAPH_GIF
options NETGRAPH_GIF_DEMUX
options NETGRAPH_TAG
options NETGRAPH_TCPMSS
options NETGRAPH_FEC
options NETGRAPH_HOLE
options NETGRAPH_IFACE
options NETGRAPH_IP_INPUT
options NETGRAPH_KSOCKET
options NETGRAPH_L2TP
options NETGRAPH_LMI
options NETGRAPH_NETFLOW
options NETGRAPH_ONE2MANY
options NETGRAPH_PPP
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_PPPOE
options NETGRAPH_PPTPGRE
options NETGRAPH_RFC1490
options NETGRAPH_SOCKET
options NETGRAPH_SPLIT
options NETGRAPH_TEE
options NETGRAPH_TTY
options NETGRAPH_UI
options NETGRAPH_VJC
options NETGRAPH
options NETGRAPH_IPFW
options LIBALIAS
options NETGRAPH_NAT
options NETGRAPH_NETFLOW
options NETGRAPH_SPLIT
options NETGRAPH_KSOCKET
options NETGRAPH_SOCKET
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_TCPMSS
options NETGRAPH_VJC# ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 10.11.2.1 netmask 0xffffff00 broadcast 10.11.2.255
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.100.99 netmask 0xffffff00 broadcast 192.168.100.255
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
pfsync0: flags=0<> mtu 2020
syncpeer: 224.0.0.240 maxupd: 128
pflog0: flags=0<> mtu 33208
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000rl0 - смотрит в локалку
rl1 - смотрит в инет
Проблема заключается в том, что без правил ipfw netflow не идет некуда, а с ними - машина не видит сеть, хотя пакеты по правилам(этим трем) проходят, flow-capture работает...Имею такой скрипт запуска - подсмотрел пример на http://forum.bestcom.ru/htmlart/unix/ngnetflow.html:
#cat /usr/local/etc/rc.d/simple_flow.sh
#!/bin/sh
ipfw="/sbin/ipfw -q "
#/usr/local/sbin/softflowd -i rl1 -n127.0.0.1:2222
$ipfw -flush$ipfw add 20 netgraph 61 ip from not 10.11.2.0/24 to 192.168.100.99 in via rl1
$ipfw add 21 netgraph 60 ip from 10.11.2.0/24 to not 10.11.2.0/24 out via rl1
$ipfw add 22 netgraph 71 ip from any to any in$ipfw add 65534 allow all from any to any
/sbin/kldload ng_ipfw
/sbin/kldload ng_ether
/sbin/kldload ng_netflow
/sbin/kldload ng_split/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 192.168.100.99usr/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/127.0.0.1:2222/usr/sbin/ngctl msg netflow: setdlt { iface=0 dlt=12 }
/usr/sbin/ngctl msg netflow: setifindex { iface=0 index=5 }/sbin/sysctl net.inet.ip.fw.one_pass=0
/usr/local/bin/flow-capture -n 287 -w /var/db/flows/ 0.0.0.0/127.0.0.1/2222
Может у кого-нить есть готовый скрипт работающий для:
ng_nat + ng_netflow?
Так-с
Покопался в Инете и нашел такой скрипт:
Напоминаю rl0 - 10.11.2.1 - за ней 10.11.2.0/24 локалка
Напоминаю rl1 - 192.168.100.99 - за ней инет~# ./fw start
06400 allow ip from any to any
net.inet.ip.fw.one_pass: 0 -> 0
ipfw: rule 110: setsockopt(IP_FW_DEL): Invalid argument
ipfw: rule 111: setsockopt(IP_FW_DEL): Invalid argument
ipfw: rule 200: setsockopt(IP_FW_DEL): Invalid argument
ipfw: rule 201: setsockopt(IP_FW_DEL): Invalid argument
00200 netgraph 71 ip from not 10.11.2.0/24 to 192.168.100.99 in via rl1
00201 netgraph 70 ip from 10.11.2.0/24 to not 10.11.2.0/24 out via rl1
net.inet.ip.fw.one_pass: 0 -> 0
./fw: /usr/local/sbin/flow-capture: not found
serverb# Read from remote host 192.168.100.99: Connection reset by peerДальше идет риверс - типа неправильный нат, но куда Я не понял :(
~# ping 10.11.2.1
PING 10.11.2.1 (10.11.2.1) 56(84) bytes of data.
64 bytes from 192.168.100.99: icmp_seq=1 ttl=128 time=0.271 ms
64 bytes from 192.168.100.99: icmp_seq=2 ttl=128 time=0.239 ms# cat /fw
#!/bin/shcase "$1" in
start)
EXT_IP="192.168.100.99"
LOCAL_NET="10.11.2.0/24"
/usr/sbin/ngctl mkpeer ipfw: nat 70 out
/usr/sbin/ngctl name ipfw:70 nat
/usr/sbin/ngctl connect ipfw: nat: 71 in
/usr/sbin/ngctl msg nat: setaliasaddr $EXT_IP/usr/sbin/ngctl mkpeer ipfw: netflow 30 iface0
/usr/sbin/ngctl name ipfw:30 netflow/usr/sbin/ngctl msg netflow: setdlt {iface=0 dlt=12}
/usr/sbin/ngctl msg netflow: setifindex {iface=0 index=2}/usr/sbin/ngctl mkpeer netflow: ksocket export inet/dgram/udp
/usr/sbin/ngctl msg netflow:export connect inet/127.0.0.1:2222
/sbin/ipfw add 6400 allow all from any to any
/sbin/sysctl net.inet.ip.fw.one_pass=0
ipfw delete 110
ipfw delete 111
ipfw delete 200
ipfw delete 201
# /sbin/ipfw add 110 ngtee 30 ip from any to any out via ng*
# /sbin/ipfw add 111 ngtee 30 ip from any to any in via ng*
/sbin/ipfw add 200 netgraph 71 all from not $LOCAL_NET to $EXT_IP in via rl1
/sbin/ipfw add 201 netgraph 70 all from $LOCAL_NET to not $LOCAL_NET out via rl1
/sbin/sysctl net.inet.ip.fw.one_pass=0
/usr/local/sbin/flow-capture -n 287 -w /var/db/flows/ 0.0.0.0/127.0.0.1/2222
/usr/local/bin/flow-capture -n 287 -w /var/db/flows/ 0.0.0.0/127.0.0.1/2222
;;
stop)
/usr/sbin/ngctl shutdown nat:
/usr/sbin/ngctl shutdown netflow:
;;
restart)
sh $0 stop
sleep 5
sh $0 start
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop | restart }"
echo ""
exit 64
;;
esac
В общем насколько Я понял вся загвозка в том что у Меня по умолчанию DENY all в ipfw
>В общем насколько Я понял вся загвозка в том что у Меня
>по умолчанию DENY all в ipfwНет. Вся загвоздка в том, что netgraph нада еще настраивать и настраивать. Сам по себе ng_nat ничем тебе не поможет.
Итак, начнем по порядку....
1. Скомпилировать ядро с поддержкой ng_nat+ng_netflow. Это сделано.
2. Установить flow-tools из портов. Тоже, вроде сделано.
3. В netgraph "Нарисовать" схему того, что, собственно требуется. (netGRAPH, как ни как... ) По этой теме есть хорошая сцылка http://www.citrin.ru/netgraph/
4. Заворачивать с помощью ipfw пакеты в netgraph (например так: ipfw add 1000 netgraph ХХХ ip from any to any in via ${inet_iface}; ipfw add 1100 netgraph YYY ip from any to any out via ${inet_iface}; )
5. Запустить flow-capture со всеми необходимыми параметрами.Есть хинт: Поскольку flow-capture сваливает сурцы в своем, хитрожопом формате, то посмотреть их можно только с помощью утилиты flow-print. Однако, сам flow-capture имеет очень полезную опцию -R /myscript. Эта опция предписывает запускать указанный скрипт (или не скрипт) после каждго сброса дампа на диск.
А, пардон - не увидел. С настойкой netgraph вы уже разобрались...
Я бы предложил такой вариант скрипта для настройки:ngctl="/usr/sbin/ngctl"
alias="192.168.100.99 "
nfport="4444"
${ngctl} mkpeer ipfw: split 111 mixed
${ngctl} name ipfw:111 split111${ngctl} mkpeer ipfw: nat 222 in
${ngctl} name ipfw:222 nat222${ngctl} mkpeer nat222: split out mixed
${ngctl} name nat222:out split111${ngctl} mkpeer split222: netflow out iface0
${ngctl} name split222:out flowsensor${ngctl} connect split111: flowsensor: out iface1
${ngctl} connect flowsensor: split111: out0 in
${ngctl} connect flowsensor: split222: out1 in${ngctl} mkpeer flowsensor: ksocket export inet/dgram/udp
${ngctl} name flowsensor:export flowsend${ngctl} msg nat222: setaliasadr ${alias}
${ngctl} msg flowsensor: setdlt { iface=0 dlt=12 }
${ngctl} msg flowsensor: setdlt { iface=1 dlt=12 }${ngctl} msg flowsensor: setifindex { iface=0 index=0 }
${ngctl} msg flowsensor: setifindex { iface=1 index=0 }${ngctl} msg flowsensor: settimeouts { inactive=10 active=10 }
${ngctl} msg flowsend: connect inet/127.0.0.1/${nfport}
Использоать так:
ipfw add 1000 netgraph 111 ip from any to any in via ${inet_iface}
ipfw add 1100 netgraph 222 ip from any to any out via ${inet_iface};
Вот трабла со всеми данными - ХЕЛП МИ!!!!!
http://www.netup.ru/phpbb/viewtopic.php?t=4010&postdays=0&po...