VPN + шейпинг (проблема)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

br41n
Сообщения: 31
ОС: CentOS 5

VPN + шейпинг

Сообщение br41n »

Здрасьте. Такая проблема:

Стоит 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.
И юзер выходит в инет без обрезания канала.
подскажите, почему так происходит и как от этого избавиться. =/
Спасибо сказали:
Pchol
Сообщения: 88

Re: VPN + шейпинг

Сообщение Pchol »

У вас когда интерфейс клиента отключается выполняется скрипт на убирание правила из шейпера ?
... Весь ужас заключается в том что предают только свои ...
Спасибо сказали:
br41n
Сообщения: 31
ОС: CentOS 5

Re: VPN + шейпинг

Сообщение br41n »

Pchol писал(а): ↑
11.12.2008 16:00
У вас когда интерфейс клиента отключается выполняется скрипт на убирание правила из шейпера ?


шейпинг ставится на интерфейс. Пропадает интерфейс, пропадает ограничение. Я так понимаю. Поэтому скрипт на убирание не нужен. по крайней в логах было бы гораздо больше ошибок при интенсивном подключении/отключении.
Спасибо сказали:
karpen
Сообщения: 11
ОС: Альт Рабочая станция 9.2

Re: VPN + шейпинг

Сообщение karpen »

Это проблема с роутингом. Такая ошибка выскакивает когда пытаешься добавить уже существующие правила роутинга, скрипт дублирует одни и те же маршруты?
Спасибо сказали:
br41n
Сообщения: 31
ОС: CentOS 5

Re: VPN + шейпинг

Сообщение br41n »

Код: Выделить всё

#!/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 + шейпинг

Сообщение karpen »

Предположительно, ошибка происходит в

Код: Выделить всё

tc qdisc add dev ${IFNAME}

при попытке добавить уже добавленный интерфейс.
Возможно, клиент запускает одновременно два pptp соединения, но это предположение.
Для большей информации, добавьте в лог больше отладочной информации: перед tc написать echo "before tc" >> mylog.txt и прочитать текущие настройки tc (маршруты, информацию об интерфейсах и т.п.), и в тот же лог перенаправить, потом снова echo "after tc " >> в тот же лог и снова сграбить текущие настройки.
Спасибо сказали: