Здрасьте. Такая проблема:
Стоит VPN сервер PPTP. Через него юзеры ходят в инет. Юзеров много. около 150 человек.
При поднятии PPP тоннеля срабатывает скрипт шейпинга. Все путем. Все режет. Но не всегда. =/
В скрипте команда шейпинга:
tc qdisc add dev ${IFNAME} root tbf rate ${RATE}kbit burst ${BURST}kb latency 70ms minburst 1540 >>${LOG} 2>&1
Все параметры передаются 100%. в логе есть. проверял.
Суть ошибки - Не всегда срабатывает команда шейпинга. В логах пишет ошибку RTNETLINK answers: File exists.
И юзер выходит в инет без обрезания канала.
подскажите, почему так происходит и как от этого избавиться. =/
VPN + шейпинг (проблема)
Модераторы: SLEDopit, Модераторы разделов
-
Pchol
- Сообщения: 88
Re: VPN + шейпинг
У вас когда интерфейс клиента отключается выполняется скрипт на убирание правила из шейпера ?
... Весь ужас заключается в том что предают только свои ...
-
br41n
- Сообщения: 31
- ОС: CentOS 5
Re: VPN + шейпинг
шейпинг ставится на интерфейс. Пропадает интерфейс, пропадает ограничение. Я так понимаю. Поэтому скрипт на убирание не нужен. по крайней в логах было бы гораздо больше ошибок при интенсивном подключении/отключении.
-
karpen
- Сообщения: 11
- ОС: Альт Рабочая станция 9.2
Re: VPN + шейпинг
Это проблема с роутингом. Такая ошибка выскакивает когда пытаешься добавить уже существующие правила роутинга, скрипт дублирует одни и те же маршруты?
-
br41n
- Сообщения: 31
- ОС: CentOS 5
Re: VPN + шейпинг
Код: Выделить всё
#!/bin/bash
# Fork here and return immediately to make script asynchronous,
# because agent shouldn't wait too long...
if [ -z "${RESPAWN}" ]; then
export RESPAWN=1
"$0" "$1" "$2" "$3" "$4" "$5" "$6" &
exit 0
fi
LOG='/home/user/shaper.log'
# wait if-up event until timeout...
TIMEOUT=10
LOGIN=$2
IP=$3
RATE=$4
test -z "$IP" -o -z "$RATE" && exit 0
i=0;
while [ ${i} -lt ${TIMEOUT} ]; do
sleep 1
IFNAME=$(ifconfig | grep -B1 $IP | head -n1 | awk {'print $1'})
if [ -n "${IFNAME}" ]; then
echo `date`": Setting rate limit rule ${RATE}kbit on ${IFNAME} (${LOGIN} ---- ${IP})" >>${LOG}
BURST=$(( ${RATE}/80+2))
sleep 1
tc qdisc add dev ${IFNAME} root tbf rate ${RATE}kbit burst ${BURST}kb latency 70ms minburst 1540 >>${LOG} 2>&1
sleep 1
exit 0
fi
let i=i+1
sleep 1
done
echo `date`": Give up waiting for interface with IP=${IP} ($2)" >>${LOG}весь скрипт.
-
karpen
- Сообщения: 11
- ОС: Альт Рабочая станция 9.2
Re: VPN + шейпинг
Предположительно, ошибка происходит в
при попытке добавить уже добавленный интерфейс.
Возможно, клиент запускает одновременно два pptp соединения, но это предположение.
Для большей информации, добавьте в лог больше отладочной информации: перед tc написать echo "before tc" >> mylog.txt и прочитать текущие настройки tc (маршруты, информацию об интерфейсах и т.п.), и в тот же лог перенаправить, потом снова echo "after tc " >> в тот же лог и снова сграбить текущие настройки.
Код: Выделить всё
tc qdisc add dev ${IFNAME}при попытке добавить уже добавленный интерфейс.
Возможно, клиент запускает одновременно два pptp соединения, но это предположение.
Для большей информации, добавьте в лог больше отладочной информации: перед tc написать echo "before tc" >> mylog.txt и прочитать текущие настройки tc (маршруты, информацию об интерфейсах и т.п.), и в тот же лог перенаправить, потом снова echo "after tc " >> в тот же лог и снова сграбить текущие настройки.