Перейти до

Ipfw в Freebsd не режет исходящий торрент траффик


Рекомендованные сообщения

Недавно заметил такую проблему. Достаточно включить 1 торрент в сети и он забирает почти весь канал на отдачу, хотя в правилах все прописано.

 

Вот правила:

#Users 128
${fwcmd} pipe 9 config mask dst-ip 0xffffffff bw 128Kbit/s
${fwcmd} pipe 10 config mask dst-ip 0xffffffff bw 128Kbit/s
${fwcmd} add 2800 pipe 9 ip from not "table(10)" to "table(5)" out
${fwcmd} add 2900 pipe 10 ip from "table(5)" to not "table(10)" in
#Users 512
${fwcmd} pipe 12 config mask dst-ip 0xffffffff bw 512Kbit/s
${fwcmd} add 3200 pipe 12 ip from not "table(10)" to "table(7)" out
${fwcmd} add 3300 pipe 10 ip from "table(7)" to not "table(10)" in

Table 7 - это IP компа, которому резать

${fwcmd} table 10 add ${ipi} // ipi - внутренний IP сервера
${fwcmd} table 10 add ${netv} // netv - на сервере стоит ВПН-сервер для подключения внешних клиентов. Это его сеть.

В ipfw show смотрю - траффик попадает в 10й пайп, но почему-то для торрента скорость не режется :(

 

Причем остальной траффик режется нормально. Закачки и СПИДТЕСТ показывают 512/128. В чем может быть загвоздка ???

 

Сервер довольно мощный, для оффиса в 40 человек. Загрузка интернета 5-10% (качают обычно 1-2 человека).

Core2Duo 1.86Ghz, 4Gb RAM, FreeBSD 7.1 amd64

Ссылка на сообщение
Поделиться на других сайтах
может стоит указать в правилах на каком интерфейсе резать? via ?

 

Так а остальной траффик - то режется нормально?

 

Сегодня попробую, но кажется врятли поможет.

Ссылка на сообщение
Поделиться на других сайтах

И ничего я думаю не получится ибо IPFW+Dumynet этого не умеет . Думаю IPTABLES вам поможет , только нет его на Фре .... И вообще на Фре работа с очередями реализована на примитивном уровне , HTB на линуксе намного интересней . Следует просто разобраться в принципе работы очередей , получается например если пользователь ограничен 1 Мбитом и начинает волочить большое файло - то оно на всех парах закачивается на внешнем интерфейсе , а пользователю на внутреннем нарезается на скор 1 Мбит - и ичего ты с этим не попишешь . Получается шейпер работает на внутреннем интерфейсе ..... А с торретом вообще проблемма получается - куча потоков , вот они и грабли ....Короче говоря переходим спокойненько на www.mikrotik.com www.pcrouter.ru и шейпим себе на здоровье и на радость другим .

Ссылка на сообщение
Поделиться на других сайтах
Получается шейпер работает на внутреннем интерфейсе ..... А с торретом вообще проблемма получается - куча потоков , вот они и грабли ....Короче говоря переходим спокойненько на www.mikrotik.com www.pcrouter.ru и шейпим себе на здоровье и на радость другим .

 

Покупать ради одного качальщика микротик - довольно не выгодно :)

 

У людей ведь как-то получается? Циски ж работают на модифицированной ФРЕ, и все у них режется.

Ссылка на сообщение
Поделиться на других сайтах

Во придумал ... покупать - возьми себе ломанную версию 2.9.6 L6 , валяется где не попадя , можешь и 3.2 - тоже кряки имеются , вернее генерилка инстал ИД . Ставь это чудо на брендовый простенький комп и пользуйся на здоровье , в отличии от циски - цена вопроса копеечная . Ну а ежели вы барин денег имеете немерено то можете купить L4 - до 200 сессий баксов так от 30 до 50 за лиц и L6 без огран сесий баксов так под 200 .

Ссылка на сообщение
Поделиться на других сайтах
Во придумал ... покупать - возьми себе ломанную версию 2.9.6 L6 , валяется где не попадя , можешь и 3.2 - тоже кряки имеются , вернее генерилка инстал ИД . Ставь это чудо на брендовый простенький комп и пользуйся на здоровье , в отличии от циски - цена вопроса копеечная . Ну а ежели вы барин денег имеете немерено то можете купить L4 - до 200 сессий баксов так от 30 до 50 за лиц и L6 без огран сесий баксов так под 200 .

 

