awsswa (awsswa) wrote,
awsswa
awsswa

Шейпинг iptables

Украдено для себя:
Теория: http://linux-bash.ru/mseti/74-htb.html
================================================================================================
Переписано на другие правила
Шейпится все

cat speed_down.sh

#!/bin/bash
# Входящий LAN
local=eth1
# Изходящий WAN
inet=eth0
RATEUP=7168 # скорость отдачи
RATEDN=7168 # скорость закачки
tc qdisc del dev ${local} root
tc qdisc del dev ${local} ingress
tc qdisc del dev ifb0 root
#rmmod ifb
ip link set dev ifb0 up
tc qdisc add dev ${local} ingress
tc filter add dev ${local} parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
ip link set dev ifb0 qlen 30
#################### LAN
# Входящий local
tc qdisc add dev ifb0 root handle 1: htb default 900
tc class add dev ifb0 parent 1: classid 1:1 htb rate $[RATEDN]kbit
tc class add dev ifb0 parent 1:1 classid 1:10 htb rate $[9*$RATEDN/10]kbit ceil $[RATEDN]kbit prio 0
tc class add dev ifb0 parent 1:1 classid 1:20 htb rate $[8*$RATEDN/10]kbit ceil $[RATEDN]kbit prio 1
tc class add dev ifb0 parent 1:1 classid 1:30 htb rate $[7*$RATEDN/10]kbit ceil $[RATEDN]kbit prio 2
tc class add dev ifb0 parent 1:1 classid 1:40 htb rate $[6*$RATEDN/10]kbit ceil $[RATEDN]kbit prio 3
tc class add dev ifb0 parent 1:1 classid 1:50 htb rate $[5*$RATEDN/10]kbit ceil $[RATEDN]kbit prio 4
# Всех кто не попал в правила ронять в класс 900
tc class add dev ifb0 parent 1:1 classid 1:900 htb rate $[4*$RATEDN/10]kbit ceil $[RATEDN]kbit prio 5
tc qdisc add dev ifb0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev ifb0 parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev ifb0 parent 1:40 handle 40: sfq perturb 10
tc qdisc add dev ifb0 parent 1:50 handle 50: sfq perturb 10
tc qdisc add dev ifb0 parent 1:900 handle 900: sfq perturb 10
#######################################################################################
# icmp
tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:10
# dns
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:20
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:20
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:20
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:20
# ssh
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:20
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:20
# rdp
tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 3389 0xffff flowid 1:30
tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 3389 0xffff flowid 1:30
# openvpn
tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 17 0xff match ip sport 1194 0xffff flowid 1:30
tc filter add dev ifb0 protocol ip parent 1:0 prio 2 u32 match ip protocol 17 0xff match ip dport 1194 0xffff flowid 1:30
# web
tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:40
tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:40
tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:40
tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:40
# mail
tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:50
tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:50
tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 110 0xffff flowid 1:50
tc filter add dev ifb0 protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 110 0xffff flowid 1:50

# all udp
tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 17 0xff flowid 1:900
# all tcp
tc filter add dev ifb0 protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff flowid 1:900
################ WAN ##################################################################
# Изходящий
ip link set dev $local qlen 30
tc qdisc add dev $local root handle 1: htb default 900
tc class add dev $local parent 1: classid 1:1 htb rate $[RATEUP]kbit
tc class add dev $local parent 1:1 classid 1:10 htb rate $[9*$RATEUP/10]kbit ceil $[RATEUP]kbit prio 0
tc class add dev $local parent 1:1 classid 1:20 htb rate $[8*$RATEUP/10]kbit ceil $[RATEUP]kbit prio 1
tc class add dev $local parent 1:1 classid 1:30 htb rate $[7*$RATEUP/10]kbit ceil $[RATEUP]kbit prio 2
tc class add dev $local parent 1:1 classid 1:40 htb rate $[6*$RATEUP/10]kbit ceil $[RATEUP]kbit prio 3
tc class add dev $local parent 1:1 classid 1:50 htb rate $[5*$RATEUP/10]kbit ceil $[RATEUP]kbit prio 4
# Всех кто не попал в правила ронять в класс 900
tc class add dev $local parent 1:1 classid 1:900 htb rate $[4*$RATEUP/10]kbit ceil $[RATEUP]kbit prio 5
tc qdisc add dev $local parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $local parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $local parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev $local parent 1:40 handle 40: sfq perturb 10
tc qdisc add dev $local parent 1:50 handle 50: sfq perturb 10
tc qdisc add dev $local parent 1:900 handle 900: sfq perturb 10
#######################################################################################
tc filter add dev $local protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:10
tc filter add dev $local protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:20
tc filter add dev $local protocol ip parent 1:0 prio 1 u32 match ip protocol 17 0xff match ip dport 53 0xffff flowid 1:20
tc filter add dev $local protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 53 0xffff flowid 1:20
tc filter add dev $local protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 53 0xffff flowid 1:20
tc filter add dev $local protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:20
tc filter add dev $local protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:20
tc filter add dev $local protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip sport 3389 0xffff flowid 1:30
tc filter add dev $local protocol ip parent 1:0 prio 2 u32 match ip protocol 6 0xff match ip dport 3389 0xffff flowid 1:30

tc filter add dev $local protocol ip parent 1:0 prio 2 u32 match ip protocol 17 0xff match ip sport 1194 0xffff flowid 1:30
tc filter add dev $local protocol ip parent 1:0 prio 2 u32 match ip protocol 17 0xff match ip dport 1194 0xffff flowid 1:30
tc filter add dev $local protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:40
tc filter add dev $local protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:40
tc filter add dev $local protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 443 0xffff flowid 1:40
tc filter add dev $local protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:40
tc filter add dev $local protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 25 0xffff flowid 1:50
tc filter add dev $local protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 25 0xffff flowid 1:50
tc filter add dev $local protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip sport 110 0xffff flowid 1:50
tc filter add dev $local protocol ip parent 1:0 prio 4 u32 match ip protocol 6 0xff match ip dport 110 0xffff flowid 1:50
tc filter add dev $local protocol ip parent 1:0 prio 5 u32 match ip protocol 17 0xff flowid 1:900
tc filter add dev $local protocol ip parent 1:0 prio 5 u32 match ip protocol 6 0xff flowid 1:900
================================================================================================
Через утилиты iftop и nload можно посмотреть результаты труда

iptables -L -vn -t mangle
Посмотреть результаты по классу 21 по интерфейсам eth1 и ifb0
cat speed_list.sh


#!/bin/bash
export n=21
watch -n1 '
tc -s class show dev eth1 classid 1:${n};
tc -s class show dev ifb0 classid 1:${n};
 '
unset n

===============================================================================================

tc -s -d qdisc show dev eth1
tc -s -d class show dev eth1
tc -s filter show dev eth1

Tags: шейпинг
Subscribe

  • Panasonic KX-UT133RU BLF

    Настройка BLF функции на телефоне. У Панасоника как всегда свой путь voip телефонии, вместо того что клавиши горели зеленым цветом в режиме…

  • nginx проксирование до exchange

    Конфигурация только в сторону одного сервера exchange, без балансировки и остального. Сохранено в принципе для истории Подготовка: Получаете…

  • dkim proxmox mail gateway version 7

    how-to dkim proxmox mail gateway 7 Краткая инструкция по настройке DKIM на pmg Заходите в вебку на порту 8006 идете в настройки - Mail Proxy -…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments