ipfw - деление канала поровну

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

ipfw - деление канала поровну

Непрочитанное сообщение OSBoy » 2008-12-24 14:05:22

Возникли некоторые вопросы!

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

Делаю, как написано на http://www.opennet.ru/base/net/ipfw_guide.txt.html
Итого у меня получилось:

Код: Выделить всё

${fwcmd} table 2 add 10.53.1.2
${fwcmd} table 2 add 10.53.1.5
${fwcmd} table 2 add 10.53.1.26
.... и т.д. (все юзеры из подсети 10.53.1.0/24)

${fwcmd} pipe 21 config bw ${pipe256} queue ${queue256} gred ${gred256}
${fwcmd} pipe 22 config bw ${pipe3072} queue ${queue3072} gred ${gred3072}

${fwcmd} queue 31 config pipe 21 queue ${queue256} gred ${gred256} weight 100 mask src-ip 0x00000000
${fwcmd} queue 32 config pipe 22 queue ${queue3072} gred ${gred3072} weight 100 mask dst-ip 0x00000000

${fwcmd} add 2200 queue 31 ip from table\(2\) to any out recv ${vif} xmit ${oif}
${fwcmd} add 2210 queue 32 ip from any to table\(2\) out recv ${oif} xmit ${vif}
Однако, юзеры жалуются, что временами скорость никакая! Подозреваю, что задумка не срабатывает, и работает принцип "кто первый, того и тапочки", то бишь один положил весь канал, остальные - лежат...
Вопрос - ПОЧЕМУ?
Я просто не совсем понимаю принцип действия mask, должно ли это работать в моём случае, когда юзеры у меня заданы в table, или надо заменить

Код: Выделить всё

${fwcmd} add 2200 queue 31 ip from table\(2\) to any out recv ${vif} xmit ${oif}
${fwcmd} add 2210 queue 32 ip from any to table\(2\) out recv ${oif} xmit ${vif}
на

Код: Выделить всё

${fwcmd} add 2200 queue 31 ip from 10.53.1.0/24 to any out recv ${vif} xmit ${oif}
${fwcmd} add 2210 queue 32 ip from any to 10.53.1.0/24 out recv ${oif} xmit ${vif}
...или же просто надо менять 0x00000000 на другое значение?

И вообще, где можно почитать внятное описание, как эти маски работают?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zar0ku1
сержант
Сообщения: 238
Зарегистрирован: 2008-02-29 4:38:05
Откуда: Южно-Сахалинск
Контактная информация:

Re: ipfw - деление канала поровну

Непрочитанное сообщение zar0ku1 » 2008-12-24 14:16:26

Последний раз редактировалось zar0ku1 2008-12-24 14:18:02, всего редактировалось 2 раза.
На фоне дураков четче хорошие люди прорисовываются.
(с) Граффити

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 14:17:37

да в man ipfw ;)


я бы преобразовал к виду

Код: Выделить всё

${fwcmd} table 2 add 10.53.1.2
${fwcmd} table 2 add 10.53.1.5
${fwcmd} table 2 add 10.53.1.26
.... и т.д. (все юзеры из подсети 10.53.1.0/24)

${fwcmd} pipe 21 config bw ${pipe256} queue ${queue256} 
${fwcmd} pipe 22 config bw ${pipe3072} queue ${queue3072} 

${fwcmd} queue 31 config pipe 21 queue ${queue256} weight 100 mask src-ip 0xffffffff
${fwcmd} queue 32 config pipe 22 queue ${queue3072} weight 100 mask dst-ip 0xffffffff

${fwcmd} add 2200 queue 31 ip from table\(2\) to any in via ${vif} 
${fwcmd} add 2210 queue 32 ip from any to table\(2\) out via ${vif} 
если ${vif} интерфейс в сторону клиента
смотрим ipfw pipe show
и ipfw show
для отладки

я не понимаю смысла конструкции

Код: Выделить всё

