Настройка NGNAT вместо NATD
Добавлено: Ср фев 13, 2008 10:15 pm
Настраивал ли кто сие чудо? из достоинств - прокачка более 9 мегабайт/с при загрузке процессора менее 1% 

ABillS - ~AsmodeuS~ Billing System
http://abills.net.ua/forum/
Код: Выделить всё
kldload netgraph.ko
kldload ng_ipfw.ko
Код: Выделить всё
netgraph_load="YES"
ng_ipfw_load="YES"
Код: Выделить всё
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
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_FORWARD_EXTENDED
Код: Выделить всё
#!/bin/sh
. /etc/rc.subr
name="ngnat"
rcvar=`set_rcvar`
start_cmd="ngnat_start"
stop_cmd="ngnat_stop"
load_rc_config $name
eval "${rcvar}=\${${rcvar}:-'NO'}"
ngnat_aliasaddr1=${ngnat_aliasaddr1:-"0.0.0.0"}
ngnat_aliasaddr2=${ngnat_aliasaddr2:-"0.0.0.0"}
ngnat_export=${ngnat_export:-"127.0.0.1:9999"}
ngnat_start() {
echo "Setup ng_nat and ng_netflow"
/usr/sbin/ngctl -f- <<-SEQ
mkpeer ipfw: netflow 1 iface0
name ipfw:1 netflow
mkpeer netflow: split out0 in
name netflow:out0 split1
mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/$ngnat_export
connect split1: netflow: out iface1
connect ipfw: netflow: 4 out1
mkpeer split1: nat mixed out
name split1:mixed nat1
connect ipfw: nat1: 23 in
connect ipfw: netflow: 5 iface2
connect ipfw: netflow: 6 out2
msg nat1: setaliasaddr $ngnat_aliasaddr1
msg netflow: setdlt { iface=0 dlt=12 }
msg netflow: setifindex { iface=0 index=1000 }
msg netflow: setdlt { iface=1 dlt=12 }
msg netflow: setifindex { iface=1 index=1001 }
msg netflow: setdlt { iface=2 dlt=12 }
msg netflow: setifindex { iface=2 index=1002 }
connect ipfw: netflow: 7 iface3
mkpeer netflow: split out3 in
name netflow:out3 split2
mkpeer split2: nat mixed out
name split2:mixed nat2
connect ipfw: nat2: 89 in
connect split2: netflow: out iface4
connect ipfw: netflow: 40 out4
msg nat2: setaliasaddr $ngnat_aliasaddr2
msg netflow: setdlt { iface=3 dlt=12 }
msg netflow: setifindex { iface=3 index=1003 }
msg netflow: setdlt { iface=4 dlt=12 }
msg netflow: setifindex { iface=4 index=1004 }
SEQ
}
ngnat_stop() {
/usr/sbin/ngctl -f- <<-SEQ
shutdown nat1:
shutdown nat2:
shutdown split1:
shutdown split2:
shutdown netflow:
SEQ
}
run_rc_command "$1"
Код: Выделить всё
ngnat_enable="YES"
ngnat_aliasaddr1="192.168.11.2"
ngnat_aliasaddr2="192.168.12.2"
ngnat_export="127.0.0.1:9996"
Код: Выделить всё
/usr/local/etc/rc.d/ngnat.sh start
Код: Выделить всё
# ngctl
+ ls
There are 8 total nodes:
Name: ngctl2061 Type: socket ID: 00000077 Num hooks: 0
Name: nat2 Type: nat ID: 00000076 Num hooks: 2
Name: split2 Type: split ID: 00000075 Num hooks: 3
Name: nat1 Type: nat ID: 00000074 Num hooks: 2
Name: <unnamed> Type: ksocket ID: 00000073 Num hooks: 1
Name: split1 Type: split ID: 00000072 Num hooks: 3
Name: netflow Type: netflow ID: 00000071 Num hooks: 11
Name: ipfw Type: ipfw ID: 00000003 Num hooks: 8
+
+ show netflow:
Name: netflow Type: netflow ID: 00000071 Num hooks: 11
Local hook Peer name Peer type Peer ID Peer hook
---------- --------- --------- ------- ---------
out4 ipfw ipfw 00000003 40
iface4 split2 split 00000075 out
out3 split2 split 00000075 in
iface3 ipfw ipfw 00000003 7
out2 ipfw ipfw 00000003 6
iface2 ipfw ipfw 00000003 5
out1 ipfw ipfw 00000003 4
iface1 split1 split 00000072 out
export <unnamed> ksocket 00000073 inet/dgram/udp
out0 split1 split 00000072 in
iface0 ipfw ipfw 00000003 1
+
Код: Выделить всё
add 10 netgraph 1 ip from 10.16.0.0/16 to not 192.168.11.0/24,10.10.0.0/16 via "tun*" in
add 20 netgraph 7 ip from 10.15.0.0/16 to not 192.168.11.0/24,10.10.0.0/16 via "tun*" in
add 30 fwd 192.168.11.1 ip from 192.168.11.2 to not 192.168.11.0/24
add 40 fwd 192.168.12.1 ip from 192.168.12.2 to not 192.168.12.0/24
add 50 netgraph 23 ip from any to any via fxp0 in
add 60 netgraph 89 ip from any to any via fxp1 in
немного болелsopov писал(а):Это где про Paysys?Да , что-то на этой неделе Асмодеуса слабо видно - наверное пишет чегото новое...
я с ним по асе общался по ходу, но на форуме очень часто сам задал вопрос, а потом сам ответилsopov писал(а):Это где про Paysys?Да , что-то на этой неделе Асмодеуса слабо видно - наверное пишет чегото новое...
т.е. обычный натд не может прокачать 9ть ? и вообще у меня при прокачке около 0,5-0,6 мб натд-ом - загрузка 3,6 % ЦПУ (но это не один человек качает, а 120-130.из достоинств - прокачка более 9 мегабайт/с при загрузке процессора менее 1%
Код: Выделить всё
v-lan# ps -auxc | head -20
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 11 99.1 0.0 0 8 ?? RL 2Feb08 0:00.00 idle: cpu1
root 12 14.3 0.0 0 8 ?? RL 2Feb08 13806:32.32 idle: cpu0
root 20461 4.4 0.6 9668 9080 ?? R 9:10PM 0:01.02 perl
root 13 3.7 0.0 0 8 ?? WL 2Feb08 404:53.78 swi1: net
www 20441 3.5 1.1 25576 17344 ?? S 9:09PM 0:00.83 httpd
www 20410 2.8 1.0 24536 16316 ?? S 9:09PM 0:00.91 httpd
www 124 2.4 0.9 22736 14528 ?? S 3:51PM 1:35.80 httpd
www 119 2.3 1.2 27064 18592 ?? S 3:51PM 1:44.78 httpd
www 20448 2.3 1.1 26152 17328 ?? S 9:09PM 0:00.78 httpd
root 307 2.1 0.7 10832 10340 ?? Ss 2Feb08 424:39.33 natd
root 33 2.1 0.0 0 8 ?? WL 2Feb08 229:13.46 irq21: rl0 rl3
www 118 0.8 0.9 22440 14244 ?? S 3:51PM 1:32.74 httpd
www 20412 0.7 1.2 26660 18120 ?? S 9:09PM 0:00.93 httpd
www 125 0.7 1.0 24572 16364 ?? S 3:51PM 1:51.97 httpd
www 20439 0.7 0.9 21872 13608 ?? S 9:09PM 0:00.34 httpd
www 20500 0.3 0.8 20644 12376 ?? S 9:10PM 0:00.07 httpd
www 127 0.2 0.9 21888 13680 ?? S 3:51PM 1:29.50 httpd
root 32 0.1 0.0 0 8 ?? WL 2Feb08 108:34.85 irq22: skc0 rl1
www 123 0.1 0.9 22648 14292 ?? S 3:51PM 1:48.79 httpd
Код: Выделить всё
last pid: 20588; load averages: 6.06, 3.24, 2.17 up 14+13:15:08 21:12:49
344 processes: 10 running, 310 sleeping, 21 waiting, 3 lock
CPU states: 38.8% user, 0.0% nice, 4.8% system, 6.3% interrupt, 50.1% idle
Mem: 322M Active, 787M Inact, 226M Wired, 55M Cache, 112M Buf, 109M Free
Swap: 4096M Total, 4K Used, 4096M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 1 171 52 0K 8K CPU1 0 0:00 99.07% idle: cpu1
20588 www 1 4 0 7492K 6752K sbwait 0 0:00 16.00% perl5.8.8
12 root 1 171 52 0K 8K RUN 0 230.1H 10.55% idle: cpu0
832 mysql 15 20 0 110M 77916K kserel 0 22.9H 7.81% mysqld
13 root 1 -44 -163 0K 8K WAIT 0 405:01 4.05% swi1: net
126 www 1 4 0 22444K 14240K sbwait 0 1:51 3.03% httpd
33 root 1 -68 -187 0K 8K WAIT 0 229:18 2.83% irq21: rl0 rl3
119 www 1 4 0 24056K 15856K accept 0 1:47 2.29% httpd
20410 www 1 4 0 24536K 16316K accept 0 0:04 2.15% httpd
307 root 1 98 0 10832K 10340K select 0 424:47 2.00% natd
Код: Выделить всё
v-lan# top -S
last pid: 20682; load averages: 4.89, 3.55, 2.41 up 14+13:16:48 21:14:29
352 processes: 10 running, 317 sleeping, 21 waiting, 4 lock
CPU states: 12.1% user, 0.0% nice, 7.2% system, 6.4% interrupt, 74.3% idle
Mem: 306M Active, 780M Inact, 229M Wired, 55M Cache, 112M Buf, 129M Free
Swap: 4096M Total, 4K Used, 4096M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 1 171 52 0K 8K CPU1 0 0:00 99.07% idle: cpu1
12 root 1 171 52 0K 8K RUN 0 230.1H 18.95% idle: cpu0
13 root 1 -44 -163 0K 8K WAIT 0 405:07 4.39% swi1: net
20623 www 1 102 0 25720K 17348K RUN 0 0:01 4.20% httpd
20650 www 1 4 0 20540K 12296K accept 0 0:01 3.45% httpd
307 root 1 99 0 10832K 10340K RUN 0 424:52 3.12% natd
33 root 1 -68 -187 0K 8K WAIT 0 229:20 2.39% irq21: rl0 rl3
20651 www 1 4 0 20508K 12268K accept 0 0:01 2.33% httpd
124 www 1 4 0 22736K 14528K accept 0 1:38 1.76% httpd
127 www 1 4 0 21888K 13680K accept 0 1:32 1.51% httpd
20410 www 1 4 0 24536K 16316K accept 0 0:04 0.88% httpd
126 www 1 4 0 22444K 14240K sbwait 0 1:52 0.83% httpd
118 www 1 4 0 22440K 14244K accept 0 1:35 0.63% httpd
20413 www 1 4 0 20632K 12392K sbwait 0 0:03 0.63% httpd
20653 www 1 4 0 21612K 13348K sbwait 0 0:00 0.53% httpd
20589 www 1 4 0 20604K 12244K sbwait 0 0:00 0.20% httpd
Код: Выделить всё
options DEVICE_POLLING
options HZ=1000
Код: Выделить всё
#makeoptions DEBUG=-g
Код: Выделить всё
last pid: 7731; load averages: 0.16, 0.19, 0.21 up 0+00:46:01 12:42:40
173 processes: 2 running, 154 sleeping, 17 waiting
CPU states: 0.0% user, 0.0% nice, 0.4% system, 0.4% interrupt, 99.2% idle
Mem: 132M Active, 34M Inact, 77M Wired, 12M Cache, 59M Buf, 231M Free
Swap: 4000M Total, 35M Used, 3965M Free
PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
10 root 1 171 52 0K 8K RUN 36:15 97.31% idle
11 root 1 -44 -163 0K 8K WAIT 1:10 0.00% swi1: net
12 root 1 -32 -151 0K 8K WAIT 0:20 0.00% swi4: clock sio
1517 nobody 9 20 0 8744K 2764K kserel 0:08 0.00% icecast
1415 mysql 8 20 0 51532K 7584K kserel 0:07 0.00% mysqld
3414 root 3 20 0 11316K 8812K kserel 0:06 0.00% radiusd
5830 root 1 96 0 3296K 2176K select 0:03 0.00% ppp
3692 root 1 96 0 3296K 2176K select 0:03 0.00% ppp
840 bind 1 96 0 5196K 2840K select 0:02 0.00% named
1931 daemon 1 20 0 12448K 9316K lockf 0:02 0.00% httpd
4532 root 1 96 0 3296K 2188K select 0:02 0.00% ppp
3360 daemon 1 20 0 13996K 10852K lockf 0:02 0.00% httpd
1932 daemon 1 20 0 13564K 10400K lockf 0:01 0.00% httpd
3413 root 1 96 0 3476K 2196K select 0:01 0.00% ppp
748 root 1 96 0 1380K 724K select 0:01 0.00% syslogd
5545 daemon 1 20 0 15528K 12412K lockf 0:01 0.00% httpd
14 root 1 -16 0 0K 8K - 0:01 0.00% yarrow
Перезагружал машину - тестировал ядро с новыми опциямиstar писал(а):вообщем не ясно почему аптайм у Вас меньше часа, да и в 12 дня у меня нагрузка тоже меньше единички.
странно как-то 120-150 онлайн, а ты машину перегружаешьsopov писал(а):Перезагружал машину - тестировал ядро с новыми опциямиstar писал(а):вообщем не ясно почему аптайм у Вас меньше часа, да и в 12 дня у меня нагрузка тоже меньше единички.
Код: Выделить всё
#makeoption DEBUG=-g
остановился на пол путиsopov писал(а):да 1 минуту потерпят - невтерпеж 12 ночи ждать чтобы оттестировать под нагрузкой