mrrc Posted August 22, 2016 Не получается разобраться с проблемой, подскажите пути решения и где я не прав. FreeBSD 8.2+natd+ipfw В организации есть общий канал, порядка 80Мбит, в некоторых локальных подсетях установлены роутеры\точки доступа wi-fi, используемые адреса у которых хотелось бы ограничить по скорости), ну и чтобы на других пользователей ограничения ни коем образом не сказывались. Предполагаю реализовать следующим образом (пока с использованием одной таблицы, у каждого адреса точки должны быть свои 512Кбит): #!/bin/sh fwcmd="/sbin/ipfw" ${fwcmd} -f flush ${fwcmd} -f pipe flush # ${fwcmd} -f queue flush ${fwcmd} table 1 flush # ${fwcmd} pipe 1 config bw 512Kbit/s buckets 128 mask dst-ip 0x000000ff # ${fwcmd} pipe 2 config bw 512Kbit/s buckets 128 mask src-ip 0x000000ff ${fwcmd} pipe 1 config bw 512Kbit/s buckets 128 mask dst-ip 0xffffffff ${fwcmd} pipe 2 config bw 512Kbit/s buckets 128 mask src-ip 0xffffffff ${fwcmd} add 11 pipe 1 ip from any to table\(1\) out ${fwcmd} add 12 pipe 2 ip from table\(1\) to any in ${fwcmd} table 1 add 192.168.0.200 ${fwcmd} table 1 add 192.168.2.30 ${fwcmd} table 1 add 192.168.0.222 ${fwcmd} table 1 add 192.168.9.30 ... Какое-то время работает исправно, после у всех адресов, помещенных в table, инет встает колом, т.е. перестают грузиться страницы вообще, при этом тот же пинг проходит ровно. Убираешь IP из таблицы, все нормализуется. Если в таблицу добавить новый IP, то к нему применяются ограничения и он работает в рамках положенной скорости совершенно правильно. Ощущение, что забиваются то ли кэши какие, то ли очереди, таблицы, кто может подсказать куда копать? Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted August 22, 2016 FreeBSD 8.2 - EOL. Обновись сперва. Share this post Link to post Share on other sites More sharing options...
hRUst Posted August 22, 2016 ipfw show Share this post Link to post Share on other sites More sharing options...
rdc Posted August 22, 2016 ipfw pipe show в момент проблемы Share this post Link to post Share on other sites More sharing options...
mrrc Posted August 23, 2016 ipfw show Немного поясню по выводу ниже, после правил natd и check-state идут разрешающие правила для доступа пользователей к локальным портам DNS, SQUID-а, адресу и портам корпоративной почты, прохождению icmp, разрешающие прохождения трафика с самого шлюза наружу, прочие разрешающие прохождение трафика правила под определенные IP и конкретные нужды, дабы не перегружать, я опустил все эти фрагменты. У адресов, которые в т.ч. на wi-fi точках, которые нужно зашейпить, доступ наружу полный и прямой (т.е. allow ip from 192.168.0.200 to any keep-state), завершающими идут все для всех запрещено. 00011 51449 19448020 pipe 1 ip from any to table(1) out 00012 69410 36623503 pipe 2 ip from table(1) to any in 00100 1960240 2704227026 allow ip from any to any via lo0 00200 0 0 deny ip from any to 127.0.0.0/8 00300 0 0 deny ip from 127.0.0.0/8 to any ... ... 00900 508900 361048541 divert 8668 ip from 192.168.0.0/24 to any out via msk0 00910 0 0 divert 8669 ip from 192.168.0.0/24 to any out via msk2 01000 141 11160 divert 8668 ip from 192.168.1.0/24 to any out via msk0 01010 0 0 divert 8669 ip from 192.168.1.0/24 to any out via msk2 01100 9995 1480436 divert 8668 ip from 192.168.2.0/24 to any out via msk0 01110 0 0 divert 8669 ip from 192.168.2.0/24 to any out via msk2 01200 4482 773504 divert 8668 ip from 192.168.3.0/24 to any out via msk0 01210 0 0 divert 8669 ip from 192.168.3.0/24 to any out via msk2 01300 18730 7281521 divert 8668 ip from 192.168.4.0/24 to any out via msk0 01310 0 0 divert 8669 ip from 192.168.4.0/24 to any out via msk2 01400 115139 16669005 divert 8668 ip from 192.168.5.0/24 to any out via msk0 01410 0 0 divert 8669 ip from 192.168.5.0/24 to any out via msk2 01500 23037 9370001 divert 8668 ip from 192.168.6.0/24 to any out via msk0 01510 0 0 divert 8669 ip from 192.168.6.0/24 to any out via msk2 01600 3693 167808 divert 8668 ip from 192.168.7.0/24 to any out via msk0 01610 0 0 divert 8669 ip from 192.168.7.0/24 to any out via msk2 01700 0 0 divert 8668 ip from 192.168.8.0/24 to any out via msk0 01710 0 0 divert 8669 ip from 192.168.8.0/24 to any out via msk2 01800 1315376 421028446 divert 8668 ip from 192.168.9.0/24 to any out via msk0 01810 2 248 divert 8669 ip from 192.168.9.0/24 to any out via msk2 01900 2 120 divert 8668 ip from 192.168.10.0/24 to any out via msk0 01910 0 0 divert 8669 ip from 192.168.10.0/24 to any out via msk2 02100 48778 11860451 divert 8668 ip from 192.168.11.0/24 to any out via msk0 02110 1 47 divert 8669 ip from 192.168.11.0/24 to any out via msk2 02200 58961 11038970 divert 8668 ip from 192.168.12.0/24 to any out via msk0 02210 0 0 divert 8669 ip from 192.168.12.0/24 to any out via msk2 02320 0 0 divert 8668 ip from 192.168.40.0/24 to any out via msk0 02330 0 0 divert 8669 ip from 192.168.40.0/24 to any out via msk2 02400 5959110 5338402459 divert 8668 ip from any to **.***.***.*** in via msk0 02410 701 44535 divert 8668 ip from any to **.***.***.*** in via msk0 02450 17312 9943219 divert 8669 ip from any to ***.***.***.*** in via msk2 02500 0 0 check-state ... ... 23700 1212959 570924307 deny log logamount 1000 ip from any to any 65535 1 282 deny ip from any to any ipfw pipe show в момент проблемы Вчера вечером перегружал шлюз, сегодня как начнется затык, приложу вывод pipe show. Share this post Link to post Share on other sites More sharing options...
mrrc Posted August 23, 2016 Wi-Fi точки\роутеры "лежат", при этом обычное рабочее место с виндой работает исправно. # ipfw pipe show 00001: 1.000 Mbit/s 0 ms burst 0 q131073 50 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail sched 65537 type FIFO flags 0x1 128 buckets 2 active mask: 0x00 0x00000000/0x0000 -> 0x000000ff/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp 20 ip 0.0.0.0/0 0.0.0.20/0 3 388 0 0 0 177 ip 0.0.0.0/0 0.0.0.177/0 5 1518 0 0 0 00002: 1.000 Mbit/s 0 ms burst 0 q131074 50 sl. 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail sched 65538 type FIFO flags 0x1 128 buckets 2 active mask: 0x00 0x000000ff/0x0000 -> 0x00000000/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp 40 ip 0.0.0.20/0 0.0.0.0/0 4 237 0 0 0 98 ip 0.0.0.177/0 0.0.0.0/0 10 556 0 0 0 # ipfw table 1 list 192.168.2.20/32 0 192.168.2.177/32 0 192.168.3.178/32 0 192.168.9.205/32 0 Share this post Link to post Share on other sites More sharing options...
mrrc Posted August 23, 2016 Похоже разобрался. Рабочее место, на котором все работало, и сбивало с толку, имело двухсторонние разрешающие правила: 10800 22237 3944560 allow ip from 192.168.9.205 to any 10900 59352 62791890 allow ip from any to 192.168.9.205 А все адреса точек динамические: 14800 56514 42658391 allow ip from 192.168.3.178 to any keep-state net.inet.ip.fw.one_pass=0 выставлено не было, соответственно после прохождения шейпинга последующие правила не применялись, а по умолчанию в системе deny ip from any to any. Но только почему вначале все работало тем не менее, а только спустя время затыкалось, а не сразу, не совсем мне понятно. Вернее дело в задании check-state в списке правил, которое походу при net.inet.ip.fw.one_pass=1 шло лесом получается. Share this post Link to post Share on other sites More sharing options...