Добрый день! Понимаю, что это не совсем вопрос по биллингу, но все же... Поставили версию 49.32, все по инструкции по установке, кроме одного - вместо pf использовал ipfw nat.
Система - 7.3-PRERELEASE. Прописали клиентов, тарифы, указал скорость в тарифе - 1Мб, клиент авторизуется, попадает во все таблицы, создается труба:
01008: 1.000 Mbit/s 0 ms 50 sl. 1 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
0 icmp 10.5.0.17/0 74.125.87.103/0 130501 5494337 0 0 0
, трафик от клиета попадает в трубу...
При попытке скачать perl (11МБ) с одного из официальных сайтов раздачи скорость прыгала около положенных 120 кБ/с. Но при попытке чуть позже скачать скорость легко поднималась до 600-800кБ/с.
01008: 1.000 Mbit/s 0 ms 50 sl. 1 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
0 icmp 10.5.0.17/0 74.125.87.103/0 149974 6300990 0 0 0
Интересно, что адрес в трубе не поменялся, хотя счетчик трафика изменился (увы, - незначительно). :(
# ipfw list
00050 allow tcp from any to me dst-port 22
00051 allow tcp from me 22 to any
00110 allow ip from any to any via lo0
00120 skipto 1000 ip from me to any
00130 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17
00140 nat 1 ip from any to any via fxp0
00160 skipto 2000 ip from any to me
00200 skipto 500 ip from any to any via fxp0
00300 skipto 4500 ip from any to any in
00400 skipto 450 ip from any to any recv fxp0
00420 divert 1 ip from any to any
00450 divert 2 ip from any to any
00490 allow ip from any to any
00500 skipto 32500 ip from any to any in
00510 divert 1 ip from any to any
00540 allow ip from any to any
01000 allow udp from any 53,7723 to any
01010 allow tcp from any to any setup keep-state
01020 allow udp from any to any keep-state
01100 allow ip from any to any
02000 check-state
02010 allow icmp from any to any
02020 allow tcp from any to any dst-port 80,443
02050 deny ip from any to any via fxp0
02060 allow udp from any to any dst-port 53,7723
02100 deny ip from any to any
05000 deny ip ip from not table(0) to any
05001 skipto 5010 ip from table(127) to table(126)
05002 skipto 5030 ip from any to not table(2)
05003 deny ip from any to not table(1)
05004 pipe tablearg ip from table(21) to any
05005 deny ip from any to any
05010 pipe tablearg ip from table(127) to any
05030 deny tcp from table(15) to any dst-port 25
05400 pipe tablearg ip from table(11) to any
32000 deny ip from any to any
32490 unreach host-unknown log ip from any to any
33000 pipe tablearg ip from table(126) to table(127)
33001 skipto 33010 ip from not table(2) to any
33002 pipe tablearg ip from any to table(20)
33003 deny ip from any to any
33400 pipe tablearg ip from any to table(10) dst-ip 255.255.255.255
65535 deny ip from any to any
Ман не просветлил, гугл, опеннет тоже ясности не дали. :( В общем, пните в нужную сторону - я с пайпами сталкиваюсь впервые. Теоретически, все правильно и должно работать, но на практике - что-то не выходит каменный цветок. :(
В общем, детальный разбор прохождения пакетов по правилам выявил такой глюк: ядро биллинга прописывает следущее правило:
05400 pipe tablearg ip from table(11) to any
# ipfw table 11 list
10.5.0.17/32 1008
10.5.0.147/32 1004
при этом есть такие трубы:
# ipfw pipe list
01004: 1.000 Mbit/s 0 ms 50 sl. 1 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
0 udp 10.5.0.147/137 10.5.0.255/137 2 156 0 0 0
00001: unlimited 0 ms 50 sl. 0 queues (1 buckets) droptail
01008: 1.000 Mbit/s 0 ms 50 sl. 1 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
0 tcp 10.5.0.17/56457 147.102.222.211/21 332 15936 0 0 0
а на деле получается следующее:
Mar 20 20:18:20 ipfw: 5400 Pipe 65535 TCP 10.5.0.17:59098 141.41.9.9:21 in via fxp1
Mar 20 20:18:23 ipfw: 5400 Pipe 65535 TCP 10.5.0.17:59098 141.41.9.9:21 in via fxp1
Mar 20 20:18:26 ipfw: 5400 Pipe 65535 TCP 10.5.0.17:59098 141.41.9.9:21 in via fxp1
Mar 20 20:18:29 ipfw: 5400 Pipe 65535 TCP 10.5.0.17:59098 141.41.9.9:21 in via fxp1
Mar 20 20:18:35 ipfw: 5400 Pipe 65535 TCP 10.5.0.17:59098 141.41.9.9:21 in via fxp1
Mar 20 20:18:48 ipfw: 5400 Pipe 65535 TCP 10.5.0.17:59098 141.41.9.9:21 in via fxp1
В итоге шейпера нет в принципе. :( Просто удивительно, как эти 332 пакета попали в нужную трубу... :-\
Раньше изучая логи я тоже думал, что пакеты посылаются не в тот пайп, но на самом деле 65535 - это синоним tablearg при записи фаервольного правила. Здесь имеет место просто неправильное отображение в логах