FreeBSD. Управление трафиком.

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
legoprog
ефрейтор
Сообщения: 51
Зарегистрирован: 2008-02-25 19:01:21
Откуда: Казахстан \ Шымкент
Контактная информация:

FreeBSD. Управление трафиком.

Непрочитанное сообщение legoprog » 2008-08-22 20:20:44

Вобщем стоит такая задача. Есть сервак под БСД, через который проходит весь траф сети малого офиса в инет. Нужно реализовать такую задачу.
Чтобы Сервак качал из инета постоянно допустим торренты. При обращение клиента(ов), сервак обрубает скоость торрентам и отдает весь канал клиенту(ам). Желательно сделать это на уровне tcp. Чтобы можно быо полноценно использовать инет клиентам.
В какую сторону посоветуете капать ?

P.S.
Торренты - Это пример.. Сервак может по своему использовать траф, главное чтобы клиенты не замечали, что канал загружен.

Хостинговая компания 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/

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение zingel » 2008-08-22 20:27:36

главное чтобы клиенты не замечали, что канал загружен
Силами ipfw наверняка можно решить + простой скрипт
Z301171463546 - можно пожертвовать мне денег

legoprog
ефрейтор
Сообщения: 51
Зарегистрирован: 2008-02-25 19:01:21
Откуда: Казахстан \ Шымкент
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение legoprog » 2008-08-22 20:29:13

zingel писал(а):
главное чтобы клиенты не замечали, что канал загружен
Силами ipfw наверняка можно решить + простой скрипт
Как отслеживать входящие подключения к Серваку, направленные в инет ???

Може кто знает готовые приложения\решения ?

Аватара пользователя
LMik
капитан
Сообщения: 1852
Зарегистрирован: 2007-07-17 9:14:39
Откуда: МО
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение LMik » 2008-08-22 20:42:32

legoprog писал(а):
zingel писал(а):
главное чтобы клиенты не замечали, что канал загружен
Силами ipfw наверняка можно решить + простой скрипт
Как отслеживать входящие подключения к Серваку, направленные в инет ???

Може кто знает готовые приложения\решения ?
ipfw готовое приложение\решение
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!

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

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение uHk » 2008-08-22 22:51:32

в altq есть очереди, в них borrow
если я не ошибаюсь можно сделать очереди таких образом, чтобы серверу выделить канал 1кбс с наименьшим приоритетом, но при этом дать ему borrow.
как вам задумка, господа гуру?
надо сразу брать лошадь за рога

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение zingel » 2008-08-22 23:00:35

зачем такой геморой? Всё делается просто - dummynet
Z301171463546 - можно пожертвовать мне денег

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

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение uHk » 2008-08-23 2:13:27

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

altq on $ext_if cbq bandwidth 1Mb queue { server, users }
queue users cbq(default)
queue server bandwidth 1% cbq(borrow)

pass in on $int_if from 192.168.1.1 to any queue users
pass out on $ext_if from self to any queue server
поправьте, если что-то не так. недавно начал изучение pf, самому интересно
Последний раз редактировалось zingel 2008-08-24 1:43:27, всего редактировалось 1 раз.
Причина: поправил, "если что не так" = нету [code][/code]
надо сразу брать лошадь за рога

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение harmless » 2008-08-24 1:41:44

Все гениальное просто!!!
Просто загони в очереди всех юзверей в ipfw с наибольшим приоритетом
а сервак в другую- с наименьшим!
Вот и все проблемы :-D

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение zingel » 2008-08-24 1:44:44

Да!!!Круто, гиниальна, шикарна!!!!
Потом у него кончатся сокеты и сервак упадёт!!! Да!!!

=)
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
LMik
капитан
Сообщения: 1852
Зарегистрирован: 2007-07-17 9:14:39
Откуда: МО
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение LMik » 2008-08-24 11:40:53

zingel писал(а):Да!!!Круто, гиниальна, шикарна!!!!
Потом у него кончатся сокеты и сервак упадёт!!! Да!!!

=)
o_O чо?
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение zingel » 2008-08-24 21:48:25

Просто загони в очереди всех юзверей в ipfw с наибольшим приоритетом
а сервак в другую- с наименьшим!
нельзя так делать, потому, что кончаться свободные цепочки
Z301171463546 - можно пожертвовать мне денег

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

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение uHk » 2008-08-25 7:07:39

в altq тоже такое может произойти?
надо сразу брать лошадь за рога

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение zingel » 2008-08-25 13:24:35

нет
Z301171463546 - можно пожертвовать мне денег

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

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение hizel » 2008-08-25 13:51:49

