DISQUS

Homo-Adminus Blog: 5 Minutes Guide To Linux Traffic Shaping

  • _Andrey_ · 3 years ago
    Огромное спасибо за столь познавательную статью. Но, к сожалению, для меня этот способ не применим - у меня один интерфейс и для локалки, и для выхода в интернет.
    Как можно ограничить трафик для "локальщиков" (от меня забирают по ftp)?
    Система Gentoo Linux.
  • newbie · 3 years ago
    Это можно сделать используя iproute2. Документ описывающий детали: Linux Advanced Routing & Traffic Control Howto. Доступен бесплатно :) Видел и в е-донкей сети и в и-нете, только не помню где.
  • newbie · 3 years ago
    Здесь - http://lartc.org/
    pdf ~700kB
  • _Andrey_ · 3 years ago
    Спасибо, почитаю...
  • pilson66 · 2 years ago
    Один знакомый нарисовал вот такую штуку...
    мож кому поможет :)

    #!/bin/sh
    # \$speedrate=1+(92*SPEED_OUT)/100;
    # Arg Name Example
    # $1 $PPP_IFACE Interface name ppp0
    # $2 $PPP_TTY The tty ttyS1
    # $3 $PPP_SPEED The link speed 38400
    # $4 $PPP_LOCAL Local IP number 12.34.56.78
    # $5 $PPP_REMOTE Peer IP number 12.34.56.99
    # $6 $PPP_IPPARAM Optional ``ipparam'' value foo

    echo ' UP ' `date` Local $PPP_LOCAL, Remote $PPP_REMOTE, Iface $PPP_IFACE, IPParam $PPP_IPPARAM, Speed $PPP_SPEED>> /var/log/pptp.log

    TCC="/usr/bin/tcng"

    shaper () {
    INTERFACE=${1}
    RATE_IN=${2}
    RATE_OUT=${3}
    # CEIL_OUT=${4}
    IPADDR=${4}
    echo ' ' `date` "!!! SHAPER !!! $INTERFACE-$IPADDR { $RATE_IN / $RATE_OUT }">> /var/log/pptp.log
    # echo ' ' `date` "!!! SHAPER !!! $INTERFACE-$IPADDR { $RATE_IN / $RATE_OUT-$CEIL_OUT }">> /var/log/pptp.log

    subscript () {
    INTERFACE=${1}
    RATE_IN=${2}
    RATE_OUT=${3}
    # CEIL_OUT=${4}
    IPADDR=${4}
    echo "
    #define IFACE $INTERFACE
    #define IPADDR $IPADDR
    #define SPEED1_IN $RATE_IN
    #define SPEED1_OUT $RATE_OUT

    #define R2Q 7

    dev IFACE {

    /* ЙУИПДСЭЙК ФТБЖЙЛ */
    egress {
    \$speedceil=SPEED1_OUT;
    \$speedrate=\$speedrate=1+(92*SPEED1_OUT)/100;
    class ( );
    drop if 1 ;
    htb ( r2q R2Q ) {
    class ( rate \$speedrate kbps, ceil \$speedceil kbps ) {
    \$police = class ( rate \$speedrate kbps, ceil \$speedceil kbps ) { sfq ( perturb 10s ); }
    }
    }
    }

    /* ЧИПДСЭЙК ФТБЖЙЛ */
    \$p = bucket(rate SPEED_IN kbps,burst 10kB);
    ingress {
    class (1) if conform \$p && count \$p;
    drop if 1;
    }

    }
    " | $TCC | sed "s/drop\/\(drop\|pass\)/drop/"
    }
    SHAPER=$( subscript $INTERFACE $RATE_IN $RATE_OUT $IPADDR )
    IFS_OLD=$IFS
    IFS=$'\n'
    for TC_CMD in $SHAPER; do
    echo $TC_CMD >> /var/log/pptp.cmd.log
    eval $TC_CMD
    done
    IFS=$IFS_OLD
    }
    echo "0" > /proc/sys/net/ipv4/conf/$PPP_IFACE/send_redirects
    echo "0" > /proc/sys/net/ipv4/conf/$PPP_IFACE/accept_redirects
    echo "1" > /proc/sys/net/ipv4/conf/$PPP_IFACE/secure_redirects
    echo "0" > /proc/sys/net/ipv4/conf/$PPP_IFACE/accept_source_route
    echo "0" > /proc/sys/net/ipv4/conf/$PPP_IFACE/bootp_relay
    echo "0" > /proc/sys/net/ipv4/conf/$PPP_IFACE/proxy_arp
    echo "0" > /proc/sys/net/ipv4/conf/$PPP_IFACE/log_martians
    echo "1" > /proc/sys/net/ipv4/conf/$PPP_IFACE/rp_filter

    if [ "$PPP_IFACE" = "ppp99" ]; then
    # обработка для внешнего канала
    # shaper $PPP_IFACE 1024 128
    else
    # обработка для внутреннего канала
    shaper $PPP_IFACE 64 256 $PPP_REMOTE
    fi
  • Pablo · 2 years ago
    Very useful guide. Thanks!

    Regards,
    Pablo from Argentina.
  • redrumor · 2 years ago
    2_Andrey_
    можно сделать средствами фтп сервера, например добавив в конфиг такую строку (proftpd)

    TransferRate RETR,STOR,APPE 15 user !root

    В данном случае мы ограничиваем закачку и скачивание всем пользователям на 15k кроме рута



    подробнее http://andry.mine.nu/wordpress/?p=19
  • inn3r · 1 year ago
    Thank you for a good traffic shapping guide, but I couldn't understand what does eth1-2:10 mean? I mean that "10". I've red about It. It's about priority...But could someone explain It easily?

    thanks
  • stels88 · 1 year ago
    Please help - shaper for upload from IP
    Плизз нужен шейпер чтоб можно было не только даунлоад резать но и аплоад...
  • Kostyantyn · 1 year ago
    Данное описание содержит ошибки:
    Проблема 1:
    При запуске
    # /sbin/htb.init start
    Получаем:
    ./htb.init: line 757: /var/cache/htb.init: Is a directory
    **HTB: failed to compile HTB configuration!

    Решение: Ошибка состоит в том, что мы создали папку /var/cache/htb.init а этого не следовало делать !!! Поскольку # /sbin/htb.init start пытается создать файл с таким же именем в данной папке и не может.

    Проблема 2:
    Все файлы которые мы создаем: eth0 и т.д. необходимо создавать не в папке /var/cache/htb.init а в папке # mkdir -p /etc/sysconfig/htb

    Проблема 3:
    может возникнуть предупреждение об ошибке типа:
    find: warning: you have specified the -maxdepth option after a non-option argument (, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
    В данном случае зайдите в файл htb.init и уберите знак # в строке HTB_BASIC="yes". В моей версии это была 412-я строка.