Portál AbcLinuxu, 17. července 2025 18:53
01# iptables -t mangle -A PREROUTING -p tcp -j CONNMARK --restore-mark 02# iptables -t mangle -A PREROUTING -p tcp -m mark ! --mark 0 -j ACCEPT 03# iptables -t mangle -A PREROUTING -p tcp -m ipp2p --ipp2p -j MARK --set-mark 1 04# iptables -t mangle -A PREROUTING -p tcp -m mark --mark 1 -j CONNMARK --save-markPodle me ti tam chybi to spoledni pravidlo
-j CONNMARK --save-mark
, takze se ti pakety neznackuji (nezapomen, ze musis mit v iptables modul CONNMARK
z patch-o-matic, nebo jadro >= 2.6.10, kde je jiz integrovan a neni treba jadro patchovat). Pokud mas posledni verzi 0.7.4 a vynechas parametr -p tcp
, tak to slape pro TCP i UDP
Jinak tady v sekci Miscellaneous jsou nejaky priklady, podle toho jsem to rozchodil i ja .
RETVAL=0
umask 077
start() {
echo -n $"Startuji shaping p2p: "
IPT="/sbin/iptables"
LANDEV="eth1"
INETDEV="eth0"
MAXDOWNRATE="100kbit"
MINDOWNRATE="50kbit"
MAXUPRATE="50kbit"
MINUPRATE="50kbit"
MANAS="10.30.0.0/255.255.0.0"
###########################################################################################
# P2P shaping
#oznacit p2p paket
$IPT -t mangle -A PREROUTING -m tcp -j CONNMARK --restore-mark
$IPT -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT
$IPT -t mangle -A PREROUTING -m ipp2p --ipp2p -j MARK --set-mark 9999
$IPT -t mangle -A PREROUTING -m mark --mark 9999 -j CONNMARK --save-mark
#
#vytvorit novou tridu na lokalnim NIC
/sbin/tc class add dev $LANDEV parent 1:60 classid 1:9999 htb rate $MINDOWNRATE ceil $MAXDOWNRATE burst 0k
/sbin/tc qdisc add dev $LANDEV parent 1:9999 handle 9999 sfq perturb 10
/sbin/tc filter add dev $LANDEV parent 1:0 protocol ip handle 9999 fw flowid 1:9999
#
#vytvorit novou tridu na inet NIC
/sbin/tc class add dev $INETDEV parent 1:60 classid 1:9999 htb rate $MINUPRATE ceil $MAXUPRATE burst 0k
/sbin/tc qdisc add dev $INETDEV parent 1:9999 handle 9999 sfq perturb 10
/sbin/tc filter add dev $INETDEV parent 1:0 protocol ip handle 9999 fw flowid 1:9999
###########################################################################################
return $RETVAL
}
stop() {
echo -n $"Koncim shaping p2p: "
/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc del dev eth1 root
iptables -t mangle -F
return $RETVAL
}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.