${fwcmd} add 2200 queue 31 ip from table\(2\) to any out recv ${vif} xmit ${oif}
${fwcmd} add 2210 queue 32 ip from any to table\(2\) out recv ${oif} xmit ${vif}
в части recv и xmit, у меня подозрения что на них вобще пакеты не попадают, в каждый момент времени пакет знает только то что он вылетает или влетает в конкретный(один) интерфейс, вы же проверяете сразу что данный пакет долже одновременно влетаеть и вылетать через разные интерфейсы, это не возможно


Пы.Сы. попытался сформулировать про маски, не получилось, стёр обзац :(
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: ipfw - деление канала поровну

Непрочитанное сообщение OSBoy » 2008-12-24 14:34:40

Так, ну допустим, с масками более менее понятно. Значит получается, что использовать table тут не целесообразно?

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: ipfw - деление канала поровну

Непрочитанное сообщение OSBoy » 2008-12-24 14:42:32

В те правила пакеты попадают, проверено. А насчёт

Код: Выделить всё

${fwcmd} add 2200 queue 31 ip from table\(2\) to any in via ${vif}
То, насколько я знаю, не рекоммендуется на входе скорость резать...

Но суть не в этом...

То бишь получается, если сделать, как привёл hizel выше, с маской 0xffffffff и table, то отдельная очередь создаётся для каждого IP из table 2 ?
Последний раз редактировалось OSBoy 2008-12-24 14:43:39, всего редактировалось 1 раз.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 14:43:04

там дело не в маске подсети, а какая часть данных используется для разделения по очередям внутри канала
0x000000ff - соответствует маске /24 255.255.255.0
0xff000000 - никакой маске в нормальном смысле не соответствует, разве что 0.255.255.255, но это не по CIDR
это для src-ip\dst-ip, есть еще dst-ip6 mask, src-ip6 mask, dst-port mask, src-port mask, flow-id mask, proto mask

уважаемый топик-стартер вы в man хотя-бы одним глазком заглядывали? :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
uHk
мл. сержант
Сообщения: 134
Зарегистрирован: 2008-05-21 15:16:48
Откуда: Москва
Контактная информация:

Re: ipfw - деление канала поровну

Непрочитанное сообщение uHk » 2008-12-24 14:45:05

hizel писал(а): в части recv и xmit, у меня подозрения что на них вобще пакеты не попадают, в каждый момент времени пакет знает только то что он вылетает или влетает в конкретный(один) интерфейс, вы же проверяете сразу что данный пакет долже одновременно влетаеть и вылетать через разные интерфейсы, это не возможно
а мне казалось, что out recv ${vif} xmit ${oif} говорит о том, что пакет, который когда-то пришел на ${vif}, и выходит с ${oif}

разве это не так?
надо сразу брать лошадь за рога

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: ipfw - деление канала поровну

Непрочитанное сообщение OSBoy » 2008-12-24 14:51:37

hizel писал(а):..... но это не по CIDR
это для src-ip\dst-ip, есть еще dst-ip6 mask, src-ip6 mask, dst-port mask, src-port mask, flow-id mask, proto mask

уважаемый топик-стартер вы в man хотя-бы одним глазком заглядывали? :)
Заглядывал, вот я как раз и не могу понять каким образом эта самая маска для src-ip\dst-ip определяет, как распределять очереди внутри канала!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 15:02:32

гм, вах, оказывается в этой конструкции срабатывает or вместо обычного and
If recv or xmit is used instead of via, then only the receive or transmit interface (respectively) is checked.
получается каждый пакет проходящий через узел по этому правилу считается дважды, а в случае топик-стартера попадает очередь два раза оО
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 15:09:02

маска src-ip будет определять какая часть исходящего ip будет значимой для равномерного распределения
в вашем случае можно сделать src-ip mask 0x000000ff, то есть для равномерного распределения будут значим последний октет ip адреса
но я предпочитаю mask 0xffffffff так оно более читаемо в ipfw pipe show


например если бы вам надобыло распределить равномерно по подсетям например у вас пачка /24
можно было бы написать src-ip mask 0x0000ff00
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: ipfw - деление канала поровну

Непрочитанное сообщение OSBoy » 2008-12-24 15:27:22

Да, вот теперь кое что прояснилось.
Не понятно только, а как будет влиять маска 0x00000000 - никак? то есть пакеты от всех IP попадут в одну очередь?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 15:32:30

