Титла: iptables и DSCP
Публикувано от: justme в Dec 12, 2005, 13:13
Здравейте, опитвам се да "маркирам" трафика като локален+peer, български и международен. след известно "мъдрене" стигнах до следният вариант, който не работи много адекватно (машината се товари много яко): Примерен код | #!/bin/bash
LOC="0x00" BUL="0x02" INT="0x04"
CAT=/usr/bin/cat IPT=/usr/local/sbin/iptables
BGPEERLST="/etc/bg.lst" VNPEERLST="/etc/peer.lst" VNPEERLSTADD="/etc/peer.lst.add"
CHN="DSCPMARK"
$IPT -t mangle -F $CHN &> /dev/null $IPT -t mangle -X $CHN &> /dev/null $IPT -t mangle -N $CHN &> /dev/null
$IPT -t mangle -A $CHN -s 192.168.0.0/16 -d 192.168.0.0/16 -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -s 192.168.0.0/16 -d 192.168.0.0/16 -j RETURN $IPT -t mangle -A $CHN -s 192.168.0.0/16 -d XX.XX.XX.0/24 -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -s 192.168.0.0/16 -d XX.XX.XX.0/24 -j RETURN $IPT -t mangle -A $CHN -d 192.168.0.0/16 -s XX.XX.XX.0/24 -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -d 192.168.0.0/16 -s XX.XX.XX.0/24 -j RETURN $IPT -t mangle -A $CHN -s XX.XX.XX.0/24 -d XX.XX.XX.0/24 -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -s XX.XX.XX.0/24 -d XX.XX.XX.0/24 -j RETURN
$IPT -t mangle -A $CHN -i ppp+ -o ppp+ -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -i ppp+ -o ppp+ -j RETURN $IPT -t mangle -A $CHN -i ppp+ -o ethX -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -i ppp+ -o ethX -j RETURN $IPT -t mangle -A $CHN -o ppp+ -i ethX -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -o ppp+ -i ethX -j RETURN
for IP in `$CAT $VNPEERLSTADD | grep -v ^# && $CAT $VNPEERLST`; do $IPT -t mangle -A $CHN -d $IP -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -d $IP -j RETURN $IPT -t mangle -A $CHN -s $IP -j DSCP --set-dscp $LOC $IPT -t mangle -A $CHN -s $IP -j RETURN done
for NET in `$CAT $BGPEERLST`; do $IPT -t mangle -A $CHN -d $NET -j DSCP --set-dscp $BUL $IPT -t mangle -A $CHN -d $NET -j RETURN $IPT -t mangle -A $CHN -s $NET -j DSCP --set-dscp $BUL $IPT -t mangle -A $CHN -s $NET -j RETURN done
$IPT -t mangle -A $CHN -j DSCP --set-dscp $INT $IPT -t mangle -A $CHN -j RETURN
###################################################### $IPT -t mangle -I FORWARD -d XX.XX.XX.0/24 -j DSCPMARK $IPT -t mangle -I FORWARD -s XX.XX.XX.0/24 -j DSCPMARK $IPT -t mangle -I FORWARD -d 192.168.0.0/16 -j DSCPMARK $IPT -t mangle -I FORWARD -s 192.168.0.0/16 -j DSCPMARK
|
и се питах дали има по-лесен (ефективен) начин да се направи това ?
Титла: iptables и DSCP
Публикувано от: VladSun в Dec 12, 2005, 16:12
Виж http://www.linux-bg.org/cgi-bin/ib3/ikonboard.cgi?act=ST;f=10;t=11231за идеи, макар там да е наблегнато повече на маркирането на отделно ИП. С тоя RETURN дето го правиш при откриване на съвпадение след ВСЯКА проверка обаче се получава, че напр. за 100 БГ мрежи ще има трасиране средно на 100 правила. Ако слагаш RETURN през 20 мрежи например, ще имаш средно трасирани правила около 60 
Титла: iptables и DSCP
Публикувано от: justme в Dec 14, 2005, 12:04
ами подсказаха ми за GOTO пач от P-O-M ама неще не съм го подкарал още - при него вместо -j DSCP и после -j RETURN, се използва -g DSCP, т.е. като мине през това правило се връща директно в предходната верига, а не в тази която го вика...
ще тест и ще видим.
|