Биллинговая система Nodeny

Главная категория => Nodeny 49 => Тема начата: AlexKr от 04 Февраля 2011, 10:23:38



Название: Ограничение торрентов
Отправлено: AlexKr от 04 Февраля 2011, 10:23:38
Добрый день, Господа. Ай нид хелп.

У меня ооочень мало опыта по работе с ОС FreeBSD, хотя фрю и нодени установил и настроил сам с помощью мануалов и данного форума.

Такая вот ситуация:
У нас небольшая сеть (мы не провайдер, чисто по общежитию). Наружу канал АДСЛ. Исходящая скорость max 512 кБит/сек.
Торрентокачатели забивают эту трубу на исход по максимуму, и соответственно интернет начинает тормозить у всех (хотя входящей скорости достаточно, 5-6 мБит). Ограничение скорости на отдачу не спасает, когда ограничиваешь её в разумных пределах.

Запретить торренты можно конечно (например запретом скачивания файлов .torrent), но этого делать не нужно  :) .
Есть такая мысль, ограничить количество одновременных потоков как на вход так и на исход (хотябы только исход).
Торрент использует одновременно кучу портов (при закачке) и один порт на отдачу (поправьте если я ошибаюсь).

Вобщем суть вопроса, как можно создать такое правило:
- порты 80, 53 не трогаем
- все порты кроме 80, 53 - max 10 потоков (на всю кучу портов)

Я думаю, что не нужно ограничивать 80 и 53 (возможно в этот список ещё нужно будет добавить какие-либо порты) по причине если юзер забьёт лимит потоков торрентами, то чтобы у него работал http и DNS.


Название: Re: Ограничение торрентов
Отправлено: Aivanzipper от 04 Февраля 2011, 12:45:09
ну раз Вы взялись работать с freebsd и nodeny то Вам придется вникнуть в принципы работы. Почитайте документацию по ipfw.


Название: Re: Ограничение торрентов
Отправлено: AlexKr от 08 Февраля 2011, 00:51:13
ну раз Вы взялись работать с freebsd и nodeny то Вам придется вникнуть в принципы работы. Почитайте документацию по ipfw.
тут я с Вами полностью согласен, поскольку тут не обойтись методом проб и ошибок - решил обратиться к опытным людям, ибо боюсь ковырять рабочий сервер.


Название: Re: Ограничение торрентов
Отправлено: Aivanzipper от 08 Февраля 2011, 09:41:08
Что-то типа такого, перед трубой:

Код:
ipfw add 1234 allow ip from <int_net> to not me via <int_if> not dst-port 53,80 limit src-addr 10

Но в этом случае для каждого порта будет отдельных 10 потоков. Я бы посоветовал создать отдельный пайп для привилегированных портов с гарантированной резервацией, а все остальное во второй пайп. Правда хочу заметить что онлайн игры тоже попадут в одну трубу с торрентами если их явно не выделить по портам как в случае 53 и 80. Еще можно покапать в сторону QoS. И поднимите свой кеширующий днс ;)


Название: Re: Ограничение торрентов
Отправлено: AlexKr от 06 Июня 2011, 18:59:34
В общем не получилось у меня то, что нужно.

Топик ап! Парни, кто поможет на платной основе?
Может кто разработает как дополнительный платный модуль? Думаю, не одному мне понадобится.


Название: Re: Ограничение торрентов
Отправлено: dzensys от 22 Июля 2011, 02:27:51
ee /etc/all.pf
Код:
192.168.254.22/32
ee pf.conf
Код:
set limit staеtes 128000
set optimization aggressive
table <all_ips> persist file "/etc/all.pf"
pass in quick from <all_ips> to any keep state (source-track rule, max-src-states 1000)
Действие: Ограничение сессий количеством 1000 для адреса источника 192.168.254.22


Название: Re: Ограничение торрентов
Отправлено: kuhar от 04 Января 2012, 13:10:46
никто не пробовал ограничить торрент таким макаром?
http://www.opennet.ru/base/net/ng_bpf_build.txt.html


Название: Re: Ограничение торрентов
Отправлено: Efendy от 18 Января 2012, 11:46:55
Для себя я сделал так:

table <me> { self }
table <users_bad> { 10.0.0.0/16 }

нат

pass quick on lo0 all

pass in quick on { $int_if ng } proto { tcp udp } from any to <me> keep state
pass in quick proto tcp from any to <me> port { 22 80 443 } keep state

тут мои специфические правила

pass in quick on { $int_if ng } proto tcp from <users_bad> to any port 80 keep state (source-track rule, max-src-states 200)
pass in quick on { $int_if ng } proto { tcp udp } from <users_bad> to any keep state (source-track rule, max-src-states 100)

