zrob klase interactive w niceshaperze (o wartosi ceil np. 5kbps)
i method na 'mark' zamiast 'imq'
stworz plik: /etc/iptables/mark
iptables -t mangle -F PREROUTING
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p all -i eth0 -j MARK --set-mark 0x800
for dport in `cat /etc/iptables/ports.tcp`;do
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p tcp -i eth0 --dport $dport -j niceshaper_ul
done
for dport in `cat /etc/iptables/ports.udp`;do
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p udp -i eth0 --dport $dport -j niceshaper_ul
done
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p all -i eth0 -m length --length :128 -j niceshaper_ul
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -i eth0 -p icmp -j niceshaper_ul
stworz pliki ports.tcp i ports.udp i umiesc w nim porty, ktore maja miec priorytet:
80
443
22
21
25
53
110
8080
27015
27016
27017
20
7000
28960
28961
28962
28963
28964
119
3832
8000
8001
8074
8350
9078
Potem zmien nazwe pliku /usr/bin/niceshaper na np. nices
W miejsce pliku niceshaper stworz skrypt:
!!! UWAGA na 4 linijke. Musi ona wskazywac na pierwszy skrypt w tym poscie !!!
#!/bin/bash
start() {
/usr/bin/nices start
/etc/iptables/mark
}
stop() {
/usr/bin/nices stop
iptables -t mangle -F PREROUTING
}
stats() {
/usr/bin/nices stats
}
case "$1" in
start)
start
;;
stop)
stop
;;
stats)
stats
;;
restart)
stop
sleep 1
start
;;
*)
echo "Użycie: $0 {start|stop|restart|stats}"
esac
exit 0
Teraz za kazdym uruchomienie niceshaper (badz jego restarcie) bedzie kasowany normalny wpis, a zamiast niego bedzie ustawianie marku na 0x800, przez co wszystkie pakiety uzyskaja taki mark. Pozniej iptables sprawdza, czy pakiet 'idzie' to uprzywilejowanego portu i jesli tak, to kieruje go do niceshaper_ul, gdzie uzyska on mark odpowiedni dla danego usera. Wtedy pakiety do portu 80 w necie pojda przez klasy userow, a pakiety do innych portow (np. do emula jakiegos goscia w necie) pojda przez klase ograniczona do 5KB/s.
Zeby przystosowac to do IMQ trzeba zmienic '-j MARK --set-mark 0x800' i '-j niceshaper_ul' na odpowiednie TO DEV