да :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: ipfw - деление канала поровну

Непрочитанное сообщение OSBoy » 2008-12-24 15:34:52

Да, а что касаемо recv и xmit и вот этого:
hizel писал(а):получается каждый пакет проходящий через узел по этому правилу считается дважды, а в случае топик-стартера попадает очередь два раза оО
Имхо - гон.
Ключевое слово via приводит к обязательной проверке интерфейса.
Если вместо via использовано ключевое слово recv или xmit, то
проверяется только интерфейс получения или интерфейс передачи,
соответственно. Задав оба этих ключевых слова, можно отбирать
пакеты на основе обоих интерфейсов, получения и отправки,
например:

ipfw add 100 deny ip from any to any out recv ed0 xmit
ed1
Таким образом, насколько я понимаю, для постановки в очередь отбираются пакеты, пришедшие на ed0 и собирающиеся уйти через ed1 !

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 15:56:16

гм, ну может и гон в этой части, я обычно такими конструкциями не балуюсь :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 16:06:38

пролетел один пинг

Код: Выделить всё

00100   1    60 count log icmp from 192.168.254.2 to any via xl0
00200   1    60 count log icmp from 192.168.254.2 to any via rl0
00300   1    60 count log icmp from 192.168.254.2 to any out recv rl0 xmit xl0

Код: Выделить всё

Dec 24 15:51:24 pppoetestnas kernel: ipfw: 200 Count ICMP:8.0 192.168.254.2 10.24.0.107 in via rl0
Dec 24 15:51:24 pppoetestnas kernel: ipfw: 100 Count ICMP:8.0 192.168.254.2 10.24.0.107 out via xl0
Dec 24 15:51:24 pppoetestnas kernel: ipfw: 300 Count ICMP:8.0 192.168.254.2 10.24.0.107 out via xl0
два раза как минимум не попадает
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw - деление канала поровну

Непрочитанное сообщение hizel » 2008-12-24 16:16:05

ха действительно работает, только я так и не понял почему :smile:

Код: Выделить всё

00100    1     60 count log icmp from any to any in via rl0
00200    2    120 count log icmp from any to any out via xl0
00300    1     60 count log icmp from any to any in via ng0
00400    1     60 count log icmp from any to any out recv rl0 xmit xl0

Код: Выделить всё

Dec 24 15:59:45 pppoetestnas kernel: ipfw: 100 Count ICMP:8.0 192.168.254.2 10.24.0.107 in via rl0
Dec 24 15:59:45 pppoetestnas kernel: ipfw: 200 Count ICMP:8.0 192.168.254.2 10.24.0.107 out via xl0
Dec 24 15:59:45 pppoetestnas kernel: ipfw: 400 Count ICMP:8.0 192.168.254.2 10.24.0.107 out via xl0
Dec 24 16:00:47 pppoetestnas kernel: ipfw: 300 Count ICMP:8.0 172.30.90.173 10.24.0.107 in via ng0
Dec 24 16:00:47 pppoetestnas kernel: ipfw: 200 Count ICMP:8.0 172.30.90.173 10.24.0.107 out via xl0
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

SkiNNi
проходил мимо

Re: ipfw - деление канала поровну

Непрочитанное сообщение SkiNNi » 2013-04-25 11:26:34

Тема ещё активна? Можно задать свой вопрос?

ChihPih
ст. прапорщик
Сообщения: 568
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: ipfw - деление канала поровну

Непрочитанное сообщение ChihPih » 2013-04-25 11:38:13

Вы уже задали...
www.info-x.org - информационный ресурс о ОС FreeBSD.

SkiNNi
проходил мимо

Re: ipfw - деление канала поровну

Непрочитанное сообщение SkiNNi » 2013-04-25 12:34:33

Понял :oops: . Суть проблемы: необходимо делить трафик по чесному (почти). Конфигурация писалась на выдачу интернета через net0 и 2 лолкалки по интерфейсам lan1, lan2. Но пришлось на время теста изменить схему. В интернет выходят по lan1. Всё вроде работает(есть интернет). Но ipfw pipe show показывает:

