LINUX.ORG.RU

Сообщения inox

 

Правильная настройка шейпинга через tc

Доброго времени суток! Пытаюсь настроить шейпинг через tc на роутере с padavan-прошивкой (Xiaomi 3G). Суть в том, чтобы трафик с некоторых определенных устройств в сети (если он есть) был с наивысшим приоритетом и любой другой трафик подстраивался под эти устройства. В целом - почти ничего сложного и получился следующий скрипт:

#!/bin/sh
[ -z "$(lsmod | grep imq)" ] && modprobe imq
WAN=br0
BW=98mbit
tc qdisc del root dev $WAN || true
tc qdisc add dev $WAN root handle 1: htb r2q 1250 default 90
tc class add dev $WAN parent 1: classid 1:1 htb rate $BW
# tv+radio
tc class add dev $WAN parent 1:1 classid 1:10 htb rate 49mbit ceil $BW prio 1
tc filter add dev $WAN protocol ip parent 1: u32 match ip dst 10.9.12.85 flowid 1:10
tc filter add dev $WAN protocol ip parent 1: u32 match ip dst 10.9.12.101 flowid 1:10
tc filter add dev $WAN protocol ip parent 1: u32 match ip dst 10.9.12.23 flowid 1:10
tc filter add dev $WAN protocol ip parent 1: u32 match ip dst 10.9.12.44 flowid 1:10
tc qdisc add dev $WAN parent 1:10 handle 20: sfq perturb 10
# other
tc class add dev $WAN parent 1:1 classid 1:90 htb rate 49mbit ceil $BW prio 2
tc qdisc add dev $WAN parent 1:90 handle 99: sfq perturb 10
И все отлично работает, если запустить при просмотре iptv (идет по юникасту) обычную закачку по http с левой машины. НО если запустить торрент - поток на ТВ умирает и даже после остановки закачки этого торрента не подымается сам, нужно делать принудительный рестарт. Вопрос собственно в том, что еще нужно дописать в правилах шейпинга чтобы торренты таки «уважали» устройства в секции tv+radio? PS: торрент-клиент ограничен 50 соединениями, что не так уж и много.

 , , ,

inox
()

FreeBSD ppp высокая нагрузка на CPU

Доброго времени суток! Имеется домашний роутер/сервак на базе FreeBSD 7.4. Выход в сеть через PPPoE. Сразу приведу конфиг ppp.conf:

####
icn:
 set device PPPoE:rl0
 set mtu max 1492
 set mru max 1492
 disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
 deny pred1 deflate deflate24 protocomp acfcomp shortseq vj
 enable dns
 set reconnect 15 1000
 set ctsrts off
 set redial 0 1000
 set authname *****
 set authkey ****
 set dial
 set login
 add default HISADDR
трабла в том, что при скорости закачки порядка 5.5-6 мб/с загрузка проца процессом ppp становится около 30%, а если подымается до 9-9.6 мб/с (почемуто больше не может выжать), то загруз проца и вовсе до 45-50% подымается. До этого стоял дебиан - таких граблей небыло, да и скорость подымалась там до 11.5 максимум, и при этом загруз проца был около 5-6%. Машина не слабая - Athlon X2 250 3 ghz, 2 gb RAM. ЧЯДНТ?

inox
()

TP-Link TL-WN781ND низкий txpower

Доброго времени суток всем!

В общем поставил в домашний роутер данную вифи карточку. В режиме ТД под hostapd завелась, да вот txpower в 15 dBm вообще не радует. Изза этого даже находясь в одной комнате с антенной (а она кстати внешняя тоже тплинковская) процентаж сигнала составляет 88 (до этого стоял длинк dwl-g550 и с ним сигнал был 100% по всей комнате). Существуют ли способы насильно поднять txpower? iwconfig не предлагать - сразу ругается благим матом на попытку увеличить txpower до хотя бы предыдущих 20 дбм (iwconfig wlan0 txpower 20).

Error for wireless request "Set Tx Power" (8B26) :
    SET failed on device wlan0 ; Invalid argument.
# lspci -k
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
        Subsystem: Atheros Communications Inc. Device 30a1
        Kernel driver in use: ath9k
с трудом удалось вырубить power management, но особого прироста сигнала не дало. Если нужно выложить какието конфиги - говорите. Дрова вайфая собраны из bleeding edge, ось Debian squeeze 64bit, ядро 2.6.32 стандартное.

inox
()

Преобразовать javascript-код в php

Доброго времени суток всем! Может вопрос немного и туповат, но все же помогите пожалуйста разобраться с преобразованием функции яваскрипта в эквивалентную php-функцию. Вот собственно javascript:

