mrrc Posted August 22, 2016 · Report post Не получается разобраться с проблемой, подскажите пути решения и где я не прав. 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, то к нему применяются ограничения и он работает в рамках положенной скорости совершенно правильно. Ощущение, что забиваются то ли кэши какие, то ли очереди, таблицы, кто может подсказать куда копать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted August 22, 2016 · Report post FreeBSD 8.2 - EOL. Обновись сперва. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
hRUst Posted August 22, 2016 · Report post ipfw show Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdc Posted August 22, 2016 · Report post ipfw pipe show в момент проблемы Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted August 23, 2016 · Report post 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. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted August 23, 2016 · Report post 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 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted August 23, 2016 · Report post Похоже разобрался. Рабочее место, на котором все работало, и сбивало с толку, имело двухсторонние разрешающие правила: 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 шло лесом получается. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...