Если бы на Микротик можно было поставить Asterisk (VOIP), Apache, MySQL, FTP, Samba, PPTP-сервер (для внешних подключений). То я наверно так-бы и сделал :)

 

А пока выбирать не из чего :)

 

Мне кажется тут дело не в том, что Торрент заваливает ipfw кучей открытых сессий. Я ставлю всего 10 сессий, и результат тот-же.

Видимо траффик у торрента немного хитрее, я просто не могу загнать его весь в пайп.

Ссылка на сообщение
Поделиться на других сайтах

А как тогда у меня например - pipe великолепно режет торренты, и именно на внутреннем ИФ, не укладывая при этом канал? Стоит Squid+NAT. FreeBSD 6.2, Apache, PHP:

OnConnect

#!/bin/sh

fwcmd="/sbin/ipfw"
ip=$2
login=$1
id=$4
cash=$3
trf=`grep 'Tariff=' /var/stargazer/users/$login/conf | cut -d '=' -f2`

${fwcmd} delete `expr $id '*' 10 + 29000`
${fwcmd} delete `expr $id '*' 10 + 29001`
${fwcmd} delete `expr $id '*' 10 + 29002`
${fwcmd} delete `expr $id '*' 10 + 29003`
${fwcmd} delete `expr $id '*' 10 + 29004`
${fwcmd} delete `expr $id '*' 10 + 29005`
${fwcmd} pipe delete `expr $id '*' 10 + 29001`
${fwcmd} pipe delete `expr $id '*' 10 + 29002`
${fwcmd} pipe delete `expr $id '*' 10 + 29003`
${fwcmd} pipe delete `expr $id '*' 10 + 29004`

if [ $trf = '128' ]
then
x${fwcmd} add `expr $id '*' 10 + 29000` allow icmp from $ip to any icmptype 0,3,4,11,12
${fwcmd} pipe `expr $id '*' 10 + 29001` config bw 144Kbit/s
${fwcmd} pipe `expr $id '*' 10 + 29002` config bw 144Kbit/s
${fwcmd} add `expr $id '*' 10 + 29003` pipe `expr $id '*' 10 + 29001` all from any to $ip
${fwcmd} add `expr $id '*' 10 + 29004` pipe `expr $id '*' 10 + 29002` all from $ip to any
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
exit 1
fi

if [ $trf = '256' ]
then
${fwcmd} add `expr $id '*' 10 + 29000` allow icmp from $ip to any icmptype 0,3,4,11,12
${fwcmd} pipe `expr $id '*' 10 + 29001` config bw 288Kbit/s
${fwcmd} pipe `expr $id '*' 10 + 29002` config bw 288Kbit/s
${fwcmd} add `expr $id '*' 10 + 29003` pipe `expr $id '*' 10 + 29001` all from any to $ip
${fwcmd} add `expr $id '*' 10 + 29004` pipe `expr $id '*' 10 + 29002` all from $ip to any
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
exit 1
fi

if [ $trf = '512' ]
then
${fwcmd} add `expr $id '*' 10 + 29000` allow icmp from $ip to any icmptype 0,3,4,11,12
${fwcmd} pipe `expr $id '*' 10 + 29001` config bw 540Kbit/s
${fwcmd} pipe `expr $id '*' 10 + 29002` config bw 288Kbit/s
${fwcmd} add `expr $id '*' 10 + 29003` pipe `expr $id '*' 10 + 29001` all from any to $ip
${fwcmd} add `expr $id '*' 10 + 29004` pipe `expr $id '*' 10 + 29002` all from $ip to any
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
exit 1
fi

 

OnDisconnect

#!/bin/sh
fwcmd="/sbin/ipfw"
ip=$2
login=$1
id=$4
cash=$3

${fwcmd} delete `expr $id '*' 10 + 29000`
${fwcmd} delete `expr $id '*' 10 + 29001`
${fwcmd} delete `expr $id '*' 10 + 29002`
${fwcmd} delete `expr $id '*' 10 + 29003`
${fwcmd} delete `expr $id '*' 10 + 29004`
${fwcmd} delete `expr $id '*' 10 + 29005`
${fwcmd} pipe delete `expr $id '*' 10 + 29001`
${fwcmd} pipe delete `expr $id '*' 10 + 29002`
${fwcmd} pipe delete `expr $id '*' 10 + 29003`
${fwcmd} pipe delete `expr $id '*' 10 + 29004`

echo "D `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log