function tvprog_encode(str) {
    var s = '', k;
    for (var i = 0; i < str.length; i++) {
        k = str.charCodeAt(i) + tvprog_user;
        while (k > 255) k -= 255;
        s += String.fromCharCode(k);
    }
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var out = "", c1, c2, c3, e1, e2, e3, e4;
    for (var i = 0; i < s.length; ) {
       c1 = s.charCodeAt(i++); c2 = s.charCodeAt(i++); c3 = s.charCodeAt(i++);
       e1 = c1 >> 2; e2 = ((c1 & 3) << 4) + (c2 >> 4); e3 = ((c2 & 15) << 2) + (c3 >> 6);
       e4 = c3 & 63;
       if (isNaN(c2))
         e3 = e4 = 64;
       else if (isNaN(c3))
         e4 = 64;
       out += tab.charAt(e1) + tab.charAt(e2) + tab.charAt(e3) + tab.charAt(e4);
    }
    return out;
}
Вот то, что мне удалось преобразовать:
function encode_str($str, $tvuser)
{
	$s = '';
	for($i=0; $i<strlen($str); $i++)
	{
		$k = ord($str{$i}) + $tvuser;
		while($k > 255) $k -= 255;
		$s .= chr($k);
	}
	$tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	$out = '';
	for($i=0; $i<strlen($s); $i++)
	{
		$c1 = ord($s{$i++});
		$c2 = ord($s{$i++});
		$c3 = ord($s{$i++});
		$e1 = $c1 >> 2;
		$e2 = (($c1 & 3) << 4) + ($c2 >> 4);
		$e3 = (($c2 & 15) << 2) + ($c3 >> 6);
		$e4 = $c3 & 63;
		if(!is_numeric($c2)) $e3 = $e4 = 64;
		elseif(!is_numeric($c3)) $e4 = 64;
		$out .= $tab{$e1} . $tab{$e2} . $tab{$e3} . $tab{$e4};
	}
	return $out;
}
Для примера $tvuser = 133; $str = 'jtv/08.08.2011_2' На выходе c этими параметрами функция должна выдавать строку: «7/n7tLW9s7W9s7e1trbktw==» Но в php выдает только ее часть и то каким-то непонятным образом: «7/n7tb2zvbO3trbk» Подозреваю, что проблема кроется в операторе запятая в яваскрипте, но как его реализовать в php?

inox
()

Косяк OpenOffice 3.3.0

Доброго времени суток! После установки на оси Debian squeeze 32bit OpenOffice 3.3.0 (скаченного с оф.сайта данной софтины) при запуске любой программы комплекса не отображается ни одна текстовая строка ни в меню ни в кнопках, вообще нигде. Кто не сразу понял, вот скрин:

http://i.piccy.info/i5/20/19/1641920/Snymok.png

Устанавливал все как полагается через «dpkg -i *.deb» из папки с deb-пакетами. Потом еще установил пакет из desktop-integration. Подскажите, в чем может быть трабла.

inox
()

hostapd + TPLink TL-WN821N

Доброго времени суток!
Имеется ось Debian Squeeze 32bit и сабжевый юсб-свисток. Задача - сделать из него ТД. Все бы хорошо, и compat-wireless (драйвер carl9170) поставил свежайший, и hostapd из гита. Но беда состоит в том, что каждые полчаса отваливается коннект по вайфаю на всех подключенных клиентах - пинга на шлюз нет, переподключение на клиентах не помогает. Помогает только рестарт hostapd. Отруб сети происходит независимо от того есть нагрузка или нет. Просто отключается и все.
Ядро - 2.6.32-5-686
hostapd - 0.8.X из гита
hostapd.conf тут - http://pastebin.com/Gc3NFas3
Пробовал включать/отключать N - толку не дало. Плюс периодически независимо ни от чего в консоли вылазят сообщения «invalid plcp cck rate(0)». При отключении клиентов никаких сообщений нет ни в логах, ни в консоли. ЗЫ: hostapd также пробовал из репов (0.6.10), последний стабильный (0.7.3)

inox
()

USB HDD и автомонтирование fstab

Доброго всем дня!

Возникла такая трабла при автомонтировании дисков через fstab - имеются 2 внешних usb hdd (на 80 и 640 гиг), нужно сделать их автомонтирование через fstab. Все бы хорошо, fstab выглядит должным образом:

# /etc/fstab: static file system information.
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda2 during installation
UUID=ddcb13c8-6a59-401b-bb56-f38db332c7d8 /               jfs     errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=1e5fb855-8beb-42c2-b007-223829ff8e27 none            swap    sw              0       0
UUID=0D3BA69154F40242   /media/muzon1   ntfs-3g defaults        0       0
UUID=11081DCA6873026F   /media/usbhdd   ntfs-3g defaults        0       0
UUID=C627AEF9E573367A   /media/muzon2   ntfs-3g defaults        0       0
последние 2 строчки как раз и отвечают за монтирование usb hdd. Но почему-то этого не происходит после полного бута системы (UUID прописал верно можете не сомневаться). Если делать вручную «mount /media/usbhdd» и т.д. то все монтируется прекрасно. Подскажите в чем может быть трабла?

Система Debian Squeeze, ядро 2.6.32-5, ntfs-3g 2010.3.6-1.

