Jump to content

Recommended Posts

Posted

Здравствуйте,

Есть сервер FreeBSD 6.2 инет раздается ipfw + natd. У анлимщиков канал режется dummynet. Вот так

ipfw add 100 pipe 2 ip from any to 192.168.0.10 out

ipfw add 101 pipe 2 ip from 192.168.0.10 to any in

ipfw pipe 2 config bw 1Mbit/s queue 10

Работает замечательно, но хотелось бы равномерно распределить канал между остальными пользователями.

 

Делаю вот так

переменную sysctl

# net.inet.ip.fw.one_pass меняю на 0

Добавляю правило

ipfw pipe 1 config bw 10Mbit/s

ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000

ipfw add queue 1 ip from any to 192.168.0.1/24

Правильно ли я понимаю что теперь канал будет равномерно распределятся на всех включая анлимщиков при этом анлимщики будут урезаны по скорости?

Заранее спасибо.

Posted (edited)

>ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000

 

тут вместо 0x00000000 должно быть 0xffffffff

 

>ipfw add queue 1 ip from any to 192.168.0.1/24

тут правильнее было бы написать вместо 192.168.0.1/24 -> 192.168.0.0/24

 

>Правильно ли я понимаю что теперь канал будет равномерно

>распределятся на всех включая анлимщиков при этом анлимщики будут

>урезаны по скорости?

 

поидее да, надо проверять, а ещё "равномерно" будет только в одну сторону.

Edited by t0ly
Posted

Чтобы равномерно было в обе стороны нужно

ipfw pipe 1 config bw 10Mbit/s

ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0xffffffff

ipfw add queue 1 ip from any to 192.168.0.0/24

ipfw add queue 1 ip from 192.168.0.0/24 to any

 

?

Posted

Остановился на такой конструкции

ipfw pipe 1 config bw 12Mbit/s

ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0xffffffff

ipfw queue 11 config pipe 1 weight 50 mask src-ip 0xffffffff

ipfw add 20 queue 1 ip from any to 192.168.115.0/24

ipfw add 20 queue 11 ip from 192.168.115.0/24 to any

Судя по всему работает )

Всех в одну трубу так как канал полудуплексный (wi-fi)

Если был бы полнодуплексным тогда

ipfw pipe 1 config bw 12Mbit/s

ipfw pipe 2 config bw 12Mbit/s

ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0xffffffff

ipfw queue 11 config pipe 2 weight 50 mask src-ip 0xffffffff

ipfw add 20 queue 1 ip from any to 192.168.115.0/24

ipfw add 20 queue 11 ip from 192.168.115.0/24 to any

Правильно?

Posted
Есть сервер FreeBSD 6.2 инет раздается ipfw + natd.

Правильно?

нет, так как из-за natd пакеты будут по два раза заворачиваться в pipe чтобы этого избежать необходимоу укзать in/out

Posted

ipfw pipe 1 config bw 12Mbit/s

ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0xffffffff

ipfw queue 11 config pipe 1 weight 50 mask src-ip 0xffffffff

ipfw add 20 queue 1 ip from any to 192.168.115.0/24 out

ipfw add 20 queue 11 ip from 192.168.115.0/24 to any in

?

Вот в чем беда только, за этими правилами идет отдельно шейпер на некоторых клиентов вот так

ipfw add 100 pipe 2 ip from any to 192.168.0.10 out

ipfw add 101 pipe 2 ip from 192.168.0.10 to any in

ipfw pipe 2 config bw 1Mbit/s queue 10