По 80му порту даю больше потоков, чтобы при использовании торрента, абонент мог лазить по сайтам. По идее для онлайн игр можно дать больше потоков, однако это оказалось излишним т.к клиенты стали замечать, что если вырубить торрент, то вау, все начинает летать


Название: Re: Ограничение торрентов
Отправлено: stix от 18 Января 2012, 11:57:24
как pf справляется с большой нагрузкой?


Название: Re: Ограничение торрентов
Отправлено: Efendy от 18 Января 2012, 12:32:35
как pf справляется с большой нагрузкой?
По top-у это pfpurge? Если да, то далеко не в первых рядах. У меня сеть недостаточно большая чтоб на этом были проблемы.


Название: Re: Ограничение торрентов
Отправлено: stix от 18 Января 2012, 13:06:20
как pf справляется с большой нагрузкой?
По top-у это pfpurge? Если да, то далеко не в первых рядах. У меня сеть недостаточно большая чтоб на этом были проблемы.
у меня emX по 100% нагрузка валит, распараллелил на второй роутер.
затем с 19:00 до 23 шейплю весь роутер доступа + рубаю порты TCP/UDP (src 10000-65000 <> dst 10000-65000)
юзеров в 5 раз больше, чем суммарная ширина канала :)


Название: Re: Ограничение торрентов
Отправлено: kuhar от 08 Февраля 2012, 10:00:12
Для себя я сделал так:

table <me> { self }
table <users_bad> { 10.0.0.0/16 }

нат

pass quick on lo0 all

pass in quick on { $int_if ng } proto { tcp udp } from any to <me> keep state
pass in quick proto tcp from any to <me> port { 22 80 443 } keep state

тут мои специфические правила

pass in quick on { $int_if ng } proto tcp from <users_bad> to any port 80 keep state (source-track rule, max-src-states 200)
pass in quick on { $int_if ng } proto { tcp udp } from <users_bad> to any keep state (source-track rule, max-src-states 100)

По 80му порту даю больше потоков, чтобы при использовании торрента, абонент мог лазить по сайтам. По идее для онлайн игр можно дать больше потоков, однако это оказалось излишним т.к клиенты стали замечать, что если вырубить торрент, то вау, все начинает летать

Вопрос а 200 потоков хватит для просмотра онлайн видео?
Ваши клиенты не жаловались?


Название: Re: Ограничение торрентов
Отправлено: Efendy от 08 Февраля 2012, 11:35:33
а оно в несколько потоков смотрится? Не знаю, не жаловались. В любом случае, все ограничения нужно самому проверять, запустить скайп, даунлоуд менеджер, запустить музло во вконтакте, видео и параллельно посерфить. Будет время я и сам протещу это


Название: Re: Ограничение торрентов
Отправлено: stix от 08 Февраля 2012, 16:04:56
с pf у меня как-то не судьба.
как насчет
ipfw add 90 deny udp from any 2000-65535 to "table(1)" 2000-65535 limit src-addr 100 ?


Название: Re: Ограничение торрентов
Отправлено: kuhar от 09 Февраля 2012, 08:26:30
а оно в несколько потоков смотрится? Не знаю, не жаловались. В любом случае, все ограничения нужно самому проверять, запустить скайп, даунлоуд менеджер, запустить музло во вконтакте, видео и параллельно посерфить. Будет время я и сам протещу это

Просто как-то пробовал в настройках групп в админке поставить количество потоков до 200, и как только клиент начинает смотреть онлайн фильм, биллинг его сразу отрубает, вот и пришлось увеличить.


Название: Re: Ограничение торрентов
Отправлено: Efendy от 09 Февраля 2012, 12:48:09
а оно в несколько потоков смотрится? Не знаю, не жаловались. В любом случае, все ограничения нужно самому проверять, запустить скайп, даунлоуд менеджер, запустить музло во вконтакте, видео и параллельно посерфить. Будет время я и сам протещу это

Просто как-то пробовал в настройках групп в админке поставить количество потоков до 200, и как только клиент начинает смотреть онлайн фильм, биллинг его сразу отрубает, вот и пришлось увеличить.
это совершенно иное! в pf настраивается количество одновременных потоков. А в админке настраивается общий лимит за весть период среза трафика. 200 потоков это катастрофически мало. Несколько тысяч надо ставить.


