Portál AbcLinuxu, 4. května 2025 14:56
# --upstream--
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 htb
tc class add dev eth0 parent 1:0 classid 1:1 htb rate ${UPRATE}kbit quantum 1500
tc class add dev eth0 parent 1:1 classid 1:11 htb rate $[${UPRATE}/4]kbit ceil ${UPRATE}kbit quantum 1500
tc class add dev eth0 parent 1:1 classid 1:12 htb rate $[${UPRATE}/4]kbit ceil ${UPRATE}kbit quantum 1500
tc class add dev eth0 parent 1:1 classid 1:13 htb rate $[${UPRATE}/4]kbit ceil ${UPRATE}kbit quantum 1500
tc class add dev eth0 parent 1:1 classid 1:14 htb rate $[${UPRATE}/4]kbit ceil ${UPRATE}kbit quantum 1500
tc qdisc add dev eth0 parent 1:11 handle 11:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 12:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 14:0 sfq perturb 10
# --downstream--
tc qdisc del dev eth2 root
tc qdisc add dev eth2 root handle 1:0 htb
tc class add dev eth2 parent 1:0 classid 1:1 htb rate ${DOWNRATE}kbit quantum 1500
tc class add dev eth2 parent 1:1 classid 1:11 htb rate $[${DOWNRATE}/4]kbit ceil ${DOWNRATE}kbit quantum 1500
tc class add dev eth2 parent 1:1 classid 1:12 htb rate $[${DOWNRATE}/4]kbit ceil ${DOWNRATE}kbit quantum 1500
tc class add dev eth2 parent 1:1 classid 1:13 htb rate $[${DOWNRATE}/4]kbit ceil ${DOWNRATE}kbit quantum 1500
tc class add dev eth2 parent 1:1 classid 1:14 htb rate $[${DOWNRATE}/4]kbit ceil ${DOWNRATE}kbit quantum 1500
tc qdisc add dev eth2 parent 1:11 handle 11:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:12 handle 12:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:13 handle 13:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:14 handle 14:0 sfq perturb 10
# --filtering--
tc filter add dev eth0 parent 1:0 protocol ip handle 1 fw flowid 1:11
tc filter add dev eth0 parent 1:0 protocol ip handle 2 fw flowid 1:12
tc filter add dev eth0 parent 1:0 protocol ip handle 3 fw flowid 1:13
tc filter add dev eth0 parent 1:0 protocol ip handle 4 fw flowid 1:14
tc filter add dev eth2 parent 1:0 protocol ip handle 1 fw flowid 1:11
tc filter add dev eth2 parent 1:0 protocol ip handle 2 fw flowid 1:12
tc filter add dev eth2 parent 1:0 protocol ip handle 3 fw flowid 1:13
tc filter add dev eth2 parent 1:0 protocol ip handle 4 fw flowid 1:14
Potud to bylo jenom zobecnění Tvého skriptu. Důvod, proč to nechodilo, byl ve špatném markování. Musíš si uvědomit, že si shapoval odchozí traffic na eth2 a markoval jsi v prvním kroku všechny pakety forwardované routerem značkou "4", potud je to OK, ale potom jsi markoval jenom příchozí forwardované pakety značkami 1,2,3. To proto, že tam máš podmínku -d, čili cílovou IP. Aby to chodilo, musel bys použít -s. Nicméně pro můj skript je třeba markování rozšířit, pro oba směry, jenom to číslo "4" může zůstat, to platí obecně. Takže za iptables část by pak vypadala takto:
iptables -t mangle -A FORWARD -j MARK --set-mark 4
iptables -t mangle -A FORWARD -i eth0 -d 10.176.0.34 -j MARK --set-mark 1
iptables -t mangle -A FORWARD -i eth0 -d 10.176.0.71 -j MARK --set-mark 2
iptables -t mangle -A FORWARD -i eth0 -d 10.176.0.2 -j MARK --set-mark 3
iptables -t mangle -A FORWARD -o eth0 -s 10.176.0.34 -j MARK --set-mark 1
iptables -t mangle -A FORWARD -o eth0 -s 10.176.0.71 -j MARK --set-mark 2
iptables -t mangle -A FORWARD -o eth0 -s 10.176.0.2 -j MARK --set-mark 3
jinak pomocí
watch -n 1 iptables -t mangle -L -v -n
ověříš markování
a pomocí
watch -n 1 tc -s class show dev eth0
resp.
watch -n 1 tc -s class show dev eth2
ověříš rozhazování paktů do tříd.
zatím
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.