MaLblsH Posted September 26, 2008 Posted September 26, 2008 Доброго времени суток. Стоял роутер FreeBSD 6.2 с 2-мя фаерволами: pf и ipfw. Решили сделать такую схему: перед роутером на freebsd 6.2 поставить машинку посильнее с freebsd 7.0 BRIDGE и перенести на него ipfw с dummynet . rc.conf выглядит так: ## Interfaces ifconfig_em0="inet 192.168.1.88 netmask 255.255.255.0" ifconfig_em2="inet 192.168.1.77 netmask 255.255.255.0" ifconfig_em0="up" ifconfig_em2="up" cloned_interfaces="bridge0" ifconfig_bridge0="addm em0 addm em2 up 192.168.1.88 netmask 255.255.255.0" gateway_enable="YES" Параметры sysctl.conf: net.link.bridge.pfil_onlyip=0 net.link.bridge.ipfw=1 net.link.bridge.pfil_bridge1 Скрипт фаервола собственно перенесли полностью. Вот часть скрипта: IPFW="/sbin/ipfw -fq" $IPFW flush $IPFW table 17 add IP $IPFW pipe 22 config bw 10Mbit/s mask dst-ip 0xffffffff $IPFW pipe 23 config bw 10Mbit/s mask src-ip 0xffffffff $IPFW add pipe 22 ip from any to table\(17\) via bridge0 in $IPFW add pipe 23 ip from table\(17\) to any via bridge0 out При этом шейпер работает только на отдачу. Приходящий трафик не шейпится. В чём может быть неточность ? Вставить ник Quote
Stormi Posted September 26, 2008 Posted September 26, 2008 ifconfig_em0="inet 192.168.1.88 netmask 255.255.255.0"ifconfig_em2="inet 192.168.1.77 netmask 255.255.255.0" ifconfig_em0="up" ifconfig_em2="up" Насколько я помню фрю эти вещи взаимоисключающие, да и "up" добавляется автоматически при установке адреса. Обычно конструкция ifconfig_интерфейс="up" используется для поднятия интерфейсов без IP. Ну да это не существенно, бриджу наверное не мешает.gateway_enable="YES" На бридже наверное не нужен, он трафик не маршрутизирует. В скриптах по этому параметру выставляется sysctl net.inet.ip.forwarding в 1, в случае бриджа он не маршрутизирует IP, он бриджует ethernet. Интересный вопрос в другом: а умеет ли dummynet работать с ethernet или всетаки только с ip? Не пользовался им лет несколько, может и научили. Хотя времени много прошло, я могу и не знать чего-то. В любом случае интересно глянуть на счетчики ipfw show и ipfw pipe show. Вставить ник Quote
jab Posted September 27, 2008 Posted September 27, 2008 $IPFW add pipe 22 ip from any to table\(17\) via bridge0 in$IPFW add pipe 23 ip from table\(17\) to any via bridge0 out[/code] А собственно какого тут указан бриджевый интерфейс а не входящий ? Вставить ник Quote
kapa Posted September 28, 2008 Posted September 28, 2008 Интересный вопрос в другом: а умеет ли dummynet работать с ethernet или всетаки только с ip? Не пользовался им лет несколько, может и научили. Хотя времени много прошло, я могу и не знать чего-то. В любом случае интересно глянуть на счетчики ipfw show и ipfw pipe show.Даминет, вроде, и с ethernet работает.Но причём тут это? Бридж работает с ethernet, а при этом dummynet может резать по ip. Вставить ник Quote
MaLblsH Posted September 29, 2008 Author Posted September 29, 2008 $IPFW add pipe 22 ip from any to table\(17\) via bridge0 in$IPFW add pipe 23 ip from table\(17\) to any via bridge0 out[/code] А собственно какого тут указан бриджевый интерфейс а не входящий ? Решил заменой bridge0 на em0, спасибо. шейпер заработал в обе стороны.И тут же ещё вопрос. Решил оптимизировать правила ipfw: $IPFW add pipe 15 ip from any to table\(64\) via em2 out $IPFW add pipe 16 ip from table\(64\) to any via em0 out $IPFW add allow ip from any to table\(64\) $IPFW add allow ip from table\(64\) to any $IPFW add pipe 11 ip from any to table\(16\) via em2 out $IPFW add pipe 12 ip from table\(16\) to any via em0 out $IPFW add allow ip from any to table\(16\) $IPFW add allow ip from table\(16\) to any $IPFW add pipe 13 ip from any to table\(32\) via em2 out $IPFW add pipe 14 ip from table\(32\) to any via em0 out $IPFW add allow ip from any to table\(32\) $IPFW add allow ip from table\(32\) to any .... Т.е. первая таблица содержит самое большое колличество записей, потом меньше, меньше и т.д. В конце каждого поставил разрешающее правило, что бы записи из таблицы 64 не пробегали остальные правила. С другой стороны, люди не вошедший ни в одну из таблиц (у которых скорость не режется) будут всё равно проходить эти правила. Есть ли всё таки смысл в этой оптимизации ??? Отсюда же второй, вытекающий вопрос. ipfw pipe list выдаёт большое колличество дропнутых пакетов: 00017: 8.192 Mbit/s 0 ms 50 sl. 0 queues (65536 buckets) droptail 00016: 4.096 Mbit/s 0 ms 50 sl. 71 queues (65536 buckets) droptail 6213 ip 0.0.0.0/0 10.2.12.65/0 69955 11306495 0 0 0 6463 ip 0.0.0.0/0 10.3.13.57/0 2780159 2254902332 50 42712 239226 7938 ip 0.0.0.0/0 10.20.11.42/0 102797 144830954 0 0 92 7961 ip 0.0.0.0/0 10.4.11.17/0 69297 88351853 0 0 0 7966 ip 0.0.0.0/0 10.10.11.10/0 8759 9781860 0 0 27 8236 ip 0.0.0.0/0 10.2.52.40/0 10929 720451 0 0 0 8239 ip 0.0.0.0/0 10.4.52.39/0 500882 37996667 0 0 0 8556 ip 0.0.0.0/0 10.4.53.100/0 5593 4464315 0 0 16 9737 ip 0.0.0.0/0 10.6.50.5/0 125080 187834306 0 0 939 9996 ip 0.0.0.0/0 10.4.51.4/0 1436896 1781399457 40 55723 94551 10008 ip 0.0.0.0/0 10.4.51.16/0 43891 49458360 0 0 178 10816 ip 0.0.0.0/0 10.2.62.68/0 131047 9637296 0 0 0 12835 ip 0.0.0.0/0 10.5.38.41/0 265533 263504412 0 0 279 .... При том что такое во всех таблицах. Что собственно означают эти пакеты ? На самом интерфейсе ошибок нету: netstat -w 1 -i em0 input (Total) output packets errs bytes packets errs bytes colls 50536 0 36236924 49765 0 35642474 0 52249 0 37737986 51805 0 37382598 0 53556 0 38646980 52734 0 37761772 0 52284 0 38191334 51814 0 37735934 0 54015 0 38829194 53484 0 37894566 0 53104 0 38558514 51910 0 37506572 0 53327 0 38695412 53318 0 38238867 0 53096 0 39122124 52634 0 38396514 0 51845 0 38122342 50993 0 37519344 0 51570 0 37756954 50843 0 37124938 0 ..... При этом на следующей машине в 2 раза меньше пакетов (следующая машина роутер с FreeBSD 6.2, см. схему сети в первом посте): netstat -w 1 -i em1 input (Total) output packets errs bytes packets errs bytes colls 25475 0 18455283 25382 0 18453326 0 27802 0 20076563 27664 0 20073054 0 25332 0 18336171 25246 0 18342047 0 26872 0 19425318 26744 0 19418150 0 26075 0 18697083 25958 0 18685309 0 26874 0 19429125 26720 0 19423033 0 26444 0 19157855 26338 0 19154132 0 26453 0 19363678 26299 0 19350037 0 25708 0 19071870 25626 0 19112105 0 27184 0 19682465 27056 0 19671208 0 Вставить ник Quote
jab Posted September 29, 2008 Posted September 29, 2008 Т.е. первая таблица содержит самое большое колличество записей, потом меньше, меньше и т.д. В конце каждого поставил разрешающее правило, что бы записи из таблицы 64 не пробегали остальные правила.С другой стороны, люди не вошедший ни в одну из таблиц (у которых скорость не режется) будут всё равно проходить эти правила. Есть ли всё таки смысл в этой оптимизации ??? Для ветвления используйте skipto ipfw pipe list выдаёт большое колличество дропнутых пакетов:При том что такое во всех таблицах. Что собственно означают эти пакеты ? Количество пакетов, которые не пролезли в трубу. Абсолютно нормальное поведение. netstat -w 1 -i em1 man netstat на предмет флага -I Вставить ник Quote
MaLblsH Posted September 29, 2008 Author Posted September 29, 2008 Для ветвления используйте skiptoЭто примерно так выглядеть будет ? IPFW="/sbin/ipfw -fq" while read ip do $IPFW table 64 add "$ip" done < /pf/64 while read ip do $IPFW table 16 add "$ip" done < /pf/16 $IPFW pipe 15 config bw 4096Kbit/s mask dst-ip 0xffffffff $IPFW pipe 16 config bw 4096Kbit/s mask src-ip 0xffffffff $IPFW pipe 11 config bw 1024Kbit/s mask dst-ip 0xffffffff $IPFW pipe 12 config bw 1024Kbit/s mask src-ip 0xffffffff $IPFW add pipe 15 ip from any to table\(64\) via em2 out $IPFW add pipe 16 ip from table\(64\) to any via em0 out $IPFW add skipto 10000 ip from any to table\(64\) $IPFW add skipto 10000 ip from table\(64\) to any $IPFW add pipe 11 ip from any to table\(16\) via em2 out $IPFW add pipe 12 ip from table\(16\) to any via em0 out $IPFW add skipto 10000 ip from any to table\(64\) $IPFW add skipto 10000 ip from table\(64\) to any ... $IPFW add 10000 allow ip from any Количество пакетов, которые не пролезли в трубу. Абсолютно нормальное поведение.Понятно.man netstat на предмет флага -IСпасибо, разобрался :) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.