Код: Выделить всё

00001:   5.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 0x0 0 buckets 0 active
Я понимаю что никакого деления не происходит.
Вывод ipfw show:

Код: Выделить всё

00100      0         0 check-state
01001     17      1020 deny ip from any to 127.0.0.0/8
01010      0         0 deny ip from 127.0.0.0/8 to any
01110 656386 432934886 skipto 5000 ip from any to any via lan1
01210 161707 117575056 skipto 10000 ip from any to any via lan2
01310    202     13528 skipto 20000 ip from any to any via net0
05000    798     60328 allow ip from 192.168.1.0/24 to me via lan1
05001    578    186005 allow ip from me to 192.168.1.0/24
05100      0         0 deny ip from 192.168.1.0/24 to 192.168.1.0/24 out xmit net0
05150 655010 432688553 nat 2 ip from any to any
05200 276065 302441902 queue 140 ip from any to 192.168.1.137
05300 654950 432609870 allow ip from any to any
09999      0         0 deny log logamount 100 ip from any to any
10000     12       480 allow ip from 192.168.222.0/24 to me via lan2
10100      0         0 deny ip from 192.168.222.0/24 to 192.168.222.0/24 out xmit net0
10200  65734  10567936 allow ip from 192.168.222.0/24 to any via lan2
10300  95858 106995820 allow ip from any to 192.168.222.0/24 via lan2
19999    103     10820 deny log logamount 100 ip from any to any
20010      0         0 deny log logamount 100 ip from not table(1) to me dst-port 22 in recv net0
20130      0         0 deny log logamount 100 icmp from any to 255.255.255.255 in recv net0
39999    202     13528 nat 1 ip from any to any via net0
40000      0         0 queue 180 ip from any to me in recv net0
40100      0         0 queue 180 ip from any to table(2) in recv net0
40300      0         0 queue 140 ip from any to any in recv net0
50000    202     13452 allow ip from any to any
65534      0         0 deny ip from any to any
65535     12       894 deny ip from any to any 
Интерфейс net0 физически отключён.
Опции ядра:

Код: Выделить всё

options		IPFIREWALL
options		IPFIREWALL_VERBOSE
options		IPFIREWALL_VERBOSE_LIMIT=100
options		IPFIREWALL_NAT
options		LIBALIAS
options		DUMMYNET
options		HZ="1000"
options		IPFIREWALL_FORWARD
options		ROUTETABLES=4 
Конфиг фаервола:

Код: Выделить всё

#!/bin/sh
###########################
# FreeBSD firewall script #
###########################
# Переменные		#  
#########################
	# путь к команде ipfw без вывода логов на экран
ipfw="/sbin/ipfw -q"
	#внутренний сетевой интерфейс - сеть 1 192.168.1.127
lan_if1="lan1"
        #внутренний сетевой интерфейс - сеть 2 192.168.222.0
lan_if2="lan2"
	#внешний сетевой интерфейс - интернет
inet_if="net0"
	#локальный ip адрес сеть 1
lan_ip1="192.168.1.127"
	#локальный ip адрес сеть 2
lan_ip2="192.168.222.7"
	#внешний адрес
inet_ip="192.168.111.254"
	#Адресация локальной сети
lan_net1="192.168.1.0/24"
	#Адресация локальной сети
lan_net2="192.168.222.0/24"
	#адрес проброса RDP
admin=""
##########----НАЧАЛО СОРТИРОВКИ----###########
${ipfw} -f flush
#таблица частных сетей
${ipfw} table 0 add 10.0.0.0/8
${ipfw} table 0 add 172.16.0.0/12
${ipfw} table 0 add 192.168.0.0/16
${ipfw} table 0 add 0.0.0.0/8
${ipfw} table 0 add 169.254.0.0/16
${ipfw} table 0 add 224.0.0.0/4
${ipfw} table 0 add 240.0.0.0/4

