Jump to content

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


Recommended Posts

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

если ведется закачка в 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

Link to post
Share on other sites

Откуда качаете? Спидтест хотя бы проходили? Что показывает?

качаю с mirror.yandex.ru

спидтест показывает тоже самое - 2/3 скорости :huh:

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...