Название: Re: Ограничение торрентов
Отправлено: kuhar от 09 Февраля 2012, 16:19:03
а оно в несколько потоков смотрится? Не знаю, не жаловались. В любом случае, все ограничения нужно самому проверять, запустить скайп, даунлоуд менеджер, запустить музло во вконтакте, видео и параллельно посерфить. Будет время я и сам протещу это

Просто как-то пробовал в настройках групп в админке поставить количество потоков до 200, и как только клиент начинает смотреть онлайн фильм, биллинг его сразу отрубает, вот и пришлось увеличить.
это совершенно иное! в pf настраивается количество одновременных потоков. А в админке настраивается общий лимит за весть период среза трафика. 200 потоков это катастрофически мало. Несколько тысяч надо ставить.

Ага, я понял, спасибо.
А можете подсказать, как проверить срабатывает ли это ограничение потоков установленное через pf?


Название: Re: Ограничение торрентов
Отправлено: Efendy от 09 Февраля 2012, 17:55:05
а оно в несколько потоков смотрится? Не знаю, не жаловались. В любом случае, все ограничения нужно самому проверять, запустить скайп, даунлоуд менеджер, запустить музло во вконтакте, видео и параллельно посерфить. Будет время я и сам протещу это

Просто как-то пробовал в настройках групп в админке поставить количество потоков до 200, и как только клиент начинает смотреть онлайн фильм, биллинг его сразу отрубает, вот и пришлось увеличить.
это совершенно иное! в pf настраивается количество одновременных потоков. А в админке настраивается общий лимит за весть период среза трафика. 200 потоков это катастрофически мало. Несколько тысяч надо ставить.

Ага, я понял, спасибо.
А можете подсказать, как проверить срабатывает ли это ограничение потоков установленное через pf?
в онлайне по trafshow, по итогу - смотри детальную статистику за срез


Название: Re: Ограничение торрентов
Отправлено: Sis от 08 Июня 2012, 23:54:26
Код:
set limit states 128000
set optimization aggressive
nat pass on sk0 from 10.0.0.0/8 to any -> sk0
nat pass on sk0 from 192.168.0.0/16 to any -> sk0
table <me> { self }
table <users_bad> { 10.0.0.0/8 }
pass quick on lo0 all

pass in quick on { $int_if ng } proto { tcp udp } from any to <me> keep state
pass in quick proto tcp from any to <me> port { 22 80 443 } keep state
pass in quick on { $int_if ng } proto tcp from <users_bad> to any port 80 keep state (source-track rule, max-src-states 200)
pass in quick on { $int_if ng } proto { tcp udp } from <users_bad> to any keep state (source-track rule, max-src-states 100)
Вот создал такие правила по образу и подобию предложенного Efendy варианта. Внес их в pf.conf
но что-то не работает, где я ошибся?





Название: Re: Ограничение торрентов
Отправлено: smallcms от 09 Июня 2012, 01:15:01
Вот создал такие правила по образу и подобию предложенного Efendy варианта. Внес их в pf.conf
но что-то не работает, где я ошибся?
$int_if у вас определён в конфиге? ng?
вместо $int_if ng пишите свой интерфейс или определите его переменной.


Название: Re: Ограничение торрентов
Отправлено: Sis от 09 Июня 2012, 11:16:13

[/quote]
$int_if у вас определён в конфиге? ng?
вместо $int_if ng пишите свой интерфейс или определите его переменной.
[/quote]
Да определил указал адрес внутреннего интерфейса.
а теперь как проверить что он работает?



Название: Re: Ограничение торрентов
Отправлено: Sis от 12 Июня 2012, 02:30:52
Работает...спасибо