При этом у клиентов полоса раза в 3 ниже чем должна быть (

Если убрать первую конструкцию с ними все ок. В чем может быть проблема не подскажете?

Posted

devchaos

При этом у клиентов полоса раза в 3 ниже чем должна быть
неполадки с 192.168.0.10 ?? правила 100 и 101 срабатывают?

попорбуйте так

ipfw add 100 pipe 2 ip from any to 192.168.0.10 in

ipfw add 101 pipe 3 ip from 192.168.0.10 to any out

ipfw pipe 2 config bw 1Mbit/s queue 10

ipfw pipe 3 config bw 1Mbit/s queue 10

in out поменять местами и добавиьт pipe

 

кстати по логике вещей

ipfw add 20 queue 1 ip from any to 192.168.115.0/24 out должно быть IN но вот src-ip 0xffffffff только с out

  • 3 weeks later...
Posted (edited)

при

sysctl net.inet.ip.fw.one_pass=1

 

ipfw add 100 pipe 2 ip from any to 192.168.0.10 out

ipfw add 101 pipe 3 ip from 192.168.0.10 to any in

ipfw pipe 2 config bw 1Mbit/s queue 10

ipfw pipe 3 config bw 1Mbit/s queue 10

таким образом клиенты будут обрабатываться отдельным пайпом

а за тем будут обрабатываться сетки

 

 

ipfw pipe 1 config bw 12Mbit/s

 

ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0xffffffff

ipfw queue 11 config pipe 1 weight 50 mask src-ip 0xffffffff

 

ipfw add 20 queue 1 ip from any to 192.168.115.0/24 out

ipfw add 20 queue 11 ip from 192.168.115.0/24 to any in

 

и если ты хочиш сделать не сетки, а какой-то список, то тут уже надо использовать таблицы

ipfw table 1 add <ip>

 

sysctl net.inet.ip.fw.one_pass=0

в нужных местах после пайпа или очереди ставишь allow

Edited by t0ly
  • 5 years later...
Posted

Тоесть если я хочу использывать таблицы то получится так?

 

Создаю pipe для входящей и исходящей скоростей для ip из table 1

ipfw pipe 1 config bw 2Mbit/s mask dst-ip 0x000000ff

ipfw pipe 2 config bw 2Mbit/s mask src-ip 0x000000ff

ipfw add 11 pipe 1 ip from any to table\(1\) out

ipfw add 12 pipe 2 ip from table\(1\) to any in

 

Создаю pipe для входящей и исходящей скоростей для ip из table 2

ipfw pipe 3 config bw 4Mbit/s mask dst-ip 0x000000ff

ipfw pipe 4 config bw 4Mbit/s mask src-ip 0x000000ff

ipfw add 13 pipe 3 ip from any to table\(2\) out

ipfw add 14 pipe 4 ip from table\(2\) to any in

 

и добавляю нужные IP в нужные таблицы

ipfw table 1 add 10.0.0.3

ipfw table 2 add 10.0.0.2

 

Все верно или лучше как то иначе.

Posted (edited)

Все верно или лучше как то иначе.

таблицы две - для in и out:

 

ipfw add pipe tablearg all from table\(1\) to any in

ipfw add pipe tablearg all from any to table\(2\) out

Edited by boco
Posted (edited)

А таблицы будут дублировать друг друга по содержимому? И можно еще пояснить для чего так делается?

И получится:

ipfw pipe 212 config bw 4Mbit/s mask dst-ip 0x000000ff

ipfw pipe 213 config bw 4Mbit/s mask src-ip 0x000000ff

ipfw add 1001 pipe tablearg all from table\(12\) to any in

ipfw add 1002 pipe tablearg all from any to table\(13\) out

 

и добавляю нужные IP в нужные таблицы

ipfw table 12 add 10.0.172.138/32 212

ipfw table 13 add 10.0.172.138/32 213

Edited by chipset
Posted (edited)

Сетевка rl1 подключена к роутеру который по l2tp подключается к провайдеру, а от сетевки rl0 мы будем подключать компы на которые режем скорость.

rl0: inet 10.113.1.1 netmask 0xffffff00 broadcast 10.113.1.255
rl1: inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255

 

Начну то что работает. Создаем таблицу в фаерволе ipfw в которой у нас будут разрешенные пользователи.

ipfw add 501 deny ip from not table\(15\) to any out recv rl0 xmit rl1

Затем добавим в эту таблицу пользователей которых мы блокировать не будем. Для примера добавим один ip

ipfw table 15 add 10.113.1.240/32

 

Если добавить в таблицу то блокировки нет. Если удаляем пользователя из таблицы то пользователь заблокирован.

 

Теперь к тому что не работает.

 

Режем скорость согласно тарифному плану:

Для каждого тарифного плана создадим 2 pipe с требуемой скоростью, один на вход, другой на выход, и укажем у входящего dst-mask 0xffffffff а у исходящего src-mask 0xffffffff

 

ipfw pipe 220 config bw 4096Kbit/s mask src-ip 0xffffffff noerror
ipfw pipe 221 config bw 4096Kbit/s mask dst-ip 0xffffffff noerror

 

И добавим следующие правила в фаервол ipfw:

 

ipfw add 1001 pipe tablearg ip from table\(12\) to any out recv rl0 xmit rl1
ipfw add 1002 pipe tablearg ip from any to table\(13\) out recv rl1 xmit rl0

 

Теперь нам надо добавить в таблицу 12 и 13 всех пользователей указав им в качестве аргумента номер пайпа их тарифного плана, например:

 

ipfw table 12 add 10.113.1.240/32 220
ipfw table 13 add 10.113.1.240/32 221

 

Ну и ответственно скорость не режется на 4 Мбит/с

Не как не пойму где косяк

Edited by chipset
Posted (edited)

 

 

И добавим следующие правила в фаервол ipfw:

 

ipfw add 1001 pipe tablearg ip from table\(12\) to any out recv rl0 xmit rl1
ipfw add 1002 pipe tablearg ip from any to table\(13\) out recv rl1 xmit rl0

 

Не как не пойму где косяк

 

Попробуй

ipfw add 1001 pipe tablearg ip from table\(12\) to any in via rl1
ipfw add 1002 pipe tablearg ip from any to table\(12\) out via rl1

 

P.S. Таблица пользователей одна!

P.P.S. Если не заработает, то удалите tablearg и укажите явно номер пайпа

Edited by vlad11
Posted

А таблицы будут дублировать друг друга по содержимому? И можно еще пояснить для чего так делается?

нет, аргументы у ip-адресов будут разными. аргумент - номер пайпа.

 

делается это для того, чтобы минимизировать число правил фаервола.

Posted

Все нашел ошибку. В фаерволе было одно правило из за которого все пакеты просто не доходили до правил шейпера. Поменял местами и заработало.

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 и с Политикой конфиденциальности.