TC (Controle de Tráfego) para controlar a largura de banda

5

Estou tendo um problema com um script de largura de banda que estou usando há algum tempo para limitar a largura de banda de saída em uma porta.

Funcionou bem no começo até que eu quisesse mudar a velocidade da porta de saída. Eu mudei para um número maior (200mbit para 400mbit) e reiniciei o script. Por alguma razão, o novo limite de largura de banda não demorou e o antigo limite ainda está lá. Eu tenho a configuração do script como um serviço init. Essa é a parte do código que parece.

# Interface
interface=eth0

# Define the upload, follow units can be
upload_limit=400mbit

start() {
    # Start the tc configuration and set all packets default to 10
    /sbin/tc qdisc add dev $interface root handle 1:0 htb default 10

    # Set default speed for all packets
    /sbin/tc class add dev $interface parent 1:0 classid 1:10 htb rate 1000mbit ceil 1000mbit prio 0
    # Set speeds for packets marked with 20
    /sbin/tc class add dev $interface parent 1:0 classid 1:20 htb rate $upload_limit ceil $upload_limit prio 0

    # Mark packets for port 182 to 20 so that tc can handle the traffic.
    /sbin/iptables -A OUTPUT -t mangle -p tcp --sport 182 -j MARK --set-mark 20
    /sbin/service iptables save

    # Assign it to appropriate qdisc
    tc filter add dev $interface parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
}

stop() {
    /sbin/tc qdisc del dev $interface root
}

Alguém pode me oferecer alguma sugestão?

    
por Elise Crane 13.05.2016 / 00:09

1 resposta

0

IMHO, a razão para a regra antiga ainda estar em vigor é que a regra iptables que causa "a mágica" ainda está lá, já que você tem uma linha que a adiciona e nenhuma linha para removê-la. Verifique seu arquivo de regras do iptables. Você deve ter um monte de linhas similares à versão antiga (port) de "iptables -D OUTPUT -t mangle -p tcp --sport 182 -j MARK --set-mark 20". (como toda vez que o script é executado, você cria um novo e salva depois)

Tente colocar um comando Iptables na função stop () para limpar as regras da tabela mangle. Algo assim:    / sbin / iptables -D SAÍDA -t mangle -p tcp --sport 182 -j MARK --set-mark 20    / sbin / service iptables salvar

    
por 14.05.2018 / 14:23