ээ какие проблемы, создаем трубу с bw аплинка
в ней создаем предположим три очереди с разными приоритетами
1. доступ к серваку - самое приоритетное
2. трафик клиентво - средний приоритет
3. трафк с сервака - низший приоритет
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

legoprog
ефрейтор
Сообщения: 51
Зарегистрирован: 2008-02-25 19:01:21
Откуда: Казахстан \ Шымкент
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение legoprog » 2008-10-03 14:47:14

hizel писал(а):ээ какие проблемы, создаем трубу с bw аплинка
в ней создаем предположим три очереди с разными приоритетами
1. доступ к серваку - самое приоритетное
2. трафик клиентво - средний приоритет
3. трафк с сервака - низший приоритет
Если можно тут по подробнее. Примерный скрипт или что почитать. ;-)

legoprog
ефрейтор
Сообщения: 51
Зарегистрирован: 2008-02-25 19:01:21
Откуда: Казахстан \ Шымкент
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение legoprog » 2008-10-04 9:12:18

Вобщем капал вчера весь вечер эту тему. Вроде бы даже понял. Но вот проблема. Траф не режет :(

/etc/rc.conf

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

gateway_enable="YES"
firewall_enable="YES"
firewall_script="/usr/local/etc/rc.firewall"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic"
После долгих эксперементов. Просто взял тестовую машину и сервак.
Тестовая машина - 192.168.1.3
Сервак - 192.168.1.100

И написал такое правило :

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

[root@legoprog ~]# cat /usr/local/etc/rc.firewall 
#!/bin/sh                                         
ipfw='/sbin/ipfw -q'                              

mynet='192.168.1.0/24'
extip='10.8.0.34'     
intip='192.168.1.100' 

intface='vr0'
extface='tun0'




${ipfw} -f flush
${ipfw} -f pipe flush
${ipfw} -f queue flush
${ipfw} add divert natd all from ${mynet} to any via ${extface}
${ipfw} add divert natd all from any to ${extip} via ${extface}
${ipfw} add allow  all from any to any



${ipfw} pipe 1 config bw 1024Kbit/s
#${ipfw} queue 1 config pipe 1 weight 20 mask dst-ip 0x00000000
#${ipfw} queue 2 config pipe 1 weight 80 mask dst-ip 0x00000000
#${ipfw} add queue 1 ip from any to me
#${ipfw} add queue 1 ip from any to ${mynet}

${ipfw} queue  1 config pipe 1 weight 80 queue 20  mask dst-ip 0xffffffff
${ipfw} queue 11 config pipe 1 weight 80 queue 20  mask src-ip 0xffffffff

${ipfw} queue  2 config pipe 1 weight 20 queue 20 mask dst-ip 0xffffffff
${ipfw} queue 21 config pipe 1 weight 20 queue 20 mask src-ip 0xffffffff

${ipfw} add queue  1 ip from any to 192.168.1.3
${ipfw} add queue 11 ip from 192.168.1.3 to any

${ipfw} add queue  2 ip from any to any
${ipfw} add queue 21 ip from any to any


В итоге что мы имеем:

Ставлю на серваке закачку в 5 потоков - Жарит по полной.
НА тестовой машине ставлю закачку в 1 поток, нихрена, хотя должен по идее на тестовой жарить по полой, а серваку остатки отдавать...

И ещё момент:

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

ipfw pipe show
00001:   1.024 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
q00001: weight 80 pipe 1   20 sl. 0 queues (64 buckets) droptail
q00002: weight 20 pipe 1   20 sl. 0 queues (64 buckets) droptail
q00021: weight 20 pipe 1   20 sl. 0 queues (64 buckets) droptail
q00011: weight 80 pipe 1   20 sl. 0 queues (64 buckets) droptail

Вот такое вот мне показывает комманда ipfw pipe show, во время закачки с тестовой машины и с сервака,хотя на сколько я понимаю должно быть что-то ещё.


Ядро скомпилено с поддержкой Думми. Если бы небыло скомпилено, думаю ipfw правила бы и не принимал, или ошибку выдавал..

Вот такие вот дела. Как вы считаете, что я делаю не так ?

legoprog
ефрейтор
Сообщения: 51
Зарегистрирован: 2008-02-25 19:01:21
Откуда: Казахстан \ Шымкент
Контактная информация:

Re: FreeBSD. Управление трафиком.

Непрочитанное сообщение legoprog » 2008-10-04 9:16:55

Ссори. Затупил. ;-)

Надо было просто правила :

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

${ipfw} add divert natd all from ${mynet} to any via ${extface}
${ipfw} add divert natd all from any to ${extip} via ${extface}
${ipfw} add allow  all from any to any
Запихать в конец, по сколько у меня правила не пронумерованы ;-) Все равно примного благодарен ;-)