${ipfw} table 1 add 1.0.0.0/8
${ipfw} table 1 add 82.209.192.0/18
${ipfw} table 1 add 86.57.128.0/17
${ipfw} table 1 add 93.84.0.0/15
${ipfw} table 1 add 178.120.0.0/13
${ipfw} table 1 add 194.158.192.0/19
${ipfw} table 1 add 194.226.120.0/22
${ipfw} table 1 add 194.226.124.0/23
${ipfw} table 1 add 193.232.248.0/22
#таблица привилигированных IP
${ipfw} table 2 add 192.168.1.117

#конфигурирование каналов и очередей
${ipfw} pipe 1 config  bw 5Mbit/s #queue 50 gred 0.002/10/30/0.1
${ipfw} queue 140 config pipe 1 weight 40 mask  dst-ip 0x00000000
${ipfw} queue 180 config pipe 1 weight 80 mask  dst-ip 0x00000000
 
#конфигурация нат
${ipfw} nat 1 config log if ${inet_if} reset same_ports deny_in redirect_port tcp ${inet_ip}:22 22
${ipfw} nat 2 config ip 192.168.0.7
${ipfw} add check-state
#разрешаем всё
#${ipfw} add 1 allow ip from any to any 
#блокируем фрагментированные icmp пакеты
#${ipfw} add 100 deny icmp from any to any frag
#петлевой интерфейс
${ipfw} add 1000 allow ip from any to to any via lo
${ipfw} add 1001 deny ip from any to 127.0.0.0/8 
${ipfw} add 1010 deny ip from 127.0.0.0/8 to any
#трафик на локальном интерфейсе 1
${ipfw} add skipto 5000 ip from any to any via ${lan_if1}
#трафик на локальном интерфейсе 2
${ipfw} add skipto 10000 ip from any to any via ${lan_if2}
#трафик на внешнем интерфейсе 
${ipfw} add skipto 20000 ip from any to any via ${inet_if}

###############################################################
#трафик на внутреннем интерфейсе 1 #
##################################
#пропускаем к шлюзу из локальной сети
${ipfw} add 5000 allow ip from ${lan_net1} to me via ${lan_if1}
${ipfw} add 5001 allow ip from me to ${lan_net1}
# болкируем частные сети лезущие в нет
${ipfw} add 5100 deny ip from ${lan_net1} to ${lan_net1} out xmit ${inet_if}
${ipfw} add 5150 nat 2 ip from any to any
${ipfw} add 5200 queue 140 ip from any to 192.168.1.137
${ipfw} ass 5250 queue 140 ip from any to 192.168.222.22 
${ipfw} add 5300 allow ip from any to any
#${ipfw} add 5300 allow ip from ${lan_net1} to any via ${lan_if1}
#${ipfw} add 5400 allow ip from any to ${lan_net1} via ${lan_if1}
${ipfw} add 9999 deny log ip from any to any
###############################################################
#трафик на внутреннем интерфейсе 2 #
##################################
#пропускаем к шлюзу из локальной сети
${ipfw} add 10000 allow ip from ${lan_net2} to me via ${lan_if2}
# болкируем частные сети лезущие в нет
${ipfw} add 10100 deny ip from ${lan_net2} to ${lan_net2} out xmit ${inet_if}
${ipfw} add 10200 allow ip from ${lan_net2} to any via ${lan_if2}
${ipfw} add 10300 allow ip from any to ${lan_net2} via ${lan_if2}
${ipfw} add 19999 deny log ip from any to any
###############################################################
#трафик на внешнем интерфейсе #
###############################
${ipfw} add 20010 deny log ip from not table\(1\) to me 22 in recv ${inet_if}
#отключаем широковещательные запросы
${ipfw} add 20130 deny log icmp from any to 255.255.255.255 in recv ${inet_if}

#skipto 39999 ip from any to any out xmit $inet_if recv $lan_if limit src-addr 4
${ipfw} add 39999 nat 1 ip from any to any via ${inet_if}
${ipfw} add 40000 queue 180 ip from any to me in recv ${inet_if}
${ipfw} add 40100 queue 180 ip from any to table\(2\) in recv ${inet_if}
${ipfw} add 40300 queue 140 ip from any to any in recv ${inet_if}
${ipfw} add 50000 allow ip from any to any

${ipfw} add 65534 deny ip from any to any
RC.CONF

Код: Выделить всё