Ссылка на сообщение
Поделиться на других сайтах

Дело все в том что ты не можешь управлять исходящим трафиком ..... А по поводу микротика так нечего парится и ППТП и ППоЕ сервера имеются на борту и на внешнем интерфейсе работает также , и еще куча всего имеется , читайте МАН ! А вот по поводу мускула , апача итд.итп - тут уже извиняйте - єто ведь NAS или как там еще назыв. РОУТЕР ! Нельзя же всех блох в одну коробку садить , потом с проблемами не разребешься !

Ссылка на сообщение
Поделиться на других сайтах

Да хотел добавить - не хотите микротик и хотите всетаки всех блох в одну коробку , так вам и инструмен в руки - ставьте линух , там IPTABLES and HTB имеется , можете туда доставить все че угодно , правда думаю настройка фаера и НТВ займет у вас уйму времени и с мониторингом жо... а на микротике єто все делается и наблюдается как с консоли так и с помощью виндовой утилиты Winbox , удаленно , удобно однако ....

Ссылка на сообщение
Поделиться на других сайтах

Может тут дело банальнее: не канал он забирает, а заваливает запросами? Чем величину трафика глядели для конкретной машины с торрентом?

Ссылка на сообщение
Поделиться на других сайтах
А как тогда у меня например - pipe великолепно режет торренты, и именно на внутреннем ИФ, не укладывая при этом канал? Стоит Squid+NAT. FreeBSD 6.2, Apache, PHP:

 

И на отдачу нормально режет? Потому что у меня с закачкой тоже проблем нет, а вот отдача - хромает.

 

Самое интересное, уже год стоит - не замечал такого. Может просто на торренте мало качал :)

Ссылка на сообщение
Поделиться на других сайтах

ДА . Кстати микротик умеет распознавать P2P траффик , даже в закладках фаера есть , прикольно имхо ...

Ссылка на сообщение
Поделиться на других сайтах
Может тут дело банальнее: не канал он забирает, а заваливает запросами? Чем величину трафика глядели для конкретной машины с торрентом?

 

В самом торренте показывает. У юзера стоит 512/128. А в торренте отдача 50-60 :) (P.S. 60 - это еще один пайп, действует на всю группу юзеров).

 

Т.е. первый пайп контроллирует траффик, а вот второй - сбоит.

 

Самое интересное, если у этого юзера в торренте растет Аплоад, то стремительно падает Даунлоад, чуть-ли не до 10К :)

 

Запросами врятли заваливает, ограничивал их в торренте до 50, потом до 10 - не меняет суть.

 

Может кусок файрвола побольше кинуть?

Ссылка на сообщение
Поделиться на других сайтах
ДА . Кстати микротик умеет распознавать P2P траффик , даже в закладках фаера есть , прикольно имхо ...

 

Я б с радостью. Но для Микротика нет отдельной машины. А с линуксом я почти не работал. Мне понадобится пару недель, чтоб поднять на нем тоже самое - столько времени у меня нет.

 

Тем более многие серьезные провайдеры работает с фрей, значит же есть решение :)

Ссылка на сообщение
Поделиться на других сайтах

Ну не знаю более флудить не могу извини , может тут более головастый найдется , пусть и отпишется , но для меня во Фре этот этап был успешно пройден и безрезультатно , ну пайпы эти и вообще проблемность этого чугунного IPFW уже миллион раз обсасывалась www.opennet.ru рулит - читайте . Фря - это железобетонная тачка для мускула , апача - самое оно , но в качестве роутера думаю это не то пальто .... Все познается в сравнении , купите себе циску , будете модным пацаном , на 7100 пару штуцеров приготовьте с хвостиком ...

Ссылка на сообщение
Поделиться на других сайтах
Самое интересное, если у этого юзера в торренте растет Аплоад, то стремительно падает Даунлоад

Я подозреваю, что вы сунули в один pipe входящий и исходящий трафик - он вам честно ваши 512Кбит/с и режет.

 

#Users 512
${fwcmd} pipe 12 config mask dst-ip 0xffffffff bw 512Kbit/s
${fwcmd} add 3200 pipe 12 ip from not "table(10)" to "table(7)" out
${fwcmd} add 3300 pipe 10 ip from "table(7)" to not "table(10)" in

 

Для юзера на 512 точно подхватывается правило pipe 10? Иначе трафик резаться будет только в одну сторону. Гляньте мои скрипты, может там вам понятнее будет.

