Jump to content

Recommended Posts

Posted

По порядку.

Задача приотеризировать трафик на границе сети по 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

 

А там пусто. Хотя связь есть.

 

Подскажите где я что не учел?

Posted

ipfw - как следует из названия, фаервол уровня 3 и выше. Для L2 чуть похже был приделан костыль, который активируется через sysctl.

То что вы объединили в бридж - означает что весь траф попёр между портами, в обход сетевого стёка фри, тк для неё это интерфейс без адреса л3 (л2 она вроде берёт у одного из физических или генерит).

 

Я хз как сделать приоритезацию на прозрачном л2 для отдельных л4.

Из вариантов могу предложить стать л3 и дальше как обычно...

Можно поиграться с ng_ether + ng_bpf + ng_car.

 

Для ALTQ нужно, по хорошему, зажимать полосу ниже имеющейся, чтобы иметь возможность пропускать что то приоритетно, и с длинами очередей там нужно играть.

Posted

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

 

разве этого не достаточно?

Posted

Вы лучше сделайте FreeBSD роутером и всё нормально настройте.

С мостом в данном случае возни будет больше.

Он действительно необходим?

Posted

Вы лучше сделайте FreeBSD роутером и всё нормально настройте.

С мостом в данном случае возни будет больше.

Он действительно необходим?

но он у меня должен стоять как щейпер на общий канал между роутером смотрящим в Интернет и самим Интернетом.

BGP у меня нет и провайдер верхнего уровня дает все /29. Если настрою как роутер часть адресов нужно будет использовать верно?

Posted

но он у меня должен стоять как щейпер на общий канал между роутером смотрящим в Интернет и самим Интернетом.

Если есть FreeBSD, зачем ещё отдельный роутер?

Posted

Когда-то игрались так:

 

$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

Posted

Когда-то игрались так:

 

$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 ?

  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.