ifconfig_rl1_name="lan1"
ifconfig_rl0_name="lan2"
ifconfig_ed0_name="net0"
ifconfig_lan1="inet 192.168.1.127 netmask 255.255.255.0"
ifconfig_lan1_alias0="192.168.0.7 netmask 255.255.255.0"
ifconfig_lan2="inet 192.168.222.7 netmask 255.255.255.0"
ifconfig_net0="inet 192.168.111.254 netmask 255.255.255.0"
#ifconfig_lan1_alias1="inet 192.168.0.127 netmask 255.255.255.255"
defaultrouter="192.168.0.100"
gateway_enable="YES"

sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
inetd_enable="NO"
firewall_enable="YES"
#firewall_nat_enable="YES"
#dummynet_enable="YES"
firewall_script="/etc/firewall.conf"

SkiNNi
проходил мимо

Re: ipfw - деление канала поровну

Непрочитанное сообщение SkiNNi » 2013-04-25 13:13:47

Может не чётко обрисовал проблему, не показывает деление канала. Ставил просмотр видео, лазил по сайтам. Но ничего не показывает что он делит.

SkiNNi
проходил мимо

Re: ipfw - деление канала поровну

Непрочитанное сообщение SkiNNi » 2013-04-26 11:04:54

Кажется разобрался :Yahoo!: маска на очереди должна быть 0xffffffff , а во многих страницах указанно 0x00000000 что неправильно.
http://www.opennet.ru/base/net/ipfw_pipe.txt.html. да и просматривать такие очереди через ipfw queue show.

Аватара пользователя
KIper
рядовой
Сообщения: 14
Зарегистрирован: 2010-02-26 16:25:23
Откуда: РФ,ВО, Вологда
Контактная информация:

Re: ipfw - деление канала поровну

Непрочитанное сообщение KIper » 2013-07-02 13:59:54

у меня схожая ситуация... не работает ограничение bw на pipe, хотел ограничить скорость для одного конкретного ip.
сделал так:

Код: Выделить всё

ipfw pipe 1 config bw 1Mbit/s mask dst-ip 0xffffffff
ipfw pipe 2 config bw 1Mbit/s mask src-ip 0xffffffff
ipfw add 11 pipe 1 ip from any to 192.168.250.111 out
ipfw add 12 pipe 2 ip from 192.168.250.111 to any in
трафик в pipe точно попадает, но не шейпится :(

Код: Выделить всё

sudo 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 1024 buckets 1 active
    mask:  0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 62 ip           0.0.0.0/0     192.168.250.111/0      104     5408  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 1024 buckets 1 active
    mask:  0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
118 ip   192.168.250.111/0             0.0.0.0/0       22     3784  0    0   0

% sudo 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 1024 buckets 1 active
    mask:  0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 62 ip           0.0.0.0/0     192.168.250.111/0       77     4052  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 1024 buckets 1 active
    mask:  0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
118 ip   192.168.250.111/0             0.0.0.0/0      193    33076  0    0   0
не могу найти в доках, почему так...
Помогите пожалуйста, укажите где и что почитать.
А у вас /dev/hends не примонтированы в /mnt/ass?

Аватара пользователя
KIper
рядовой
Сообщения: 14
Зарегистрирован: 2010-02-26 16:25:23
Откуда: РФ,ВО, Вологда
Контактная информация:

Re: ipfw - деление канала поровну

Непрочитанное сообщение KIper » 2013-07-02 14:08:28

забыл вот ещё дописать:

Код: Выделить всё

конфиг ядра:
options <------>IPFIREWALL
options <------>IPFIREWALL_VERBOSE
options <------>IPFIREWALL_VERBOSE_LIMIT=10
options <------>IPFIREWALL_NAT
options <------>IPFIREWALL_DEFAULT_TO_ACCEPT
options <------>LIBALIAS
options <------>ROUTETABLES=2
options <------>DUMMYNET
options <------>HZ="4000"

Код: Выделить всё

rc.conf:
firewall_enable="YES"
dummynet_enable="YES"
firewall_type="/etc/rc.firewall"
firewall_logging="YES"
А у вас /dev/hends не примонтированы в /mnt/ass?