devchaos Posted August 14, 2007 Posted August 14, 2007 Здравствуйте, Есть сервер 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 Правильно ли я понимаю что теперь канал будет равномерно распределятся на всех включая анлимщиков при этом анлимщики будут урезаны по скорости? Заранее спасибо. Вставить ник Quote
t0ly Posted August 14, 2007 Posted August 14, 2007 (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 August 14, 2007 by t0ly Вставить ник Quote
devchaos Posted August 14, 2007 Author Posted August 14, 2007 Чтобы равномерно было в обе стороны нужно 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 ? Вставить ник Quote
Zaqwr Posted August 15, 2007 Posted August 15, 2007 я ещё так добавил бы ipfw add queue 1 ip from any to 192.168.0.0/24 in ipfw add queue 1 ip from 192.168.0.0/24 to any out Вставить ник Quote
devchaos Posted August 15, 2007 Author Posted August 15, 2007 Остановился на такой конструкции 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 Правильно? Вставить ник Quote
Zaqwr Posted August 16, 2007 Posted August 16, 2007 Есть сервер FreeBSD 6.2 инет раздается ipfw + natd. Правильно? нет, так как из-за natd пакеты будут по два раза заворачиваться в pipe чтобы этого избежать необходимоу укзать in/out Вставить ник Quote
devchaos Posted August 16, 2007 Author Posted August 16, 2007 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 ниже чем должна быть ( Если убрать первую конструкцию с ними все ок. В чем может быть проблема не подскажете? Вставить ник Quote
Zaqwr Posted August 17, 2007 Posted August 17, 2007 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 Вставить ник Quote
t0ly Posted September 1, 2007 Posted September 1, 2007 (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 September 1, 2007 by t0ly Вставить ник Quote
chipset Posted October 4, 2012 Posted October 4, 2012 Тоесть если я хочу использывать таблицы то получится так? Создаю 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 Все верно или лучше как то иначе. Вставить ник Quote
boco Posted October 4, 2012 Posted October 4, 2012 (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 October 4, 2012 by boco Вставить ник Quote
chipset Posted October 4, 2012 Posted October 4, 2012 (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 October 4, 2012 by chipset Вставить ник Quote
chipset Posted October 5, 2012 Posted October 5, 2012 (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 October 5, 2012 by chipset Вставить ник Quote
vlad11 Posted October 5, 2012 Posted October 5, 2012 (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 October 5, 2012 by vlad11 Вставить ник Quote
boco Posted October 6, 2012 Posted October 6, 2012 А таблицы будут дублировать друг друга по содержимому? И можно еще пояснить для чего так делается? нет, аргументы у ip-адресов будут разными. аргумент - номер пайпа. делается это для того, чтобы минимизировать число правил фаервола. Вставить ник Quote
chipset Posted October 6, 2012 Posted October 6, 2012 Все нашел ошибку. В фаерволе было одно правило из за которого все пакеты просто не доходили до правил шейпера. Поменял местами и заработало. Вставить ник 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.