Перейти до

Настройки шейпинга


Рекомендованные сообщения

Недавно обнаружил странную проблему:

если ведется закачка в 1 поток то шейпер отдает только 2/3 от заказанной скорости.

например, если скорость стоит 1,5мбит, то в пользователя качается файл со скоростью 100кБайт/сек

если в несколько потоков - то загружается вся полоса

может кто сталкивался с таким ??

 

shaper.init:

#!/bin/sh

#

 

lan=xx.xx.xx.xx/16

int_iface=eth1

/sbin/tc qdisc del dev $int_iface root handle 1: htb

 

/sbin/tc qdisc add dev $int_iface root handle 1: htb

/sbin/tc class add dev $int_iface parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 200k

 

# Internet

mark=2

speedkb=20

speedceil=20

/sbin/tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate "$speedkb"mbit ceil "$speedceil"mbit burst 200k

 

# Counter Strike, Named

mark=255

speedkb=20

speedceil=20

/sbin/tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate "$speedkb"mbit ceil "$speedceil"mbit

/sbin/tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark

 

# Local lan

mark=256

speedkb=40

speedceil=60

/sbin/tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate "$speedkb"mbit ceil "$speedceil"mbit

/sbin/tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark

 

iptables.init:

#!/bin/bash

all=0.0.0.0/0

 

#локальная сеть

lan=xx.xx.xx.xx/16

 

#Машина администратора

admin=xx.xx.xx.xx

 

#Адреса роутера

server0=xx.xx.xx.xx

server1=xx.xx.xx.xx

 

 

 

# Интерфейс смотрящий на клиентов

iface_cli=eth1

 

# Интерфейс смотрящий во внешний мир

iface_world=eth0

ip_world=xx.xx.xx.xx

 

#Порты, на которых работает конфигуратор и авторизатор

conf_port=5555

user_port1=5555

user_port2=5555

 

echo "1" > /proc/sys/net/ipv4/ip_forward

 

# Очищаем правила файрвола

iptables -F

iptables -t filter -F

iptables -t filter -X

iptables -t nat -F

iptables -t nat -X

iptables -t mangle -F

iptables -t mangle -X

iptables -t filter -P INPUT DROP

iptables -t filter -P FORWARD DROP

iptables -t filter -P OUTPUT DROP

 

# Разрешаем всё на локальном интерфейсе

iptables -t filter -A INPUT -i lo -j ACCEPT

iptables -t filter -A OUTPUT -o lo -j ACCEPT

 

# local services

iptables -t filter -A INPUT -i $iface_cli -p tcp --dport 1:1024 -j ACCEPT

iptables -t filter -A INPUT -i $iface_cli -p udp --dport 1:1024 -j ACCEPT

iptables -t filter -A OUTPUT -o $iface_cli -j ACCEPT

 

# DNS. Замечу, ДНС работает и по TCP и по UDP

iptables -t filter -A INPUT -i $iface_cli -p tcp --sport 53 -j ACCEPT

iptables -t filter -A OUTPUT -o $iface_cli -p udp --dport 53 -j ACCEPT

 

 

iptables -t filter -A INPUT -p tcp -s $lan --dport $conf_port -j ACCEPT

iptables -t filter -A OUTPUT -p tcp -d $lan --sport $conf_port -j ACCEPT

iptables -t filter -A INPUT -p udp -s $lan --sport $user_port2 --dport $user_port1 -j ACCEPT

iptables -t filter -A OUTPUT -p udp -d $lan --dport $user_port1 -j ACCEPT

 

 

#Counter Strike, NAMED

iptables -A PREROUTING -t nat -p udp -i eth0 --dport 27015 -j DNAT --to-destination $server1

/sbin/iptables -t mangle -A FORWARD -p udp --dport 27015 -d $lan -s $lan -j MARK --set-mark 255

/sbin/iptables -t mangle -A FORWARD -p udp --sport 27015 -d $lan -s $lan -j MARK --set-mark 255

 

/sbin/iptables -t mangle -A FORWARD -p udp --dport 53 -d $lan -s $lan -j MARK --set-mark 255

/sbin/iptables -t mangle -A FORWARD -p udp --sport 53 -d $lan -s $lan -j MARK --set-mark 255

/sbin/iptables -t mangle -A FORWARD -p tcp --dport 53 -d $lan -s $lan -j MARK --set-mark 255

/sbin/iptables -t mangle -A FORWARD -p tcp --sport 53 -d $lan -s $lan -j MARK --set-mark 255

 

#локальный шейпинг

/sbin/iptables -t mangle -A FORWARD -d $lan -s $lan -j MARK --set-mark 256

 

OnConnect:

#!/bin/sh

# Login

LOGIN=$1

#user IP

IP=$2

#cash

CASH=$3

#user ID

ID=$4

 

lan=xx.xx.xx.xx/16

int_iface=eth1

out_iface=eth0

 

 

/sbin/iptables -t filter -A INPUT -s $IP -j ACCEPT

/sbin/iptables -t filter -A FORWARD -s $IP -j ACCEPT

/sbin/iptables -t filter -A FORWARD -d $IP -j ACCEPT

/sbin/iptables -t filter -A OUTPUT -d $IP -j ACCEPT

 

case $LOGIN in

test) speedkb=512;;

......

......

*) speedkb=128;;

esac

 

speedceil=$speedkb

mark=$ID

 

/sbin/iptables -t mangle -A FORWARD ! -s $lan -d $IP -j MARK --set-mark $mark

/sbin/iptables -t mangle -A OUTPUT -d $IP -p tcp --sport 3127 -j MARK --set-mark $mark

/sbin/iptables -t mangle -A OUTPUT -d $IP -p tcp --sport 3128 -j MARK --set-mark $mark

 

 

/sbin/tc class add dev $int_iface parent 1:2 classid 1:$mark htb rate "$speedkb"kbit ceil "$speedceil"kbit

/sbin/tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...