Такой вот нюанс... Биллинг автоматически генерирует конфиг шейпера и заливает его на сервер (Debian Linux). Имя файла конфига "shaperconfig". Выглядит он следующим образом:--------------------------------------------------------------------------
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -N SHAPER-OUT
iptables -t mangle -I POSTROUTING -o eth2 -j SHAPER-OUT
iptables -t mangle -I POSTROUTING -o eth3 -j SHAPER-OUT
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100Mbit burst 131072
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100Mbit burst 131072
tc qdisc add dev eth0 parent 1:10 sfq perturb 10
tc qdisc del dev eth2 root
tc qdisc add dev eth2 root handle 1:0 htb default 10
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 100Mbit burst 131072
tc class add dev eth2 parent 1:1 classid 1:10 htb rate 100Mbit burst 131072
tc qdisc add dev eth2 parent 1:10 sfq perturb 10
tc qdisc del dev eth3 root
tc qdisc add dev eth3 root handle 1:0 htb default 10
tc class add dev eth3 parent 1:0 classid 1:1 htb rate 100Mbit burst 131072
tc class add dev eth3 parent 1:1 classid 1:10 htb rate 100Mbit burst 131072
tc qdisc add dev eth3 parent 1:10 sfq perturb 10
# Adm_Backup
iptables -t mangle -A SHAPER-OUT -s 10.13.0.5 -j MARK --set-mark 0x1001
tc class add dev eth0 parent 1:1 classid 1:1001 htb rate 2048Kbit burst 25600
tc class add dev eth2 parent 1:1 classid 1:1001 htb rate 2048Kbit burst 25600
tc class add dev eth3 parent 1:1 classid 1:1001 htb rate 2048Kbit burst 25600
tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dst 10.13.0.5 classid 1:1001
tc filter add dev eth2 parent 1:0 protocol ip handle 0x1001 fw classid 1:1001
tc filter add dev eth3 parent 1:0 protocol ip handle 0x1001 fw classid 1:1001
----------------------------------------------------------------------------
На сервере по крону запускается скрипт, который смотрит не появился ли новый конфиг и если находит его то исполняет. Выглядит так:
----------------------------------------------------------------------------
#!/bin/sh
CFG=shaperconfig
CFGLAST=shaperconfig.last
LOG=shaperconfig.log
HOME=/home/script/shaper
cd $HOME
if [ -e $CFG ] ; then
rm $CFGLAST
mv $CFG $CFGLAST
if [ -e $CFGLAST ] ; then
rm $LOG
./$CFGLAST > $LOG
fi
fi
----------------------------------------------------------------------------
Скрипт писал первый раз в жизни :)
Скрипт исполняется нормально, запускает скрипт с конфигом шейпера, но почему-то правила конфига не полностью применяются. Если у пользователя в новом конфиге изменилась максимальная скорость - она не применяется. Хотя если зайти через консоль и вручную запустить последний файл конфига всё применяется нормально.
Скрипт по крону запускается от рута.
Помогите пожалуйста разобраться.