Они под Stargazer написаны, но смысл понятен: первый скрипт включает юзера, второй полностью убирает правила, созданные первым скриптом, что приводит к отключению юзера.

Ссылка на сообщение
Поделиться на других сайтах
Я подозреваю, что вы сунули в один pipe входящий и исходящий трафик - он вам честно ваши 512Кбит/с и режет.

Для юзера на 512 точно подхватывается правило pipe 10? Иначе трафик резаться будет только в одну сторону. Гляньте мои скрипты, может там вам понятнее будет.

Они под Stargazer написаны, но смысл понятен: первый скрипт включает юзера, второй полностью убирает правила, созданные первым скриптом, что приводит к отключению юзера.

 

Не, у мну так-же как у вас. Тоже старгайзер. Только я не создаю пайп для каждого юзера, а просто засовую их в таблицы.

 

Да, для юзера точно подхватывается 10 пайп, его IP в 7й таблице.

${fwcmd} add 3300 pipe 10 ip from "table(7)" to not "table(10)" in

 

Даже спидтест показывает 512/128, и когда на рапиду льешь - 128Кбит. Именно с торрентом трабл.

Ссылка на сообщение
Поделиться на других сайтах

Слушай, получилось кое-что :)

 

Сделал для этого юзера отдельный пайп на аплоад и все заработало :)

 

Я походу понял в чем прикол !!!!

 

А он тут:

${fwcmd} pipe 10 config mask dst-ip 0xffffffff bw 128Kbit/s

 

это же отдача, походу надо использовать src-ip вместо dst-ip. У меня получалось что я создавал по пайпу на каждого внешнего клиента к которому обращаешься, а не на внутреннего :)

 

Вот и получалось, что Торрент поднимал кучу пайпов по 128Кбит/с и в сумме получалось 512 (что соответствовало первому пайпу).

 

Сейчас проверю.

Ссылка на сообщение
Поделиться на других сайтах
Ну не знаю более флудить не могу извини , может тут более головастый найдется , пусть и отпишется , но для меня во Фре этот этап был успешно пройден и безрезультатно , ну пайпы эти и вообще проблемность этого чугунного IPFW уже миллион раз обсасывалась www.opennet.ru рулит - читайте . Фря - это железобетонная тачка для мускула , апача - самое оно , но в качестве роутера думаю это не то пальто .... Все познается в сравнении , купите себе циску , будете модным пацаном , на 7100 пару штуцеров приготовьте с хвостиком ...

Афтар жжёт!

Ляпните такое на наг.ру, вас сразу же ниже плинтуса опустят :) . И есть за что! Фря - это, в отличие от Линукса, прежде всего именно железобетонный коммуникационный сервер, на котором помимо всего коммуникационного еще и хорошо пашет все остальное (упомянутые Вами апачь, мускул и т.п.). И всё, что во Фре касается коммуникаций, пашет на коре-левел, а не на юзер-левел как в Линуксе. Линукс - это просто хоть и хорошая, но попсовая опен-сорс альтернатива Виндовс. Фря взята за основу для МАС-OS X, ОС Juniper (слышали о таком? это типа циски, только местами покруче), и кое для чего в цисках.

Тот, у кого познаний хватило лишь на фразу "не то пальто" - просто видать ничего серъезного не строил. Правильно построенная Фря весьма успешно заменяет любую циску 72хх.

У нас на Фрях все построено - и НАСы (3 шт), и бордер (bgp), и сервисы (те самые мускулы/апачи/майлы/пр.). Все молотится и шейпется как положено. Шейперы на pptp-доступе ng_car, для толстых юрлиц на бордере шейпит ipfw+dummynet. Включайте моск и учитесь настраивать ipfw правильно - всё там работает, надо лишь иметь правильную прокладку между стулом и компом :) .

 

Следует просто разобраться в принципе работы очередей , получается например если пользователь ограничен 1 Мбитом и начинает волочить большое файло - то оно на всех парах закачивается на внешнем интерфейсе , а пользователю на внутреннем нарезается на скор 1 Мбит - и ичего ты с этим не попишешь . Получается шейпер работает на внутреннем интерфейсе .....

Пацталом! Перепутать dummynet с примитивщиной типа squid, это круто! И куда это "большое файло на всех парах" заливается из внешнего интерфейса? В свап-раздел винта может? Жестяк!!!

Шейпер работает на том интерфейсе, куда его вешают. Если Вы считаете, что лажает шейпер на входящем потоке, просто перевесьте его на тот интерфейс, где этот поток окажется исходящим, и будет Вам счастье.

Ссылка на сообщение
Поделиться на других сайтах
Афтар жжёт!

Ляпните такое на наг.ру, вас сразу же ниже плинтуса опустят :) . И есть за что! Фря - это, в отличие от Линукса, прежде всего именно железобетонный коммуникационный сервер, на котором помимо всего коммуникационного еще и хорошо пашет все остальное (упомянутые Вами апачь, мускул и т.п.). И всё, что во Фре касается коммуникаций, пашет на коре-левел, а не на юзер-левел как в Линуксе.

 

Согласен :) Фря рулит.

Просто сам знаю - что такое линуховый CBQ под хорошей нагрузкой :)

 

Пацталом! Перепутать dummynet с примитивщиной типа squid, это круто! И куда это "большое файло на всех парах" заливается из внешнего интерфейса? В свап-раздел винта может? Жестяк!!!

 

Автор частично в чем-то прав. В dummynet файло (на самом деле на файло, а все пакеты) льется на максимальной скорости в очереди (queue). Но очереди настолько малы, что составляют буквально несколько килобайт (а могут быть еще и меньше). Поэтому конечно их со Сквидом сравнивать нельзя, который файлы целиком в кэш засасывает.

 

Поэтому можно резать скорость на внутреннем, а на внешнем разница будет в максимум 0.5%-1% :)

 

P.S. Скорость отдачи на внешнем резать намного сложнее из-за NAT'а.

Ссылка на сообщение
Поделиться на других сайтах

Получается, что если у нас стоит NAT, а в правилах мы не указали интерфейс для PIPE - скорость будет резаться всё равно на внутреннем ИФ, потому что после НАТа (исходящий на внешний ИФ) и до него (входящий с внешнего ИФ) - указанных в PIPE внутренних адресов не существует?

И по поводу SQUID - я согласен, что скорость таки режется на внутреннем ИФ, но ежели SQUID получил запрос на доступ к Инет-страничке и ему попался большой файл, который он должен кешировать - как происходит заливка этого файла: она полностью контролируется SQUID или трафик льётся через наше правило PIPE (обмен данными вида: прислал пакет-получи подтверждение), прежде чем SQUID полностью зальёт в кеш этот файл или же он успеет скачать и кешировать файл самостоятельно, если внешний канал значительно превышает запрос через PIPE? Вы это хотели подчеркнуть?

Ссылка на сообщение
Поделиться на других сайтах
Получается, что если у нас стоит NAT, а в правилах мы не указали интерфейс для PIPE - скорость будет резаться всё равно на внутреннем ИФ, потому что после НАТа (исходящий на внешний ИФ) и до него (входящий с внешнего ИФ) - указанных в PIPE внутренних адресов не существует?

 

Если не указать интерфейс, он будет резать и на внешнем и на внутреннем (по крайней мере входящий точно). В итоге получится черти-что. Если не указывать интерфейс явно, нужно указать хотя-бы направление траффика: in или out. Тогда уже система сама будет знать на каком интерфейсе резать.

 

Почему-то входящий траффик можно резать на внешнем интерфейсе, даже если там НАТ :)

 

И по поводу SQUID - я согласен, что скорость таки режется на внутреннем ИФ, но ежели SQUID получил запрос на доступ к Инет-страничке и ему попался большой файл, который он должен кешировать - как происходит заливка этого файла: она полностью контролируется SQUID или трафик льётся через наше правило PIPE (обмен данными вида: прислал пакет-получи подтверждение), прежде чем SQUID полностью зальёт в кеш этот файл или же он успеет скачать и кешировать файл самостоятельно, если внешний канал значительно превышает запрос через PIPE? Вы это хотели подчеркнуть?

 

Если пайпы на внутреннем ИФ, то быстрей всего Сквид зальет файл в кэш на максимальной скорости :) Т.е. траффик до Сквида не попадет в пайпы.

Ссылка на сообщение
Поделиться на других сайтах
Если пайпы на внутреннем ИФ, то быстрей всего Сквид зальет файл в кэш на максимальной скорости :) Т.е. траффик до Сквида не попадет в пайпы.

Т.е. в какой-то момент юзер с пайпом 128Кбит - может занять, скажем, 5-ти мегабитный канал? О_о

А если в конце правил ставим IN и OUT? Интерфейсы не указываем.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...