Здравствуйте. >Имею в наличии следующее >1) подключение ADSL на скорости 256/128 >2) небольшую домашнюю сеть на 4 комп. >3) шлюз на Ленни, чтобы компы в инет бегали. > >модем настроен в режиме бриджа. на шлюзе с помощью PPPoE поднято >интерфейс ppp0, все это бегает через eth0 и более туде ничего не >подключено. Интефейс wlan0 смотрит в домашнюю сеть (WiFi, здесь все >работает). настроен маскарадинг, интернет есть на всех компах. > >также на один комп во внутренней сети DNAT'ом проброшен TCP-порт для >торрет-клиента. торрен также работает и на прием и напередачу. Но тут >возникает проблема: как только запускаю его (Торрент) все остальное >умирает. даже пинги не все идут. правда nload на шлюзе показывает >среднюю загрузку на ppp0 ~ 240kbit на прием и ~ 110 на передачу. > >начитавшись LARTC попытался сделать следующее --------------[поскипано]----------------------- >положено в /etc/ppp/ip-up.d/shaper и вистовлено права 755 > >маркирую пакеты следующим образом > --------------[поскипано]-----------------------
Была похожая проблема. Сервер (он же шлюз), на нем Verlihub (DC++ сервер) и microdc2 (DC++ клиент). Шейпинга в Microdc2 нет, поэтому пришлось читать LARTC. После прочтения родился скрипт (правил что-то взятое там). Шейпит исходящий DC++ трафик с внешнего интерфейса (в моем случае это все, что уходит на 172.16.0.0/12), оставляя возможность нормального серфинга клиентам в локалке и управления сервером по ssh. Причем, маркировать пакеты через iptables не пришлось. #!/bin/bash #http://www.debian-administration.org/users/kapal/weblog/1 #http://lartc.org/howto/lartc.qdisc.filters.html #for module in sch_cbq sch_tbf sch_sfq sch_prio cls_u32; do for module in sch_htb sch_sfq sch_prio cls_u32; do if ! modprobe $module; then echo "**TC_SHAPER: could not load module $module" exit fi done DEVICE=eth0 RATE=640kbit SHARE1=100kbit SHARE2=200kbit SHARE3=300kbit SHARE4=400kbit # Buckets reflect IP last Octet for now BSSH=22 BMICRODC=411 BINTERNAL=250 BDEFAULT=255 start (){ # Create QDISC using HTB tc qdisc add dev $DEVICE root handle 1: htb default $BDEFAULT tc class add dev $DEVICE parent 1: classid 1:1 htb rate $RATE ceil $RATE # Create Buckets tc class add dev $DEVICE parent 1:1 classid 1:$BSSH htb rate $SHARE2 ceil $RATE tc class add dev $DEVICE parent 1:1 classid 1:$BMICRODC htb rate $SHARE3 ceil $SHARE4 #tc class add dev $DEVICE parent 1:1 classid 1:$BDEFAULT htb rate $SHARE1 ceil $RATE # Each IP address is put in a bucket..... tc filter add dev $DEVICE protocol ip parent 1:0 prio 1 u32 match ip sport 22 0xffff flowid 1:$BSSH tc filter add dev $DEVICE protocol ip parent 1:0 prio 5 u32 match ip dst 172.16.0.0/12 flowid 1:$BMICRODC # Repeat as needed changing IP and the Bucket name # Make the dross play nicely using SFQ #tc qdisc add dev $DEVICE parent 1:$BDEFAULT handle 10: sfq perturb 10 } stop() { # Delete the root of the tree to get a pfifo_fast back tc qdisc del dev $DEVICE root } status() { echo ==== QDISC STATS ===== tc -s qdisc echo ==== CLASS STATS ===== tc -s class show dev $DEVICE } case "$1" in start) start ;; stop) stop ;; status) status ;; *) echo "Usage: $0 {start|stop|status}" exit 1 esac Шейпить входящий DC трафик не пришлось, бо сервер ничего не качает, а только раздает. В итоге на канале 640кбит/с исходящий трафик в сторону качающих по DC урезан до 400кбит/с. На всякий случай, для управления сервером по ssh выделена полоса не менее 200кбит/с. В Вашем случае в приведенном коде я не вижу фильтра для 1:20 (а также, маркировки пакетов в iptables). А 1:10 использует всю ширину канала. Опять же, tc class add dev $PPP_IFACE parent 1:1 classid 1:20 htb rate 1kbit ceil $(UPLINK) kbit burst 50b prio 3 ИМХО лучше заменить на tc class add dev $PPP_IFACE parent 1:1 classid 1:20 htb rate 1kbit ceil $ [8 * $UPLINK/10] kbit burst 50b prio 3 И добавить правильный фильтр. До свидания. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org