Столкнулся со следующей проблемой:
FreeBSD 6.2
в /etc/rc.local стоит команда:
su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но не больше сутки. В случайный момент времени фря наглухо виснет, да так, что в локальной консоли не даже символы не набираются. Не знаю что с этим поделать...Буду осень признателен за совет.
>Столкнулся со следующей проблемой:
>FreeBSD 6.2
>в /etc/rc.local стоит команда:
>su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
>т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но
>не больше сутки. В случайный момент времени фря наглухо виснет, да
>так, что в локальной консоли не даже символы не набираются. Не
>знаю что с этим поделать...
>
>Буду осень признателен за совет.Выкинуть mlnet - очень тормознутая и криво написанная штука.
>[оверквотинг удален]
>>в /etc/rc.local стоит команда:
>>su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
>>т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но
>>не больше сутки. В случайный момент времени фря наглухо виснет, да
>>так, что в локальной консоли не даже символы не набираются. Не
>>знаю что с этим поделать...
>>
>>Буду осень признателен за совет.
>
>Выкинуть mlnet - очень тормознутая и криво написанная штука.К тому же человек даже не знает, что установленный из портов mlnet кладёт старт-стоповый скрипт в /usr/local/etc/rc.d.
>[оверквотинг удален]
>>>не больше сутки. В случайный момент времени фря наглухо виснет, да
>>>так, что в локальной консоли не даже символы не набираются. Не
>>>знаю что с этим поделать...
>>>
>>>Буду осень признателен за совет.
>>
>>Выкинуть mlnet - очень тормознутая и криво написанная штука.
>
>К тому же человек даже не знает, что установленный из портов mlnet
>кладёт старт-стоповый скрипт в /usr/local/etc/rc.d.Кроме mlnet не встречал более-менее удобной проги с хорошим гуи под винду... Может плохо искал, подскажите плс.
Как выяснилось проблема не в su.
Проблема с ipfw.
Зачем все это нужно. Чтобы засунуть трафик mlnet в общий с юзерами шейпер и дать ему минимальный приоритет. mlnet установлен не из портов и вне шейпера работает нормально неделями без перезагрузок и т.п. (дольше не пробовал)О запуске из rc.d я прекрасно знаю, но
1) нет прозрачной возможности определения порядка загрузки
2) все что докручено не из портов я просто идеологически собрал в rc.localЕсли нет правил с шейпенгом - все ОК.
Стоит net.inet.ip.fw.one_pass=0
Список правил фаера:-f pipe flush
-f queue flush
-f flush# ipfw rules
add deny all from 10.0.20.0/24 to any via tun0
add deny all from any to 10.0.20.0/24 via tun0# nat
#add divert natd all from 10.0.20.0/24 to not 10.0.20.0/24 out xmit tun0
#add divert natd all from not 10.0.20.0/24 to any in recv tun0
add divert natd all from any to any via tun0# pipes
pipe 1 config bw 256Kbit/s queue 5
pipe 2 config bw 256Kbit/s queue 5# mlnet
queue 1 config pipe 1 weight 10 queue 100 gred 0.002000/3/50/0.1000
queue 2 config pipe 2 weight 10 queue 100 gred 0.002000/3/50/0.1000
add queue 1 all from any to any via tun0 uid mlnet in
add queue 2 all from any to any via tun0 uid mlnet outqueue 3 config pipe 1 weight 90 queue 100 gred 0.002000/3/50/0.1000
queue 4 config pipe 2 weight 90 queue 100 gred 0.002000/3/50/0.1000
add queue 3 all from any to any via ng0 in
add queue 4 all from any to any via ng0 out.... и так далее для всех юзеров ....
Возможно трабл в том, что правила для ng0, ng1 и остальных прописаны статически а эти интекфейсы не всегда существуют... Но шейпер работает...
Ну спасибо и на єтом.
Проблема біла с debug.mpsafenet
>Столкнулся со следующей проблемой:
>FreeBSD 6.2
>в /etc/rc.local стоит команда:
>su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
>т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но
>не больше сутки. В случайный момент времени фря наглухо виснет, да
>так, что в локальной консоли не даже символы не набираются. Не
>знаю что с этим поделать...
>
>Буду осень признателен за совет.Проблема не в mlnet'e и даже не совсем в ipfw.
Проблема в использовании в правилах firewall'a uid/gid пользователей. Из-за особенностей реализации кода, выполняющего проверку uid/gid возможна замыкание (deadlock) процессов в ядре что и приводит к глухому зависанию компьютера - при чем нет ни kernel panic ни иных сообщений.
Эта проблема присуща не только ipfw но и pf и ipf.В большинстве случаев проблема решается установкой переменной debug.mpsafenet=0, которая по сути отключает многопоточность для сетевого стека.
Другим решением проблемы является патч для firewall'a, который принудительно включает проверку uid/gid для каждого пакета - для каждого firewall'a патч индивидуален.
Третий вариант это отказаться от правил, использующих uid/gid lookup - хотя иной раз они делают конфигурации firewall'ов очень элегантными.больше можно узнать в google например по ipfw uid deadlock