Общий туннель для определенной группы клиентов на PF
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- ст. сержант
- Сообщения: 364
- Зарегистрирован: 2008-10-02 9:28:30
Общий туннель для определенной группы клиентов на PF
Привет всем.
Столкнулся с трудностью, что надо сделать туннель скоростью N мбит/с для M клиентов, но на pf.
Мне предлагали уйти на ipfw, но я его недолюбливаю. странный он какой-то.
В роли NAS (сервер доступа) выступает MPD5. MPD5 получает инструкции на скорость средствами freeradius'а.
Зачем нужен туннель?
Есть группа качальщиков, чтобы они не отбирали канал у простых абонентов - надо сделать так, чтобы они все попадали в эту трубу (но только качальщики). Читал про pf+ALTQ - не понял ни слова.
Если не трудно - объясните что к чему и почему.
Заранее благодарю за ответ.
Столкнулся с трудностью, что надо сделать туннель скоростью N мбит/с для M клиентов, но на pf.
Мне предлагали уйти на ipfw, но я его недолюбливаю. странный он какой-то.
В роли NAS (сервер доступа) выступает MPD5. MPD5 получает инструкции на скорость средствами freeradius'а.
Зачем нужен туннель?
Есть группа качальщиков, чтобы они не отбирали канал у простых абонентов - надо сделать так, чтобы они все попадали в эту трубу (но только качальщики). Читал про pf+ALTQ - не понял ни слова.
Если не трудно - объясните что к чему и почему.
Заранее благодарю за ответ.
Tux: "Kill Bill !!!"
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
- ---nebo---
- старшина
- Сообщения: 424
- Зарегистрирован: 2008-11-01 21:06:23
- Откуда: Киев
- Контактная информация:
Re: Общий туннель для определенной группы клиентов на PF
"Зарезание" скорости состоит из двух этапов: 1) создание очереди(или канала) и 2) направление нужного трафика(от определенных клиентов, или как вам угодно) в эту очередь.
Вот шорошее чтиво
Раздел 2.2.4.
Допустим у вас было правило в PF
Нужно подрезать скорость. Дописываете:
+смотрите на сайте
http://www.lissyara.su/?id=1671
http://www.lissyara.su/?id=1833
Вот шорошее чтиво
Код: Выделить всё
http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html
Допустим у вас было правило в PF
Код: Выделить всё
pass out on $NET from any to any port 80
Код: Выделить всё
altq on $NET cbq bandwidth 2Mb queue {boss , zam , other}
queue boss bandwidth 20% priority 1
queue zam bandwidth 15% priority 2
queue other bandwidth 10% priority 3 cbq (default)
pass out on $NET from any to any port 80 queue other
http://www.lissyara.su/?id=1671
http://www.lissyara.su/?id=1833
...участки под застройку в живописном месте Интернет
-
- ст. сержант
- Сообщения: 364
- Зарегистрирован: 2008-10-02 9:28:30
Re: Общий туннель для определенной группы клиентов на PF
---nebo--- писал(а):http://www.lissyara.su/?id=1671
Код: Выделить всё
# СЕКЦИЯ приоретизация и очереди ALTQ
## у меня пустая, т.к. не использую шейпинг и очереди.
## Всем компам домашней сети доступна
## полная ширина канала без ограничений.
Вот как раз это я и не могу понять.---nebo--- писал(а):altq on $NET cbq bandwidth 2Mb queue {boss , zam , other} queue boss bandwidth 20% priority 1queue zam bandwidth 15% priority 2queue other bandwidth 10% priority 3 cbq (default)pass out on $NET from any to any port 80 queue other
Я не вижу чтобы тут труба делалась.
Опять же, что за $NET?
Ну и ко всему этому (извиняюсь, что не отписал ранее) у меня будет nat на машине. Натовская сеть 172.16/16.
Tux: "Kill Bill !!!"
- ---nebo---
- старшина
- Сообщения: 424
- Зарегистрирован: 2008-11-01 21:06:23
- Откуда: Киев
- Контактная информация:
Re: Общий туннель для определенной группы клиентов на PF
Труба здесь и не делается. Создается очередь.Я не вижу чтобы тут труба делалась.
ДОпустим у вас шлюз:
Код: Выделить всё
LAN---[$int]GATE[$ext]---INET
Если запросы полностью не занимают полосу пропускания - все ОК, если превышают(в случае перегрузки) - работает механизм определения приоритета пакетов, там их несколько видов(CBQ, HFSC, RED, Приоритетные, ...).
Если у вас будет NAT, то обратите внимание п.2.1.5.2
Код: Выделить всё
Трансляция осуществляется до фильтрации. Правила фильтра увидят уже оттранслированные пакеты.
...участки под застройку в живописном месте Интернет
-
- ст. сержант
- Сообщения: 364
- Зарегистрирован: 2008-10-02 9:28:30
Re: Общий туннель для определенной группы клиентов на PF
Немного не понял хода мысли.---nebo--- писал(а):Тоесть если нат у вас будет на $ext, то правила фильтра у вас увидят пакеты с источником НЕ 172.16.Х.Х , а ОТТРАНСЛИРОВАННЫЕ, тогда очередь нужно создавать на $int.
Натовская сеть у меня как раз 172.16.Х.Х, соответственно все клиенты лезут через $ext в инет.
На какой ифейс создавать очередь тогда?
Вопрос еще стоит в том - как добавить качальщиков под белыми ip в этот же туннель?
Опять же вопрос.
Выдержит ли такой метод ограничивания пользователей 1000 человек?
Просто я работаю в провайдинговой компании и для меня важен именно этот результат... ну или больше.
Еще раз благодарю за ответ.
Tux: "Kill Bill !!!"
- ---nebo---
- старшина
- Сообщения: 424
- Зарегистрирован: 2008-11-01 21:06:23
- Откуда: Киев
- Контактная информация:
Re: Общий туннель для определенной группы клиентов на PF
лично у меня такого кол-ва пользователей нету, для 150 - без проблем. А вообще, если у вас будет 1000 пользователей, то просто больше нагрузка на железо, ну и, если будут проблемы, подкрутите ядро, поиграетесь с sysctl. Слыхал у ребят VPN серваки стоят MPD+PF, так по пару тысяч сессий держут и нечего, нормально . Другое дело на чем и как настроено.Выдержит ли такой метод ограничивания пользователей 1000 человек?
Код: Выделить всё
LAN---[$int]GATE[$ext]---INET
Создавайте очереди на $int, а НАТ у вас соответственно на $ext. Потому, что если создадите очереди на $ext, то ваши заначеный пакеты их(фильтрующие правила и соответственно очереди) просто не увидят.Натовская сеть у меня как раз 172.16.Х.Х, соответственно все клиенты лезут через $ext в инет.
На какой ифейс создавать очередь тогда?
допустимВопрос еще стоит в том - как добавить качальщиков под белыми ip в этот же туннель?
Код: Выделить всё
table <white_ip> const { 1.1.1.1 , 1.1.1.2 , 1.1.1.3 }
altq on $int cbq bandwidth 2Mb queue {user , other}
queue user bandwidth 20% priority 2
queue other bandwidth 10% priority 1 cbq (default)
pass in on $int from 172.16.0.0/16 to any port 80 queue other
pass in on $int from <white_ip> to any port 80 queue other
...участки под застройку в живописном месте Интернет
-
- ст. сержант
- Сообщения: 364
- Зарегистрирован: 2008-10-02 9:28:30
Re: Общий туннель для определенной группы клиентов на PF
У меня вот такие правила:
Если не трудно, то на их примере покажите.
Еще раз благодарен за помощь.
ЗЫ. Если не трудно, смогли бы вы переделать эти правила на ipfw?
Код: Выделить всё
$ cat pf.conf
table <rfcnets> {10.0.0.0/8, !192.168.1.0/24, 192.168.0.0/16, !172.16.0.0/24, 172.16.0.0/12 }
table <vpn> persist
#table <vpn> {172.16.0.0/24}
table <me> { self, 172.16.0.1}
# Options: tune the behavior of pf, default values are given.
set timeout { interval 10, frag 30 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 5 }
set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
set timeout { icmp.first 20, icmp.error 10 }
set timeout { other.first 60, other.single 30, other.multiple 60 }
set timeout { adaptive.start 0, adaptive.end 0 }
set limit { states 50000, frags 5000 }
set loginterface none
#set optimization normal
set block-policy drop
set require-order yes
set fingerprints "/etc/pf.os"
#set state-policy if-bound
# Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
scrub in all
nat on em0 from 172.16.0.0/16 to any -> em0
pass quick on lo from any to any
block in quick on em0 from <rfcnets> to any
# icmp
pass in quick inet proto icmp from any to <me> icmp-type echoreq keep state
# ssh
pass in quick proto tcp from any to <me> port ssh flags S/SA keep state
# http,https
pass in quick proto tcp from any to 10.10.0.2 port {443, 80} flags S/SA keep state
# dns
pass in quick proto {tcp, udp} from any to <me> port domain flags S/SA keep state
# pptp
pass in quick proto tcp from any to <me> port 1723 flags S/SA keep state
# GRE наружу
pass in quick proto gre from any to <me> keep state
pass in quick proto tcp from any to <me> port 11758 flags S/SA keep state
# MPD
pass in quick proto tcp from any to <me> port 5006 flags S/SA keep state
#SNMP
pass in quick proto udp from 10.10.10.99 to <me> port 161 keep state
block in quick from any to <me>
block quick from 172.16.0.0/16 to 172.16.0.0/16
pass in quick inet from <vpn> to any
pass in quick inet from any to <vpn>
block in quick all
block out quick on em0 from <rfcnets> to any
pass out quick from <me> to any keep state
pass out quick from <rfcnets> to <rfcnets>
pass out quick from any to <vpn>
pass out quick from <vpn> to any
block out quick all
Еще раз благодарен за помощь.
ЗЫ. Если не трудно, смогли бы вы переделать эти правила на ipfw?
Tux: "Kill Bill !!!"
- ---nebo---
- старшина
- Сообщения: 424
- Зарегистрирован: 2008-11-01 21:06:23
- Откуда: Киев
- Контактная информация:
Re: Общий туннель для определенной группы клиентов на PF
1. Как в IPFW первести след. секцию - нужно спросить у товарищей, вероятно не все можно однозначно сопоставить+функционал разный
2. Судя из конфига я уловил только один интерфейс - em0. Если их два, то напишите, если один, тогда не понятно какую функцию выполняет нат и что вообще под этим подразумевается.
По остальному(перевод, без вникания в смысл что и как делает, и для чего):
Код: Выделить всё
set timeout { interval 10, frag 30 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 5 }
set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
set timeout { icmp.first 20, icmp.error 10 }
set timeout { other.first 60, other.single 30, other.multiple 60 }
set timeout { adaptive.start 0, adaptive.end 0 }
set limit { states 50000, frags 5000 }
set fingerprints "/etc/pf.os"
scrub in all
Код: Выделить всё
nat on em0 from 172.16.0.0/16 to any -> em0
По остальному(перевод, без вникания в смысл что и как делает, и для чего):
Код: Выделить всё
#!/bin/sh
cmd="/sbin/ipfw"
ext="em0"
ks="keep-state"
$cmd -f flush
$cmd table all flush
$cmd add check-state
#rfcnets
$cmd table 1 add 10.0.0.0/8
$cmd table 1 add 172.16.0.0/12
$cmd table 1 add 192.168.0.0/16
#VPN
$cmd table 2 add 172.16.0.0/24
$cmd add allow all from any to any via lo
$cmd add deny all from table\(1\) to any in via $ext
$cmd add deny all from { not 192.168.1.0/24 or not 172.16.0.0/24 } to any in via $ext
$cmd add allow tcp from any to any established
$cmd add allow icmp from any to me icmptypes 0,8,11 $ks
$cmd add allow tcp from any to me 22 $ks
$cmd add allow tcp from any to 10.10.0.2 443,80 $ks
$cmd add allow tcp from any to me 53 $ks
$cmd add allow udp from any to me 53 $ks
$cmd add allow tcp from any to me 1723 $ks
$cmd add allow gre from any to me $ks
$cmd add allow tcp from any to me 11758 $ks
$cmd add allow tcp from any to me 5006 $ks
$cmd add allow udp from 10.10.10.99 to me 161 $ks
$cmd add deny all from any to me
$cmd add deny all from 172.16.0.0/16 to 172.16.0.0/16
$cmd add allow all from table\(2\) to any
$cmd add allow all from any to table\(2\)
$cmd add deny all from any to any in via $ext
$cmd add deny all from table\(1\) to any via $ext
$cmd add deny all from { not 192.168.1.0/24 or not 172.16.0.0/24 } to any via $ext
$cmd add allow all from me to any $ks
$cmd add allow all from table\(1\) to table\(1\)
$cmd add allow all from { not 192.168.1.0/24 or not 172.16.0.0/24 } to { not 192.168.1.0/24 or not 172.16.0.0/24 } via $ext
$cmd add allow all from any to table\(2\)
$cmd add allow all from table\(2\) to any
$cmd add deny all from any to any out via $ext
...участки под застройку в живописном месте Интернет
-
- ст. сержант
- Сообщения: 364
- Зарегистрирован: 2008-10-02 9:28:30
Re: Общий туннель для определенной группы клиентов на PF
Ифейсов 2.---nebo--- писал(а):2. Судя из конфига я уловил только один интерфейс - em0. Если их два, то напишите, если один, тогда не понятно какую функцию выполняет нат и что вообще под этим подразумевается.
Em0 - внешний.
Em1 - внутренний.
В приведенном конфиге вы указываете:
Код: Выделить всё
#VPN
$cmd table 2 add 172.16.0.0/24
Код: Выделить всё
$cmd add deny all from { not 192.168.1.0/24 or not 172.16.0.0/24 } to any in via $ext
Код: Выделить всё
$cmd add allow all from { not 192.168.1.0/24 or not 172.16.0.0/24 } to { not 192.168.1.0/24 or not 172.16.0.0/24 } via $ext
Это оптимизация pf. Я не думаю, что что переводить это есть необходимость.---nebo--- писал(а):1. Как в IPFW первести след. секцию - нужно спросить у товарищей, вероятно не все можно однозначно сопоставить+функционал разный
Единственная просьба - объясните, куда в мой конфиг pf.conf
вставить это:
Заранее благодарен за помощь.Код: Выделить всё
table <white_ip> const { 1.1.1.1 , 1.1.1.2 , 1.1.1.3 } altq on $int cbq bandwidth 2Mb queue {user , other} queue user bandwidth 20% priority 2 queue other bandwidth 10% priority 1 cbq (default) pass in on $int from 172.16.0.0/16 to any port 80 queue other pass in on $int from <white_ip> to any port 80 queue other
Tux: "Kill Bill !!!"
- ---nebo---
- старшина
- Сообщения: 424
- Зарегистрирован: 2008-11-01 21:06:23
- Откуда: Киев
- Контактная информация:
Re: Общий туннель для определенной группы клиентов на PF
1.
2.
это на ваше(там где !192.168.1.0/24 и !172.16.0.0/24)
просто эти сети не попали в таблицу table1
3. - в ваш раздел с таблицами
- после scrub in all, перед НАТом.
- это вам решить куда его поставить, тоесть на каком моменте вы хотиче чтобы пользователи попали в очередь, поставте в самом начале.
пропустил коментарий в конфиге pf.confВ приведенном конфиге вы указываете:Код: Выделить всё
#VPN $cmd table 2 add 172.16.0.0/24
2.
Код: Выделить всё
$cmd add deny all from { not 192.168.1.0/24 or not 172.16.0.0/24 } to any out via $ext
$cmd add allow all from { not 192.168.1.0/24 or not 172.16.0.0/24 } to { not 192.168.1.0/24 or not 172.16.0.0/24 } out via $ext
Код: Выделить всё
table <rfcnets> {10.0.0.0/8, !192.168.1.0/24, 192.168.0.0/16, !172.16.0.0/24, 172.16.0.0/12 }
...
block out quick on em0 from <rfcnets> to any
pass out quick from <rfcnets> to <rfcnets>
3.
Код: Выделить всё
table <white_ip> const { 1.1.1.1 , 1.1.1.2 , 1.1.1.3 }
Код: Выделить всё
altq on $int cbq bandwidth 2Mb queue {user , other}
queue user bandwidth 20% priority 2
queue other bandwidth 10% priority 1 cbq (default)
Код: Выделить всё
pass in on $int from 172.16.0.0/16 to any port 80 queue other
pass in on $int from <white_ip> to any port 80 queue other
...участки под застройку в живописном месте Интернет
-
- ст. сержант
- Сообщения: 364
- Зарегистрирован: 2008-10-02 9:28:30
Re: Общий туннель для определенной группы клиентов на PF
Все. Понял. спасибо.
Последний вопрос.
Я буду просто создавать очередь по портам (23, 80, 445 и т.п.) или могу задать конкретно туннель 20 mb для 192.168.1.3-192.168.1.25, 192.168.1.26 и для 192.168.1.30?
Последний вопрос.
Я буду просто создавать очередь по портам (23, 80, 445 и т.п.) или могу задать конкретно туннель 20 mb для 192.168.1.3-192.168.1.25, 192.168.1.26 и для 192.168.1.30?
Tux: "Kill Bill !!!"
- ---nebo---
- старшина
- Сообщения: 424
- Зарегистрирован: 2008-11-01 21:06:23
- Откуда: Киев
- Контактная информация:
Re: Общий туннель для определенной группы клиентов на PF
У очереди - параметры: скорость обработки пакетов, метод обработки пакетов в ней ....Soldier писал(а):Все. Понял. спасибо.
Последний вопрос.
Я буду просто создавать очередь по портам (23, 80, 445 и т.п.) или могу задать конкретно туннель 20 mb для 192.168.1.3-192.168.1.25, 192.168.1.26 и для 192.168.1.30?
А то, какой тип трафика(23, 80, 445), и с каких адресов(192.168.1.3-192.168.1.25, 192.168.1.26) попадет в какую очередь - вы задаете ФИЛЬТРУЮЩИМИ ПРАВИЛАМИ.
...участки под застройку в живописном месте Интернет