inox
()

принтер через самбу на винде

Доброго всем времени суток! Имеется домашний шлюз на Debian Squeeze с самбой на борту. Расшарил на ней принтер Samsung ML1640. Через винду используя root-логин установил в самбу драйвера (как для x86, так и для x64) - они появились в папках «/var/lib/samba/printers/W32X86» и «x64» соответственно. Глюк заключается в том, что когда я хочу поставить в винде удаленный принтер она в упор не хочет видеть установленных ранее дров, хотя в конфиге доступ к ним вроде как прописан. Если дрова ставить вручную - установка и печать работают нормально.

Привожу конфиг smb.conf:

...
   security = share
   load printers = yes

   printing = cups
   printcap name = cups

[printers]
   comment = All Printers
   browseable = yes
   path = /var/spool/samba
   printable = yes
   guest ok = yes
   read only = yes
   create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
   comment = Printer Drivers
   locking = no
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = yes
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
   write list = root, @lpadmin
делал «cupsaddsmb -U root -a» просило пароль рута, но более ниче не писало.

inox
()

Network Manager и eapol_version=2

Доброго времени суток всем! Имеется Wifi ТД на основе Debian squeeze. Карта D-Link DWL-G550, драйвера Madwifi, шифрование WPA/WPA2, последний hostapd. Проблема заключается в том, что !линукс! wifi-клиенты через NM не могут приконнектится к точке (при том, что windows-клиенты коннектятся с полпинка). Покопавшись в конфиге wpa_supplicant путем эмпирических исследований пришел к выводу, что коннект все-таки проходит но только с указанием параметра eapol_version=2. Попытки поменять eapol_version на 1 в конфиге hostapd на сервере не увенчались успехом (нашел инфу, что драйвера madwifi не поддерживают эту настройку через hostapd). Прошу специалистов помочь либо както настроить NM на использование параметра конфига eapol_version=2, либо, что будет куда более рентабельнее, както настроить hostapd чтобы он использовал eapol_version=1 по дефолту. Юзаю madwifi потому что это пока что единственные дрова для atheros поддерживающие как положено turboG. Спасибо за внимание!

inox
()

запуск скрипта при shutdown'е

Доброго времени суток всем! Возникла задача помещения простенького скрипта по удалению ненужных логов работы системы а также прочего мусора при выключении машины (ОС debian squeeze). Про runlevel'ы понятие имею. Создал скрипт следующего содержания:

#!/bin/sh

rm -rf /var/log/chrony/*
rm -rf /var/log/exim4/*
rm -rf /var/log/installer/*
rm -rf /var/log/samba/*
rm -rf /var/log/auth.log
rm -rf /var/log/daemon.log
rm -rf /var/log/debug.log
rm -rf /var/log/pppoe-icn.log
rm -rf /var/log/syslog
rm -rf /var/log/kern.log
rm -rf /var/log/messages
rm -rf /var/log/user.log
rm -rf /var/mail/dimon
rm -rf /var/cache/apt/archives/*
exit 0
и поместил его в «/etc/init.d/logdel.sh» далее выполнил
# ln -s /etc/init.d/logdel.sh /etc/rc0.d/K04logdel
но собственно сам скрипт не срабатывает. В чем может быть причина?

inox
()

pppd и rsyslog

Доброго времени суток всем! Возникла такая проблема - rsyslog не перехватывает сообщения pppd, которые возникают при запуске ОСи (в моем случае не перехватываются сообщения процесса pppoe-коннекта). В /etc/ppp/options прописана опция debug, а в /etc/rsyslog.conf прописано следующее

local2.* -/var/log/ppp.log
но после запуска системы в логе /var/log/ppp.log добавляется всего лишь одна строка, а именно
pppd[993]: Script /etc/ppp/ip-up finished (pid 1155), status = 0x0
и больше никаких сообщений. Если соединение разорвать вручную и запустить - в лог вываливаются все сообщения как положено. Сделал запуск rsyslog перед всеми другими сервисами через init.d - не помогло. Подскажите в чем может быть проблема?

inox
()

и снова мультикаст

Доброго времени суток всем! Имеется линукс-шлюз на основе Debian squeeze. К нему подключено грубо говоря 2 «интернета» (один полноценный с PPPoE, на другом есть доступ только на локалку). Интернет собсно раздается по вайфаю и проводам через сетевуху, подключенную к свичу. Задача состоит в том чтобы заставить работать проксинг мультикаста между интерфейсами eth0 (тот что в полноценный интернет смотрит и eth2 - проводная локалка на свиче). Пробовал и igmpproxy и pimd, ковырялся в настройках но ни одна попытка не увенчалась успехом. Нужно мне это как уже можно было догадаться для работы IPTV внутри локальной сети. Да, оно у меня сейчас работает через udpxy идеально, но нужно будет в скором времени подключить IPTV-приставку а она http-потоки к сожалению не поддерживает.

inox
()

RSS подписка на новые темы