Traskalata Опубликовано 24 июля, 2012 · Жалоба По порядку. Задача приотеризировать трафик на границе сети по 80, 8080 портам. Для этого собрать мост на Freebsd 9 и решить вытекающие из этого задачи. Но что у меня не очень получается. По порядку что я сделал 1. Собрал ядро включив опции options IPFIREWALL options IPFIREWALL_FORWARD options IPFIREWALL_VERBOSE options IPFIREWALL_DEFAULT_TO_ACCEPT options DUMMYNET options IPDIVERT options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_CDNR options ALTQ_PRIQ options ALTQ_NOPCC options ALTQ_DEBUG device pf device pflog device pfsync #ALTQ на всякий случай 2. Внес изменения в /etc/rc.conf sshd_enable="YES" moused_enable="YES" powerd_enable="YES" # Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable dumpdev="NO" cloned_interfaces="bridge0" ifconfig_bridge0="addm re0 addm re1 up" ifconfig_re0="up" ifconfig_re1="up" firewall_enable="YES" firewall_script="/etc/ipfw.rules" firewall_logging="yes" dummynet_enable="yes" fsck_y_enable="yes" background_fsck="no" 3. Cформировал правила файрвола #!/bin/sh cmd="ipfw -q" lan=re0 # Net0 wan=re1 # Net1 ° urate=14000kbit/s drate=14000kbit/s gtcp="80,443,8080,8081" gtw=3 #high priority btw=2 # other tcp ipw=4 #udp $cmd flush $cmd pipe flush $cmd pipe 100 config bw $drate $cmd pipe 200 config bw $urate # WAN -> LAN $cmd queue 111 config weight $gtw queue 50 pipe 100 gred 0.002/5/15/0.05 mask dst-ip 0xffffffff $cmd queue 112 config weight $btw queue 50 pipe 100 gred 0.002/5/15/0.05 mask dst-ip 0xffffffff $cmd queue 113 config weight $ipw queue 50 pipe 100 mask dst-ip 0xffffffff # LAN -> WAN $cmd queue 211 config weight $gtw queue 50 pipe 200 gred 0.002/5/15/0.05 mask src-ip 0xffffffff $cmd queue 212 config weight $btw queue 50 pipe 200 gred 0.002/5/15/0.05 mask src-ip 0xffffffff $cmd queue 213 config weight $ipw queue 50 pipe 200 mask src-ip 0xffffffff # WAN -> LAN $cmd add queue 111 tcp from any to any $gtcp out xmit $lan $cmd add queue 111 tcp from any $gtcp to any out xmit $lan $cmd add queue 112 tcp from any to any out xmit $lan $cmd add queue 113 ip from any to any out xmit $lan # LAN -> WAN $cmd add queue 211 tcp from any to any $gtcp out xmit $wan $cmd add queue 211 tcp from any $gtcp to any out xmit $wan $cmd add queue 212 tcp from any to any out xmit $wan $cmd add queue 213 ip from any to any out xmit $wan Вроде бы все верно. Но теперь смотрю # ipfw pipe show 00200: 14.000 Mbit/s 0 ms burst 0 q131272 50 sl. 0 flows (1 buckets) sched 65736 weight 0 lmax 0 pri 0 droptail sched 65736 type FIFO flags 0x0 0 buckets 0 active 00100: 14.000 Mbit/s 0 ms burst 0 q131172 50 sl. 0 flows (1 buckets) sched 65636 weight 0 lmax 0 pri 0 droptail sched 65636 type FIFO flags 0x0 0 buckets 0 active А там пусто. Хотя связь есть. Подскажите где я что не учел? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 24 июля, 2012 · Жалоба ipfw - как следует из названия, фаервол уровня 3 и выше. Для L2 чуть похже был приделан костыль, который активируется через sysctl. То что вы объединили в бридж - означает что весь траф попёр между портами, в обход сетевого стёка фри, тк для неё это интерфейс без адреса л3 (л2 она вроде берёт у одного из физических или генерит). Я хз как сделать приоритезацию на прозрачном л2 для отдельных л4. Из вариантов могу предложить стать л3 и дальше как обычно... Можно поиграться с ng_ether + ng_bpf + ng_car. Для ALTQ нужно, по хорошему, зажимать полосу ниже имеющейся, чтобы иметь возможность пропускать что то приоритетно, и с длинами очередей там нужно играть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Traskalata Опубликовано 24 июля, 2012 · Жалоба ipfw - как следует из названия, фаервол уровня 3 и выше. Для L2 чуть похже был приделан костыль, который активируется через sysctl. То что вы объединили в бридж - означает что весь траф попёр между портами, в обход сетевого стёка фри, тк для неё это интерфейс без адреса л3 (л2 она вроде берёт у одного из физических или генерит). Я хз как сделать приоритезацию на прозрачном л2 для отдельных л4. Из вариантов могу предложить стать л3 и дальше как обычно... Можно поиграться с ng_ether + ng_bpf + ng_car. Для ALTQ нужно, по хорошему, зажимать полосу ниже имеющейся, чтобы иметь возможность пропускать что то приоритетно, и с длинами очередей там нужно играть. Ну так вот я открыл файл /etc/sysctl.conf и добавил туда net.inet.ip.fw.verbose=1 net.inet.ip.fw.verbose_limit=5 net.link.bridge.ipfw=1 net.inet.ip.dummynet.hash_size=1024 net.inet.ip.fw.dyn_buckets=1024 разве этого не достаточно? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 24 июля, 2012 · Жалоба RTFM. Я не спец по ipfw... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Traskalata Опубликовано 24 июля, 2012 · Жалоба RTFM. Я не спец по ipfw... а спецов здесь нет ? :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 24 июля, 2012 · Жалоба Вы лучше сделайте FreeBSD роутером и всё нормально настройте. С мостом в данном случае возни будет больше. Он действительно необходим? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Traskalata Опубликовано 25 июля, 2012 · Жалоба Вы лучше сделайте FreeBSD роутером и всё нормально настройте. С мостом в данном случае возни будет больше. Он действительно необходим? но он у меня должен стоять как щейпер на общий канал между роутером смотрящим в Интернет и самим Интернетом. BGP у меня нет и провайдер верхнего уровня дает все /29. Если настрою как роутер часть адресов нужно будет использовать верно? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 25 июля, 2012 · Жалоба но он у меня должен стоять как щейпер на общий канал между роутером смотрящим в Интернет и самим Интернетом. Если есть FreeBSD, зачем ещё отдельный роутер? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kapa Опубликовано 25 июля, 2012 · Жалоба Когда-то игрались так: $IPFW pipe 23 config bw 10444Kbit/s mask dst-ip 0xffffffff $IPFW pipe 24 config bw 10444Kbit/s mask src-ip 0xffffffff ########pipe 24 $IPFW sched 24 config type QFQ mask src-ip 0xffffff00 $IPFW queue 241 config sched 24 weight 10 $IPFW queue 242 config sched 24 weight 8 $IPFW queue 243 config sched 24 weight 4 $IPFW queue 244 config sched 24 weight 1 $IPFW add queue 241 ip from table\(101\) to any via igb1 out proto udp dst-port 5060 $IPFW add queue 242 ip from table\(101\) to any via igb1 out proto tcp dst-port 80,443,8080 $IPFW add queue 243 ip from table\(101\) to any via igb1 out proto tcp dst-port 5223, 2009, 2106, 3724, 6112, 6881-6999, 7777, 27000-27050, 42292 $IPFW add queue 243 ip from table\(101\) to any via igb1 out proto udp dst-port 53, 5223, 3478, 3479, 3658, 1200, 5000-5009, 6112-6119, 6881-6999, 7777, 7788, 7787, 20500, 20510, 27000-27050, 27900, 28960 $IPFW add queue 243 ip from table\(101\) to any via igb1 out proto icmp $IPFW add queue 244 ip from table\(101\) to any via igb1 out ########pipe 23 $IPFW sched 23 config type QFQ mask dst-ip 0xffffff00 $IPFW queue 231 config sched 23 weight 10 $IPFW queue 232 config sched 23 weight 8 $IPFW queue 233 config sched 23 weight 4 $IPFW queue 234 config sched 23 weight 1 $IPFW add queue 231 ip from any to table\(100\) via igb0 out proto udp src-port 5060 $IPFW add queue 232 ip from any to table\(100\) via igb0 out proto tcp src-port 80,443,8080 $IPFW add queue 233 ip from any to table\(100\) via igb0 out proto tcp src-port 5223, 2009, 2106, 3724, 6112, 6881-6999, 7777, 27000-27050, 42292 $IPFW add queue 233 ip from any to table\(100\) via igb0 out proto udp src-port 53, 5223, 3478, 3479, 3658, 1200, 5000-5009, 6112-6119, 6881-6999, 7777, 7788, 7787, 20500, 20510, 27000-27050, 27900, 28960 $IPFW add queue 233 ip from any to table\(100\) via igb0 out proto icmp $IPFW add queue 234 ip from any to table\(100\) via igb0 out Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Traskalata Опубликовано 25 июля, 2012 · Жалоба Когда-то игрались так: $IPFW pipe 23 config bw 10444Kbit/s mask dst-ip 0xffffffff $IPFW pipe 24 config bw 10444Kbit/s mask src-ip 0xffffffff ########pipe 24 $IPFW sched 24 config type QFQ mask src-ip 0xffffff00 $IPFW queue 241 config sched 24 weight 10 $IPFW queue 242 config sched 24 weight 8 $IPFW queue 243 config sched 24 weight 4 $IPFW queue 244 config sched 24 weight 1 $IPFW add queue 241 ip from table\(101\) to any via igb1 out proto udp dst-port 5060 $IPFW add queue 242 ip from table\(101\) to any via igb1 out proto tcp dst-port 80,443,8080 $IPFW add queue 243 ip from table\(101\) to any via igb1 out proto tcp dst-port 5223, 2009, 2106, 3724, 6112, 6881-6999, 7777, 27000-27050, 42292 $IPFW add queue 243 ip from table\(101\) to any via igb1 out proto udp dst-port 53, 5223, 3478, 3479, 3658, 1200, 5000-5009, 6112-6119, 6881-6999, 7777, 7788, 7787, 20500, 20510, 27000-27050, 27900, 28960 $IPFW add queue 243 ip from table\(101\) to any via igb1 out proto icmp $IPFW add queue 244 ip from table\(101\) to any via igb1 out ########pipe 23 $IPFW sched 23 config type QFQ mask dst-ip 0xffffff00 $IPFW queue 231 config sched 23 weight 10 $IPFW queue 232 config sched 23 weight 8 $IPFW queue 233 config sched 23 weight 4 $IPFW queue 234 config sched 23 weight 1 $IPFW add queue 231 ip from any to table\(100\) via igb0 out proto udp src-port 5060 $IPFW add queue 232 ip from any to table\(100\) via igb0 out proto tcp src-port 80,443,8080 $IPFW add queue 233 ip from any to table\(100\) via igb0 out proto tcp src-port 5223, 2009, 2106, 3724, 6112, 6881-6999, 7777, 27000-27050, 42292 $IPFW add queue 233 ip from any to table\(100\) via igb0 out proto udp src-port 53, 5223, 3478, 3479, 3658, 1200, 5000-5009, 6112-6119, 6881-6999, 7777, 7788, 7787, 20500, 20510, 27000-27050, 27900, 28960 $IPFW add queue 233 ip from any to table\(100\) via igb0 out proto icmp $IPFW add queue 234 ip from any to table\(100\) via igb0 out А как включить работу IPFW на интерфейсах моста т.е. есть bridge0 в его составе re0 и re1 ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snark Опубликовано 22 августа, 2012 (изменено) · Жалоба net.link.bridge.pfil_onlyip net.link.bridge.pfil_member UPD: Случайно наткнулся на пост, который автору стоит прочесть. Изменено 22 августа, 2012 пользователем snark Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...