SysCommander
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Перечитал HOWTO по ссылке еще раз. Там речь идет о двух сетевых интерфейсах, между которыми NAT, потому используется FORWARD chain. У меня этого нет. Таким образом правила iptables у меня превратились в: Код: # all traffic coming in on eth0 with the default 20 $IPTABLES -t mangle -A PREROUTING -i eth0 -j MARK --set-mark 20 # udp except port 12222 - mark as 10 $IPTABLES -t mangle -A PREROUTING -i eth0 -p udp ! --sport 12222 -j MARK --set-mark 10 | Что касается 12222 порта: моя главная задача - разделить UDP и TCP, дать UDP повышенный приоритет, потому что FPS игры идут через него. С другой стороны, через 12222-й порт UDP у меня идет DHT для bittorrent, которому повышенный приоритет не нужен, и таким дополнительным условием в правиле я его отсекаю. В целом, согласен, это можно будет сделать и позже. Пусть для чистоты эксперимента этого ограничения не будет. Таким образом правила iptables упрощаются до: Код: # all traffic coming in on eth0 with the default 20 $IPTABLES -t mangle -A PREROUTING -i eth0 -j MARK --set-mark 20 # udp - mark as 10 $IPTABLES -t mangle -A PREROUTING -i eth0 -p udp -j MARK --set-mark 10 | Посмотрел еще раз правила iptables в примере по ссылке. Никаких шестнадцатеричных значений я там не увидел. Да, iptables -L выводит маркеры в шестнадцатеричном представлении, ну и что? 0xa == 10, 0x14 == 20 Код: $ sudo /usr/sbin/iptables -L -t mangle Chain PREROUTING (policy ACCEPT) target prot opt source destination MARK all -- anywhere anywhere MARK set 0x14 MARK udp -- anywhere anywhere MARK set 0xa Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination | Но какая тут связь мне непонятно. Правила фильтрации у меня точно такие как в примере. Контрольная первая строчка в примере: Код: tc filter add dev eth0 parent 1:0 protocol ip handle 10 fw flowid 1:10 | У меня точно так, только значения маркеров отличаются, потому что я делю все только на две части, а не на четыре. В итоге мой скрипт сейчас выглядит полностью так: Код: #!/bin/bash IPTABLES=/usr/sbin/iptables TC=/usr/sbin/tc # All traffic is given an iptables MARK depending on its type: # * 10 for low latency traffic (all UDP traffic) # * 20 anything else # all traffic coming in on eth0 with the default 20 $IPTABLES -t mangle -A PREROUTING -i eth0 -j MARK --set-mark 20 # udp except port 12222 - mark as 10 $IPTABLES -t mangle -A PREROUTING -i eth0 -p udp -j MARK --set-mark 10 # root qdisc $TC qdisc add dev eth0 root handle 1: htb # overall rate limits (1Mbps outgoing) $TC class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit # interactive UDP $TC class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 0 # everything else $TC class add dev eth0 parent 1:1 classid 1:20 htb rate 512kbit ceil 512kbit prio 1 # do fair shaping in each class $TC qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 $TC qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10 # divert traffic marked by iptables into each class $TC filter add dev eth0 parent 1:0 protocol ip handle 10 fw flowid 1:10 $TC filter add dev eth0 parent 1:0 protocol ip handle 20 fw flowid 1:20 | А результат тот же: Код: $ sudo /usr/sbin/tc -s qdisc show qdisc htb 1: dev eth0 root refcnt 2 r2q 10 default 0 direct_packets_stat 3439 Sent 4099401 bytes 3439 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 10: dev eth0 parent 1:10 limit 127p quantum 1514b perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 20: dev eth0 parent 1:20 limit 127p quantum 1514b perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 | Все опять по нулям и опять уперлось в "ЧЯДНТ". | Всего записей: 421 | Зарегистр. 20-07-2007 | Отправлено: 07:33 04-09-2010 | Исправлено: SysCommander, 07:35 04-09-2010 |
|