Название: Re: Ограничение торрентов
Отправлено: k291 от 29 Июля 2014, 22:13:57
а как ограничить торренты на реальных IP, которые проброшены с внешнего на внутренний интерфейс путем bridge ?
Я заметил, что и трафик с реальных IP не считается((
Цитировать
ifconfig_igb0="inet 10.0.0.1 netmask 0xffffff00"
ifconfig_igb1="inet 217.1.1.242 netmask 255.255.255.240"      # real IP
defaultrouter="217.1.1.241"
fconfig_lo0_alias0="inet 1.1.1.1 netmask 255.255.255.255"
#Dlya probrosa real-IP v set
cloned_interfaces="bridge0"
ifconfig_bridge0="addm igb1 addm igb0 up"
В итоге, абоненты с реальными IP отдаю трафика под 90Мбит


Название: Re: Ограничение торрентов
Отправлено: k291 от 29 Июля 2014, 23:07:04
а как ограничить торренты на реальных IP, которые проброшены с внешнего на внутренний интерфейс путем bridge ?
Я заметил, что и трафик с реальных IP не считается((
Цитировать
ifconfig_igb0="inet 10.0.0.1 netmask 0xffffff00"
ifconfig_igb1="inet 217.1.1.242 netmask 255.255.255.240"      # real IP
defaultrouter="217.1.1.241"
fconfig_lo0_alias0="inet 1.1.1.1 netmask 255.255.255.255"
#Dlya probrosa real-IP v set
cloned_interfaces="bridge0"
ifconfig_bridge0="addm igb1 addm igb0 up"
В итоге, абоненты с реальными IP отдаю трафика под 90Мбит
Сделал так, смотрю трафик через Nload:
Цитировать
#Mir
ext_if = "igb1"
#Lan
lan_if2 = "igb0"
#Most
bri_if = "brodge0"

set limit states 128000
set optimization aggressive

nat pass on $ext_if from 10.0.0.0/24 to any -> ($ext_if)
#nat pass on $lan_if2 from 10.77.0.0/24 to any -> ($lan_if2)
#nat pass on $ext_if from 217.66.99.240/28 to any -> ($ext_if)

table <me> { self }
table <users_bad> { 10.0.0.0/24 }
pass quick on lo0 all

pass in quick on { $lan_if2 ng } proto { tcp udp } from any to <me> keep state
pass in quick proto tcp from any to <me> port { 22 80 443 } keep state
pass in quick on { $lan_if2 ng } proto tcp from <users_bad> to any port 80 keep state (source-track rule, max-src-states 200)
pass in quick on { $lan_if2 ng } proto { tcp udp } from <users_bad> to any keep state (source-track rule, max-src-states 100)

pass in quick on { $bri_if ng } proto tcp from <users_bad> to any port 80 keep state (source-track rule, max-src-states 200)
pass in quick on { $bri_if ng } proto { tcp udp } from <users_bad> to any keep state (source-track rule, max-src-states 100)

#IPTV igmp
pass on $ext_if inet proto igmp to any allow-opts
pass in on $ext_if inet proto udp to any port {4001, 7788}
pass on $lan_if2 inet proto igmp to any allow-opts
pass in on $lan_if2 proto udp to any port {4001, 7788}
Может есть, что дополнить?


Название: Re: Ограничение торрентов
Отправлено: k291 от 29 Июля 2014, 23:07:29
а как ограничить торренты на реальных IP, которые проброшены с внешнего на внутренний интерфейс путем bridge ?
Я заметил, что и трафик с реальных IP не считается((
Цитировать
ifconfig_igb0="inet 10.0.0.1 netmask 0xffffff00"
ifconfig_igb1="inet 217.1.1.242 netmask 255.255.255.240"      # real IP
defaultrouter="217.1.1.241"
fconfig_lo0_alias0="inet 1.1.1.1 netmask 255.255.255.255"
#Dlya probrosa real-IP v set
cloned_interfaces="bridge0"
ifconfig_bridge0="addm igb1 addm igb0 up"
В итоге, абоненты с реальными IP отдаю трафика под 90Мбит
Сделал так, смотрю трафик через Nload:
Цитировать
#Mir
ext_if = "igb1"
#Lan
lan_if2 = "igb0"
#Most
bri_if = "bridge0"

set limit states 128000
set optimization aggressive

nat pass on $ext_if from 10.0.0.0/24 to any -> ($ext_if)
#nat pass on $lan_if2 from 10.77.0.0/24 to any -> ($lan_if2)
#nat pass on $ext_if from 217.66.99.240/28 to any -> ($ext_if)

table <me> { self }
table <users_bad> { 10.0.0.0/24 }
pass quick on lo0 all

pass in quick on { $lan_if2 ng } proto { tcp udp } from any to <me> keep state
pass in quick proto tcp from any to <me> port { 22 80 443 } keep state
pass in quick on { $lan_if2 ng } proto tcp from <users_bad> to any port 80 keep state (source-track rule, max-src-states 200)
pass in quick on { $lan_if2 ng } proto { tcp udp } from <users_bad> to any keep state (source-track rule, max-src-states 100)

pass in quick on { $bri_if ng } proto tcp from <users_bad> to any port 80 keep state (source-track rule, max-src-states 200)
pass in quick on { $bri_if ng } proto { tcp udp } from <users_bad> to any keep state (source-track rule, max-src-states 100)

#IPTV igmp
pass on $ext_if inet proto igmp to any allow-opts
pass in on $ext_if inet proto udp to any port {4001, 7788}
pass on $lan_if2 inet proto igmp to any allow-opts
pass in on $lan_if2 proto udp to any port {4001, 7788}
Может есть, что дополнить?