$ sudo apt-get install ipset $ sudo apt-get install netfilter-extensions-source $ uname -a Linux host.domain.tld 2.6.26-2-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686 GNU/Linux $ sudo apt-get install linux-headers-2.6.26-2-686 $ sudo m-a build netfilter-extensions $ sudo m-a update && sudo m-a a-i netfilter-extensions
«Чим більше навколишні знають, що з себе ви уявляєте і що від вас слід очікувати, тим сильніше це обмежує вашу свободу»,
Шукати в цьому блозі
Показ дописів із міткою iptables. Показати всі дописи
Показ дописів із міткою iptables. Показати всі дописи
вівторок, 5 квітня 2011 р.
Lenny: iptables - ipset (netfilter-extensions) и т.д.
Отвык от Lenny, но вот пришлось поиметь с ним дело, поэтому родилась эта зметка:
неділя, 19 грудня 2010 р.
Debian: IPSET, TARPIT и т.д. на ядре 2.6.32 и выше
Для тех кто мучается с netfilter-extension и не понимает, что же делать-то ;)
Новые таржеты для iptables:
Новые совпадения (matches) для iptables:
- aptitude install module-assistant xtables-addons-source
- module-assistant prepare
- module-assistant auto-install xtables-addons-source
- depmod -a
Новые таржеты для iptables:
- CHAOS: randomly use REJECT, DELUDE or TARPIT targets. This will fool network scanners by returning random results
- DELUDE: always reply to a SYN by a SYN-ACK. This will fool TCP half-open discovery
- DHCPADDR: replace a MAC address from and to a VMware host
- IPMARK: mark a packet, based on its IP address
- LOGMARK: log packet and mark to syslog
- SYSRQ: trigger a sysreq over the network (sending a saK over the network looks like a real funny idea ;)
- TARPIT: try to slow down (or DoS) remote host by capturing the session and holding it for a long time, using a 0-bytes TCP window. Run that on port 25 if you have no mail server to slow down spammers ;)
Новые совпадения (matches) для iptables:
- condition: match on boolean value stored in /proc/net/nf_condition/name
- dhcpaddr: match the DHCP Client Host address in a DHCP message
- fuzzy: match a rate limit based on a fuzzy logic controller
- geoip: match a packet by its source or destination country
- ipp2p: match (certain) p2p protocols
- portscan: try to match port scanners based on packet contents
- quota2: named counters
четвер, 4 червня 2009 р.
Как настроить шейпер на локальную сеть, с корректным/справедливым делением входящего и исходящего трафика?
Вместо предисловия.
Задача, для простых конфигураций, состоит из двух этапов решения.
В качестве препроцессора для формирования tc будем использовать tcng. Категорически советую общественности наконец обратить внимание на этот замечательный инструментарий.
Как правило задача ограничить ширину канала из Интернета к локальным хостам не вызывает особых проблем, ведь этот трафик для сервера, по отношению к клиентским хостам, определяется как egress. В основном "мучения" наступают когда надо ограничить ширину канала из локалки в Интернет. Ниже мы постараемся решить и эту небольшую проблему.
Вводные данные.
Пусть ISP на eth0 - 100Мбит/с, и на нём поднимается ppp0. Пропускная способность ppp0 - 1Мбит/с . Локалка eth1 - 100Мбит/с.
Предположим, что ip адрес выданный провайдером на ppp0 - 100.100.100.100, а на eth1 поднят адрес 10.100.1.1/24. В локальной сети есть четыре привилегированных адреса (10.100.1.254, 10.100.1.253, 10.100.1.252 и 10.100.1.251) на которых поровну делится половина канала в Интернет (512Кбит/с по 128Кбит/с на каждый хост), остальные хосты в сети работают на второй половине канала (512Кбит/с) и нас особо не интересует как они между собой поделят эту скорость.
Первый этап решения.
Описываем правила iptables для трафика приходящего к нам из локалки и уходящий в Интернет:
В приведенном примере трафик маркируется в PREROUTING, хотя это транзитный трафик и его с таким же успехом можно промаркировать в цепочке FORWARD таблицы mangle.
Дальше, рисуем скрипт для tcng:
Преобразуем скрипт tcng в правила tc:
Что имеем на данном этапе? Спроектированный egress для интерфейса ppp0. Жёсткие ограничения в скорости установленные для наших локальных адресов 10.100.1.254, 10.100.1.253, 10.100.1.252 и 10.100.1.251. Все остальные хосты нашей сети используют остаток канала, который останется после распределения нагрузки этих хостов.
Второй этап решения.
Рисуем скрипт tcng для eth1:
Преобразуем скрипт tcng в правила tc:
Собственно все. Не мудрствуя лукаво мы решили поставленную задачу.
Послесловие.
Естественно, что правила в tcng можно/нужно рисовать свои условия - они индивидуальны для каждого.
Этот пример носят лишь характер "для справки" и способствуют систематизации некоторых знаний :)
Задача, для простых конфигураций, состоит из двух этапов решения.
В качестве препроцессора для формирования tc будем использовать tcng. Категорически советую общественности наконец обратить внимание на этот замечательный инструментарий.
Как правило задача ограничить ширину канала из Интернета к локальным хостам не вызывает особых проблем, ведь этот трафик для сервера, по отношению к клиентским хостам, определяется как egress. В основном "мучения" наступают когда надо ограничить ширину канала из локалки в Интернет. Ниже мы постараемся решить и эту небольшую проблему.
Вводные данные.
Пусть ISP на eth0 - 100Мбит/с, и на нём поднимается ppp0. Пропускная способность ppp0 - 1Мбит/с . Локалка eth1 - 100Мбит/с.
Предположим, что ip адрес выданный провайдером на ppp0 - 100.100.100.100, а на eth1 поднят адрес 10.100.1.1/24. В локальной сети есть четыре привилегированных адреса (10.100.1.254, 10.100.1.253, 10.100.1.252 и 10.100.1.251) на которых поровну делится половина канала в Интернет (512Кбит/с по 128Кбит/с на каждый хост), остальные хосты в сети работают на второй половине канала (512Кбит/с) и нас особо не интересует как они между собой поделят эту скорость.
Первый этап решения.
Описываем правила iptables для трафика приходящего к нам из локалки и уходящий в Интернет:
Код:
*mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] [0:0] -A PREROUTING -s 10.100.1.254/32 -j MARK --set-xmark 1001 [0:0] -A PREROUTING -s 10.100.1.254/32 -j RETURN [0:0] -A PREROUTING -s 10.100.1.253/32 -j MARK --set-xmark 2002 [0:0] -A PREROUTING -s 10.100.1.253/32 -j RETURN [0:0] -A PREROUTING -s 10.100.1.252/32 -j MARK --set-xmark 3003 [0:0] -A PREROUTING -s 10.100.1.252/32 -j RETURN [0:0] -A PREROUTING -s 10.100.1.251/32 -j MARK --set-xmark 4004 [0:0] -A PREROUTING -s 10.100.1.251/32 -j RETURN COMMIT
Дальше, рисуем скрипт для tcng:
Код:
#define IFACE0 ppp0
#define LOCALRT 102400
#define RATE 1024
#define R2Q 7
$rate01 = (RATE/2)/4;
$rate02 = (RATE/2)/4;
$rate03 = (RATE/2)/4;
$rate04 = (RATE/2)/4;
$rate_other = RATE/2;
dev IFACE0 {
egress {
class (<$mark01>) if meta_nfmark==1001;
class (<$mark02>) if meta_nfmark==2002;
class (<$mark03>) if meta_nfmark==3003;
class (<$mark04>) if meta_nfmark==4004;
class (<$low>) if 1;
htb ( rate LOCALRT kbps, r2q R2Q ) {
class ( rate RATE kbps ) {
$mark01 = class ( rate $rate01 kbps ) { sfq(); }
$mark02 = class ( rate $rate02 kbps ) { sfq(); }
$mark03 = class ( rate $rate03 kbps ) { sfq(); }
$mark04 = class ( rate $rate04 kbps ) { sfq(); }
$low = class ( rate $rate_other kbps ) { sfq(); }
}
}
}
}Код:
$ tcng -r linuxforum.ru-topic-79544.ppp0.tcc tc qdisc del dev ppp0 root tc qdisc del dev ppp0 ingress # ================================ Device ppp0 ================================ tc qdisc add dev ppp0 handle 1:0 root dsmark indices 8 default_index 0 tc qdisc add dev ppp0 handle 2:0 parent 1:0 htb r2q 7 tc class add dev ppp0 parent 2:0 classid 2:1 htb rate 128000bps tc class add dev ppp0 parent 2:1 classid 2:2 htb rate 16000bps tc qdisc add dev ppp0 handle 3:0 parent 2:2 sfq tc class add dev ppp0 parent 2:1 classid 2:3 htb rate 16000bps tc qdisc add dev ppp0 handle 4:0 parent 2:3 sfq tc class add dev ppp0 parent 2:1 classid 2:4 htb rate 16000bps tc qdisc add dev ppp0 handle 5:0 parent 2:4 sfq tc class add dev ppp0 parent 2:1 classid 2:5 htb rate 16000bps tc qdisc add dev ppp0 handle 6:0 parent 2:5 sfq tc class add dev ppp0 parent 2:1 classid 2:6 htb rate 64000bps tc qdisc add dev ppp0 handle 7:0 parent 2:6 sfq tc filter add dev ppp0 parent 2:0 protocol all prio 1 tcindex mask 0x7 shift 0 tc filter add dev ppp0 parent 2:0 protocol all prio 1 handle 5 tcindex classid 2:6 tc filter add dev ppp0 parent 2:0 protocol all prio 1 handle 4 tcindex classid 2:5 tc filter add dev ppp0 parent 2:0 protocol all prio 1 handle 3 tcindex classid 2:4 tc filter add dev ppp0 parent 2:0 protocol all prio 1 handle 2 tcindex classid 2:3 tc filter add dev ppp0 parent 2:0 protocol all prio 1 handle 1 tcindex classid 2:2 tc filter add dev ppp0 parent 1:0 protocol all prio 1 handle 1001 fw classid 1:1 tc filter add dev ppp0 parent 1:0 protocol all prio 1 handle 2002 fw classid 1:2 tc filter add dev ppp0 parent 1:0 protocol all prio 1 handle 3003 fw classid 1:3 tc filter add dev ppp0 parent 1:0 protocol all prio 1 handle 4004 fw classid 1:4 tc filter add dev ppp0 parent 1:0 protocol all prio 2 u32 match u32 0x0 0x0 at 0 classid 1:5
Второй этап решения.
Рисуем скрипт tcng для eth1:
Код:
#define IFACE0 eth1
#define LOCALRT 102400
#define RATE 1024
#define R2Q 7
#define MY_IP 10.100.1.1
$rate01 = (RATE/2)/4;
$rate02 = (RATE/2)/4;
$rate03 = (RATE/2)/4;
$rate04 = (RATE/2)/4;
$rate_other = RATE/2;
$localrate = LOCALRT-RATE;
dev IFACE0 {
egress {
class (<$local>) if ip_src == MY_IP && ip_dst/24 == 10.100.1.0;
class (<$mark01>) if ip_dst == 10.100.1.254;
class (<$mark02>) if ip_dst == 10.100.1.253;
class (<$mark03>) if ip_dst == 10.100.1.252;
class (<$mark04>) if ip_dst == 10.100.1.251;
class (<$low>) if ip_dst/24 == 10.100.1.0;
htb ( rate LOCALRT kbps, r2q R2Q ) {
class ( rate $localrate kbps ) {
$local = class ( rate $localrate kbps ) { sfq(); }
}
class ( rate RATE kbps ) {
$mark01 = class ( rate $rate01 kbps ) { sfq(); }
$mark02 = class ( rate $rate02 kbps ) { sfq(); }
$mark03 = class ( rate $rate03 kbps ) { sfq(); }
$mark04 = class ( rate $rate04 kbps ) { sfq(); }
$low = class ( rate $rate_other kbps ) { sfq(); }
}
}
}
}Код:
$ tcng -r linuxforum.ru-topic-79544.eth1.tcc tc qdisc del dev eth1 root tc qdisc del dev eth1 ingress # ================================ Device eth1 ================================ tc qdisc add dev eth1 handle 1:0 root dsmark indices 8 default_index 0 tc qdisc add dev eth1 handle 2:0 parent 1:0 htb r2q 7 tc class add dev eth1 parent 2:0 classid 2:1 htb rate 12672000bps tc class add dev eth1 parent 2:1 classid 2:2 htb rate 12672000bps tc qdisc add dev eth1 handle 3:0 parent 2:2 sfq tc class add dev eth1 parent 2:0 classid 2:3 htb rate 128000bps tc class add dev eth1 parent 2:3 classid 2:4 htb rate 16000bps tc qdisc add dev eth1 handle 4:0 parent 2:4 sfq tc class add dev eth1 parent 2:3 classid 2:5 htb rate 16000bps tc qdisc add dev eth1 handle 5:0 parent 2:5 sfq tc class add dev eth1 parent 2:3 classid 2:6 htb rate 16000bps tc qdisc add dev eth1 handle 6:0 parent 2:6 sfq tc class add dev eth1 parent 2:3 classid 2:7 htb rate 16000bps tc qdisc add dev eth1 handle 7:0 parent 2:7 sfq tc class add dev eth1 parent 2:3 classid 2:8 htb rate 64000bps tc qdisc add dev eth1 handle 8:0 parent 2:8 sfq tc filter add dev eth1 parent 2:0 protocol all prio 1 tcindex mask 0x7 shift 0 tc filter add dev eth1 parent 2:0 protocol all prio 1 handle 6 tcindex classid 2:8 tc filter add dev eth1 parent 2:0 protocol all prio 1 handle 5 tcindex classid 2:7 tc filter add dev eth1 parent 2:0 protocol all prio 1 handle 4 tcindex classid 2:6 tc filter add dev eth1 parent 2:0 protocol all prio 1 handle 3 tcindex classid 2:5 tc filter add dev eth1 parent 2:0 protocol all prio 1 handle 2 tcindex classid 2:4 tc filter add dev eth1 parent 2:0 protocol all prio 1 handle 1 tcindex classid 2:2 tc filter add dev eth1 parent 1:0 protocol all prio 1 u32 match u32 0xa640101 0xffffffff at 12 match u32 0xa640100 0xffffff00 at 16 classid 1:1 tc filter add dev eth1 parent 1:0 protocol all prio 1 u32 match u32 0xa6401fe 0xffffffff at 16 classid 1:2 tc filter add dev eth1 parent 1:0 protocol all prio 1 u32 match u32 0xa6401fd 0xffffffff at 16 classid 1:3 tc filter add dev eth1 parent 1:0 protocol all prio 1 u32 match u32 0xa6401fc 0xffffffff at 16 classid 1:4 tc filter add dev eth1 parent 1:0 protocol all prio 1 u32 match u32 0xa6401fb 0xffffffff at 16 classid 1:5 tc filter add dev eth1 parent 1:0 protocol all prio 1 u32 match u32 0xa640100 0xffffff00 at 16 classid 1:6
Послесловие.
Естественно, что правила в tcng можно/нужно рисовать свои условия - они индивидуальны для каждого.
Этот пример носят лишь характер "для справки" и способствуют систематизации некоторых знаний :)
О параметрах QoS. Значения dscp. (практически для Linux)
Подводя итоги к статье "Implementing Quality of Service Policies with DSCP" и скрещивая "ёжика с бегемотом", т.е. Linux с Cisco, хочу облегчить (?) труд последующим поколениям (да и себе, на случай "если забуду").
Вот некоторые сводные таблицы по терминам и значениям.
ToS Byte
Delay, Throughput and Reliability—three bits (T2 to T0)
CU (Currently Unused)—two bits(CU1-CU0)
DiffServ Field
ECN—two bits
Подводя итог всему вышесказанному:
Вот некоторые сводные таблицы по терминам и значениям.
ToS Byte
Код:
┌────┬────┬────┬────┬────┬────┬─────┬─────┐ │ 1 │ 0 │ 1 │ T2 │ T1 │ T0 │ CU2 │ CU0 │ └────┴────┴────┴────┴────┴────┴─────┴─────┘IP precedence—three bits (P2 to P0)
Delay, Throughput and Reliability—three bits (T2 to T0)
CU (Currently Unused)—two bits(CU1-CU0)
Код:
┌────┬────┬────┬────┬────┬────┬─────┬─────┐ │DS5 │DS4 │DS3 │DS2 │DS1 │DS0 │ ECN │ ECN │ └────┴────┴────┴────┴────┴────┴─────┴─────┘DSCP—six bits (DS5-DS0)
ECN—two bits
Код:
┌────────────┬────────────────────────────────┐ │ Precedence │ Description │ │ Level │ │ ├────────────┼────────────────────────────────┤ │ 7 │ Stays the same (link layer and │ │ │ routing protocol keep alive) │ ├────────────┼────────────────────────────────┤ │ 6 │ Stays the same (used for IP │ │ │ routing protocols) │ ├────────────┼────────────────────────────────┤ │ 5 │ Express Forwarding (EF) │ ├────────────┼────────────────────────────────┤ │ 4 │ Class 4 │ ├────────────┼────────────────────────────────┤ │ 3 │ Class 3 │ ├────────────┼────────────────────────────────┤ │ 2 │ Class 2 │ ├────────────┼────────────────────────────────┤ │ 1 │ Class 1 │ ├────────────┼────────────────────────────────┤ │ 0 │ Best effort │ └────────────┴────────────────────────────────┘
Код:
┌────────┬────────┬────────┬────────┬────────┐ │ Drop │ Class 1│ Class 2│ Class 3│ Class 4│ │ │ CS1 │ CS2 │ CS3 │ CS4 │ ├────────┼────────┼────────┼────────┼────────┤ │ Low │ AF11 │ AF21 │ AF31 │ AF41 │ │ │ DSCP 10│ DSCP 18│ DSCP 26│ DSCP 34│ │ │ 001010 │ 010010 │ 011010 │ 100010 │ │ │ 0x0a │ 0x12 │ 0x1a │ 0x22 │ ├────────┼────────┼────────┼────────┼────────┤ │ Medium │ AF12 │ AF 22 │ AF32 │ AF42 │ │ │ DSCP 12│ DSCP 20│ DSCP 28│ DSCP 36│ │ │ 001100 │ 010100 │ 011100 │ 100100 │ │ │ 0x0c │ 0x14 │ 0x1c │ 0x24 │ ├────────┼────────┼────────┼────────┼────────┤ │ High │ AF13 │ AF23 │ AF33 │ AF43 │ │ │ DSCP 14│ DSCP 22│ DSCP 30│ DSCP 38│ │ │ 001110 │ 010110 │ 011110 │ 100110 │ │ │ 0x0e │ 0x16 │ 0x1e │ 0x26 │ └────────┴────────┴────────┴────────┴────────┘
Код:
--set-dscp-class af11 Match packets with AF11 dscp (001010), --set-dscp 0x0a --set-dscp-class af12 Match packets with AF12 dscp (001100), --set-dscp 0x0c (dec 12) --set-dscp-class af13 Match packets with AF13 dscp (001110), --set-dscp 0x0e (dec 14) --set-dscp-class af21 Match packets with AF21 dscp (010010), --set-dscp 0x12 (dec 18) --set-dscp-class af22 Match packets with AF22 dscp (010100), --set-dscp 0x14 (dec 20) --set-dscp-class af23 Match packets with AF23 dscp (010110), --set-dscp 0x16 (dec 22) --set-dscp-class af31 Match packets with AF31 dscp (011010), --set-dscp 0x1a (dec 26) --set-dscp-class af32 Match packets with AF32 dscp (011100), --set-dscp 0x1c (dec 28) --set-dscp-class af33 Match packets with AF33 dscp (011110), --set-dscp 0x1e (dec 30) --set-dscp-class af41 Match packets with AF41 dscp (100010), --set-dscp 0x22 (dec 34) --set-dscp-class af42 Match packets with AF42 dscp (100100), --set-dscp 0x24 (dec 36) --set-dscp-class af43 Match packets with AF43 dscp (100110), --set-dscp 0x26 (dec 38) --set-dscp-class cs0 Match packets with default dscp (000000), --set-dscp 0x00 (dec 00) --set-dscp-class cs1 Match packets with CS1(precedence 1) dscp (001000), --set-dscp 0x08 (dec 08) --set-dscp-class cs2 Match packets with CS2(precedence 2) dscp (010000), --set-dscp 0x10 (dec 16) --set-dscp-class cs3 Match packets with CS3(precedence 3) dscp (011000), --set-dscp 0x18 (dec 24) --set-dscp-class cs4 Match packets with CS4(precedence 4) dscp (100000), --set-dscp 0x20 (dec 32) --set-dscp-class cs5 Match packets with CS5(precedence 5) dscp (101000), --set-dscp 0x28 (dec 40) --set-dscp-class cs6 Match packets with CS6(precedence 6) dscp (110000), --set-dscp 0x30 (dec 48) --set-dscp-class cs7 Match packets with CS7(precedence 7) dscp (111000), --set-dscp 0x38 (dec 56) --set-dscp-class ef Match packets with EF dscp (101110), --set-dscp 0x2e (dec 46)
Задействуем функционал QoS (ToS) (решение для Linux)
Собственно, в связи с тем, что сеть Датасвит поддерживает функционал QoS:
Попытаться реализовать "под себя" этот функционал можно переопределив значения поля DSCP, через iptables в таблице mangle:
Если у Вас всего один компьютер, то определять цепочку FORWARD не нужно.
Ну и, естественно, что значения поля dscp и условия для его установки могут отличаться от предложенных выше. На вкус и цвет, как говориться... ;) Только помните, что если весь Ваш поток "закинуть" в EF, то он перестанет быть "гарантированным", надеюсь понимаете почему? ;)
Отдельно хочется отметить, что инструкция -j DSCP --set-dscp не является терминирующей, как DROP, ACCEPT или REJECT, поэтому наиболее общие условия для установки DSCP необходимо описывать раньше, чем частные решения.
PS: Ну и опять таки - это не панацея от всех бед, а лишь один из кирпичиков в Вашем тетрисе :)
Цитата:
DSCP to 802.1p IP TOS Precedence to Priority Queue Mapping 802.1P Priority to Priority Queue Mapping TOS/Differentiated Service Enable Flow Control Port Priority |
Код:
*mangle :PREROUTING ACCEPT [178941:94642599] :INPUT ACCEPT [121227:85510027] :FORWARD ACCEPT [18238:2053107] :OUTPUT ACCEPT [126752:85537218] :POSTROUTING ACCEPT [133655:86846914] [0:0] -A INPUT -j DSCP --set-dscp 0x0a [0:0] -A INPUT -p gre -j DSCP --set-dscp 0x2e [0:0] -A INPUT -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a [0:0] -A INPUT -p tcp -m tcp --dport 80 -j DSCP --set-dscp 0x22 [0:0] -A INPUT -p tcp -m tcp --dport 22 -j DSCP --set-dscp 0x24 [0:0] -A FORWARD -j DSCP --set-dscp 0x0a [0:0] -A FORWARD -j DSCP --set-dscp 0x0a [0:0] -A FORWARD -p gre -j DSCP --set-dscp 0x2e [0:0] -A FORWARD -p gre -j DSCP --set-dscp 0x2e [0:0] -A FORWARD -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a [0:0] -A FORWARD -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a [0:0] -A FORWARD -p tcp -m tcp --dport 80 -j DSCP --set-dscp 0x22 [0:0] -A FORWARD -p tcp -m tcp --sport 80 -j DSCP --set-dscp 0x22 [0:0] -A FORWARD -p tcp -m tcp --dport 8085 -j DSCP --set-dscp 0x2e [0:0] -A FORWARD -p tcp -m tcp --sport 8085 -j DSCP --set-dscp 0x2e [0:0] -A FORWARD -p tcp -m tcp --dport 22 -j DSCP --set-dscp 0x24 [0:0] -A FORWARD -p tcp -m tcp --sport 22 -j DSCP --set-dscp 0x24 [0:0] -A OUTPUT -j DSCP --set-dscp 0x0a [0:0] -A OUTPUT -p gre -j DSCP --set-dscp 0x2e [0:0] -A OUTPUT -p icmp -m icmp --icmp-type any -j DSCP --set-dscp 0x1a [0:0] -A OUTPUT -p tcp -m tcp --sport 80 -j DSCP --set-dscp 0x22 [0:0] -A OUTPUT -p tcp -m tcp --sport 22 -j DSCP --set-dscp 0x24 [0:0] -A OUTPUT -p udp -m udp --sport 4569 -j DSCP --set-dscp 0x2e [0:0] -A OUTPUT -p udp -m udp --sport 10000:20000 -j DSCP --set-dscp 0x2e [0:0] -A OUTPUT -p udp -m udp --sport 5060 -j DSCP --set-dscp 0x18
Ну и, естественно, что значения поля dscp и условия для его установки могут отличаться от предложенных выше. На вкус и цвет, как говориться... ;) Только помните, что если весь Ваш поток "закинуть" в EF, то он перестанет быть "гарантированным", надеюсь понимаете почему? ;)
Отдельно хочется отметить, что инструкция -j DSCP --set-dscp не является терминирующей, как DROP, ACCEPT или REJECT, поэтому наиболее общие условия для установки DSCP необходимо описывать раньше, чем частные решения.
PS: Ну и опять таки - это не панацея от всех бед, а лишь один из кирпичиков в Вашем тетрисе :)
Підписатися на:
Дописи (Atom)