Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux Advanced Routing & Traffic Control HOWTOΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 29

Автор Bert Hubert

Она Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»Π° сСбя ΠΏΡ€ΠΈ обслуТивании Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² студСнчСских общСТитиях, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄Π°ΠΌΠΈ раздСляСтся СдинствСнноС соСдинСниС с Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ дистрибутива WRR являСтся Π½Π°Π±ΠΎΡ€ сцСнариСв, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… настройку Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ‚Π°ΠΊΠΈΡ… сСтСй.

Π“Π»Π°Π²Π° 15. РСшСбник.

Π’ этой Π³Π»Π°Π²Π΅ приводятся Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смогут ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π² ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Она Π½Π΅ Π΄Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² Π½Π° всС случаи ΠΆΠΈΠ·Π½ΠΈ, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ лишним.

15.1. Запуск Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сайтов с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ sla.

ΠžΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ° (А.К.): SLA (ΠΎΡ‚ Π°Π½Π³Π». Service Level Agreement) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "БоглашСниС ΠΎΠ± Π£Ρ€ΠΎΠ²Π½Π΅ ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡ" – основной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ИВ-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠΌ.

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Apache ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π½ΠΎ ΠΌΡ‹ продСмонстрируСм ΠΊΠ°ΠΊ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого срСдствами ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π­Ρ‚ΠΈ строки взяты ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, прСдставлСнного Π”ΠΆΠ°ΠΌΠ°Π»ΠΎΠΌ Π₯Π°Π΄ΠΈ (Jamal Hadi).

Допустим, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ€Π΅Π½Π΄ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ долю нашСго ΠΊΠ°Π½Π°Π»Π° ΠΏΠΎΠ΄ http, ftp ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ΅ audio. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π°Ρ€Π΅Π½Π΄ΡƒΠ΅Ρ‚ полосу Π² 2 ΠœΠ±ΠΈΡ‚Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ – 5 ΠœΠ±ΠΈΡ‚. Для Π½Π°Ρ‡Π°Π»Π° Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ нашим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ IP-адрСса Π½Π° нашСм сСрвСрС:

# ip address add 188.177.166.1 dev eth0

# ip address add 188.177.166.2 dev eth0

РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ IP-адрСса Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ слуТбам, оставляСм Π·Π° Π²Π°ΠΌΠΈ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всС популярныС Π΄Π΅ΠΌΠΎΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ CBQ qdisc ΠΊ eth0:

# tc qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit cell 8 avpkt 1000 \

 mpu 64

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ классы ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²:

# tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 10Mbit rate \

 2MBit avpkt 1000 prio 5 bounded isolated allot 1514 weight 1 maxburst 21

# tc class add dev eth0 parent 1:0 classid 1:2 cbq bandwidth 10Mbit rate \

 5Mbit avpkt 1000 prio 5 bounded isolated allot 1514 weight 1 maxburst 21

И добавляСм Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΊ классам:

##FIXME: Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Π° пСрвая строка, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚? Каково Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "дСлитСля" (divisor)?:

##FIXME: Π”Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΏΡƒΠ»Π°

## (bucket) – ahu

# tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 1: u32 divisor 1

# tc filter add dev eth0 parent 1:0 prio 5 u32 match ip src 188.177.166.1

 flowid 1:1

# tc filter add dev eth0 parent 1:0 prio 5 u32 match ip src 188.177.166.2

 flowid 1:2

FIXME: ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅Ρ‚ token bucket filter?

15.2. Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ syn flood.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ взят ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ iproute, написанной АлСксССм ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ для совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с netfilter. Если этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ заинтСрСсуСт вас, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ числовыС значСния Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящиС для вашСй систСмы.

Π­Ρ‚ΠΎΡ‚ сцСнарий Π±Ρ‹Π» написан для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ хоста, Π° Π½Π΅ сСти. Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ это ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ.

Для Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ iproute2.

#! /bin/sh –x

#

# дСмонстрация возмоТностСй ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ входящим (ingress) Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ

# здСсь приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ограничСния пропускной способности для входящих SYN-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

# ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ TCP-SYN Π°Ρ‚Π°ΠΊ.

# #ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌ; #ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ значСния.

#

TC=/sbin/tc

IP=/sbin/ip

IPTABLES=/sbin/iptables

INDEV=eth2

#

# ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ всС SYN-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· $INDEV, числом 1

############################################################

$iptables –A PREROUTING –i $INDEV –t mangle –p tcp –syn \

 β€“j MARK –set-mark 1

############################################################

#

# ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ingress qdisc Π½Π° входящий интСрфСйс

############################################################

$TC qdisc add dev $INDEV handle ffff: ingress

############################################################


#

#

# SYN-ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 40 Π±Π°ΠΉΡ‚ (320 Π±ΠΈΡ‚), ΠΎΡ‚ΡΡŽΠ΄Π° – Ρ‚Ρ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

# ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 960 Π±ΠΈΡ‚ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1 ΠšΠ±ΠΈΡ‚); ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поступлСния

# 3-мя ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π² сСкунду ( Ρ‚ΠΎΡ‡Π½Π΅Π΅ – 1 ΠšΠ±ΠΈΡ‚/сСк )

############################################################

$TC filter add dev

$INDEV parent ffff: protocol ip prio 50 handle 1 fw \

 police rate 1kbit burst 40 mtu 9k drop flowid :1

############################################################


# echo "– qdisc parameters Ingress –"

$TC qdisc ls dev $INDEV

echo "– Class parameters Ingress –"

$TC class ls dev $INDEV

echo "– filter parameters Ingress –"

$TC filter ls dev $INDEV parent ffff:


#Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ingress qdisc

#$TC qdisc del $INDEV ingress

15.3. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ пропускной способности для icmp-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², с Ρ†Π΅Π»ΡŒΡŽ прСдотвращСния dDoS Π°Ρ‚Π°ΠΊ.

НСдавниС распрСдСлСнныС Π°Ρ‚Π°ΠΊΠΈ, Ρ‚ΠΈΠΏΠ° "ΠžΡ‚ΠΊΠ°Π· Π² обслуТивании", стали основной "Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ болью" для Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Настроив ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π²Ρ‹ смоТСтС ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ наступлСниС катастрофичСских послСдствий, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π°Ρ‚Π°ΠΊΠ°ΠΌΠΈ.

Основная Π·Π°Π΄Π°Ρ‡Π° – Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, с исходящими адрСсами, Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌΠΈ вашСй сСти, Π½Π΅ смогли Π±Ρ‹ ΠΏΠΎΠΊΠΈΠ½ΡƒΡ‚ΡŒ Π΅Π΅. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ всякой "гадости" Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Π΄Π΅Π»Ρƒ, нарисуСм схСму ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ локальной сСти ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚:

[Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚] ---<E3, T3...>--- [Linux router] --- [ΠžΡ„ΠΈΡ]

                           eth1          eth0  

Π—Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ условия:

# tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000

# tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \

 10Mbit allot 1514 prio 5 maxburst 20 avpkt 1000

Если Ρƒ вас Π±ΠΎΠ»Π΅Π΅ высокоскоростноС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ эти Ρ†ΠΈΡ„Ρ€Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с "ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ" ΠΊΠ°Π½Π°Π»Π° для ICMP-Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для вашСй сСти, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ tcpdump, запустив Π΅Π΅ с ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ». Π—Π°Ρ‚Π΅ΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹ смоТСтС ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство ICMP-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², отправляСмых вашСй ΡΠ΅Ρ‚ΡŒΡŽ Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Если Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ подсчСта ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ 10% ΠΎΠ±Ρ‰Π΅ΠΉ пропускной способности. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ наш класс:

# tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \

 100Kbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 250 \

 bounded

Он ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π»Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ 100 ΠšΠ±ΠΈΡ‚/сСк. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΊ Π½Π΅ΠΌΡƒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ для ICMP-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

# tc filter add dev eth0 parent 10:0 protocol ip prio 100 u32 match ip protocol 1 0xFF flowid 10:100

15.4. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ для Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Если ΠΊΠ°Π½Π°Π» практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π±ΠΈΡ‚ отправляСмыми/ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· telnet ΠΈΠ»ΠΈ ssh становится практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ. Как Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π΅ блокировался Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. Linux ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π² этом!

Как ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ обслуТиваниС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ… ΠΊΠ°Π½Π°Π»Π°. ΠΠ°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΊΠΎΠ³Π΄Π° с ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†ΠΎΠ² установлСна опСрационная систСма Linux, ΠΎΠ΄Π½Π°ΠΊΠΎ UNIX Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ pfifo_fast ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… "полосы". Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ обслуТиваСтся полоса 0, Π° Π·Π°Ρ‚Π΅ΠΌ полосы 1 ΠΈ 2. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вСсь ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² полосу 0!

ΠžΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡΡΡŒ ΠΎΡ‚ "Ipchais HOWTO" (ΡƒΠΆΠ΅ довольно ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ):

Π’ IP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ имССтся 4 Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΡ‚Π° β€” TOS (Type of Service β€” Π’ΠΈΠΏ ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡ). Они Π·Π°Π΄Π°ΡŽΡ‚ способ обслуТивания ΠΏΠ°ΠΊΠ΅Ρ‚Π°: "Minimum Delay" (минимальная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°), "Maximum Throughput" (максимальная пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ), "Maximum Reliability" (максимальная Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ) ΠΈ "Minimum Cost" (минимальная ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π»Π°). ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих Π±ΠΈΡ‚ΠΎΠ². Π ΠΎΠ± Π²Π°Π½ ΠΡŒΡŽΠΊΠ΅Ρ€ΠΊ (Rob van Nieuwkerk), Π°Π²Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ipchains TOS-mangling, Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ пояснСниС:

НаиболСС Π²Π°ΠΆΠ½Ρ‹ΠΌ для мСня, являСтся Ρ„Π»Π°Π³ "Minimum Delay" (минимальная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°). Π― Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΠΌΠΎΠ΅ΠΌ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π΅, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Linux. Π― ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ сСти Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄Π΅ΠΌ 33.6. Linux "раскидываСт" ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎ 3-ΠΌ очСрСдям. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ обслуТивания ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΈ большой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΠ°Π½Π°Π»Π°.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ„Π»Π°Π³ "Minimum Delay" устанавливаСтся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… для telnet ΠΈ ftp-control, Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ftp-data – "maximum throughput". ДСлаСтся это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

# iptables –A PREROUTING –t mangle –p tcp –sport telnet \

 -j TOS –set-tos Minimize-Delay

# iptables –A PREROUTING –t mangle –p tcp –sport ftp \

 -j TOS –set-tos Minimize-Delay

# iptables –A PREROUTING –t mangle –p tcp –sport ftp-data \

 -j TOS –set-tos Maximize-Throughput

Π­Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ хостС ΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° входящиС, ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Для ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², отправляСмых Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, эти Ρ„Π»Π°Π³ΠΈ (Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹) ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ автоматичСски. Если это Π½Π΅ Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° своСй систСмС ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°: