Шейпер для процесса

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Шейпер для процесса

Непрочитанное сообщение void* » 2008-03-20 22:31:05

Всем привет.
Тихо-мирно крутилась 6.2 пока не решил обновить до 7.0, для повторения пройденного материала решил устанавливать и настраивать все с нуля. И в конце напоролся на следующие грабли. Сначала расскажу немного о топологии сети. Стоит mpd5 и конектится к прову, к нему же (mpd5) конектятся юзвери. Кроме того на сервере стоит mldonkey и жутко качает фильмы. Задача была следующей: затянуть mldonkey в общий шейпер с юзерами и дать его очереди минимальный приоритет чтобы с одной стороны он не зохавал всю полосу под себя, и чтоб качал без ограничений когда юзеры спят.
Тоесть нужны правила в ipfw "для процесса".
В шестерке это решалось следующим образом: осла я запускал под отдельным юзером и правила в ipfw делал для uid типа так:

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

ipfw add queue 10 all from me to any via ng0 out uid mlnet
ipfw add queue 11 all from any to me via ng0 in   uid mlnet
При этом приходилось в loader.conf ставить debug.mpsafenet=1 (или 0, не помню) чтобы избежать глухого зависона.
Но теперь в Фряхе 7.0 переменную debug.mpsafenet убрали, т.к. избавились от GIANT MUTEX, но глухой зависон при использовании uid/gid правил в ipfw остался!
Фильтровать по портам неохота, слишком уж их много. Засунуть в шейпер весь траф от сервака наружу (тот что не попал к юзерам в предыдущих правилах) - тоже както криво... Помогите советом. Может както сделать виртуальный интерфейс на который посадить mldonkey и продублировать в него траф, или как... Не силен я в этом.
Система:

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

gate# uname -a
FreeBSD gate.local 7.0-RELEASE FreeBSD 7.0-RELEASE #4: Wed Mar 19 00:53:23 EET 2008     root@gate.local:/usr/obj/usr/src/sys/VOIDKRNL  i386

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

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

Re: Шейпер для процесса

Непрочитанное сообщение hizel » 2008-03-20 23:38:01

гугел врет
Если речь идет действительно о большом трафе и сервер SMP, то:
sysctl debug.mpsafenet=0
Баг присутствует вплоть до 6.x
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: Шейпер для процесса

Непрочитанное сообщение void* » 2008-03-21 0:06:54

hizel писал(а):гугел врет
Если речь идет действительно о большом трафе и сервер SMP, то:
sysctl debug.mpsafenet=0
Баг присутствует вплоть до 6.x
гугел действительно врет

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

gate# sysctl -da | grep mpsafe
debug.mpsafevfs: MPSAFE VFS
gate#
в семерке этой переменной действительно нету. а kernel dead-lock от шестерки осталсооо :( это проверено многократно - с правилами фаера по uid/gid фряха работает максимум час, потом глухой зависон. реагирует только на кнопку выключения питания :)))
ничего в голову не приходит. как можно фаерволить процесс, если по uid/gid нельзя? в голову приходит только одно - както создать виртуальный интерфейс и посадить качалку на него, а потом фаерволить уже по интерфейсу. но как такое забабахать?..
вот если б както на шлюзе подключится к его же ВПН серверу чтобы создался еще один нетграф интерфейс, и на него уже посадить осла... тогда он будет иметь свой интерфейс, правда будет за НАТ-ом, но в принципе можна пробросить порты... попахиваэт садомазохизмом :)
помогите плс, моск уже закипает :(

void*
ефрейтор
Сообщения: 52
Зарегистрирован: 2008-01-03 13:25:13
Контактная информация:

Re: Шейпер для процесса

Непрочитанное сообщение void* » 2008-03-21 3:33:12

Вобщем кому интересно, может пригодится. Все работает на ура, заодно с netgraph немного разобрался. Получилось вот таким макаром:

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

# создаем виртуальный ethernet интерфейс ngeth0
ngctl mkpeer eiface ether ether
# настраиваем....
ifconfig ngeth0 10.0.0.254 netmask 255.255.255.255
# в настройках mldonkey приказываем ему слушать на 10.0.0.254
# настраиваем NAT на наш свежеиспеченный интерфейсик
# с пробросом портов емуля и битторента на внутренний адрес:
# п.с.: на 10.0.0.х сидят юзвери, а на виртуальном интерфейсе 10.0.0.254 сидит наш mldonkey

# в table(1) не только подсеть 10.0.0.0/24, остальное просто вырезал
ipfw table 1 add 10.0.0.0/24

# конфиг ядерного NAT для FreeBSD 7.0
ipfw nat 100 config if ng0 reset unreg_only \
  redirect_port tcp 10.0.0.254:6882 6882 \
  redirect_port tcp 10.0.0.254:6881 6881 \
  redirect_port tcp 10.0.0.254:4223 4223 \
  redirect_port udp 10.0.0.254:4227 4227

# заганяем в него трафик
ipfw add 2000 nat 100 all from table(1) to any via ng0 out
ipfw add 2010 nat 100 all from any to me via ng0 in
Вот теперь mldonkey легко затягивается в шейпер по своему IP адресу 10.0.0.254 и для полного блеска порты протоколов выброшены наружу!
п.с. Фряха я тебя люблю!

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

Re: Шейпер для процесса

Непрочитанное сообщение hizel » 2008-03-21 9:16:45

вах вах
/me взял на заметку
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
NoResponse
мл. сержант
Сообщения: 76
Зарегистрирован: 2007-07-30 1:39:02
Контактная информация:

Re: Шейпер для процесса

Непрочитанное сообщение NoResponse » 2008-03-21 20:07:13

угу, познавательно
Я сам по себе скопище энтропии. А по законам термодинамики, если не принимать никаких действий энтропия стремится к бесконечности. Похоже, так оно и есть.

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: Шейпер для процесса

Непрочитанное сообщение freeman » 2008-05-12 15:55:31

NoResponse писал(а):угу, познавательно
Угу, тоже познавательно. Лишний раз убедился что не зря выбрал PF вместо IPWF и не знал даже что от правил фаера с uid/gid могут быть проблемы (активно их юзаю) :D
Остатся должен только один ...