Перейти до

Роутинг и Старгейзер


Рекомендованные сообщения

Хочу поставить себе тарелку для уменьшения стоимости траффика. Но возникает одна проблема: у меня есть клиенты, которые подключились для того чтобы играть по батлнету. Я их устраиваю более чем (пинг до европейского сервера меньше 70), но если поставлю тарелку и буду через нее всех пускать в инет, то естественно возрастут задержки и начнутся жалобы. Что хочется: создать тарифный план чисто для геймеров. При подключении абонента проверяется его тарифный план и в зависимости от него перестраивается таблица маршрутизации: если т/п обычный - пускаем через тарелку, если геймерский - то по земле. Как это сделать и реально ли вообще?

Ссылка на сообщение
Поделиться на других сайтах

А если такое решение:

прописать роутинг до ip адресов игровых серверов статически, чтобы шел прямо.

Т.е.

route add адрес_игрового_сервера адрес_наземного_шлюза

Ссылка на сообщение
Поделиться на других сайтах

Имхо XoRe предложил самое разумное решение.

 

На крайняк, у тебя в OnConnect передается имя юзера, зная его, можно выдрать из настроек юзера имя тарифа, сравнить его с геймерским тарифом и перестроить маршрутизацию

Ссылка на сообщение
Поделиться на других сайтах

Спасибо за помощь. Я всё понял. Но прописывать роутинг до каждого сервера не стоит (вдруг кто-то будет в квэйк играть или в контру, а серверов там очень много), прийдется добавлять в ОнКоннект условие, в котором будет проверяться тарифный план.

Ссылка на сообщение
Поделиться на других сайтах

Я делал так:

 

настраиваем роутинг:

echo 100 dsl_table >> /etc/iproute2/rt_tables

ip rule add fwmark 10 preference 200 table dsl_table

ip route add default via "шлюз провайдера по земле" dev eth1 table dsl_table

ip route flush cache

(дефолтовый route в основной таблице роутинга при таких настройках должен идти на спутник)

(ядро должно поддерживать FW mark(CONFIG_IP_ROUTE_FWMARK) и многотабличный роутинг(CONFIG_IP_MULTIPLE_TABLES) и возможно ещё чего-то чего я не помню)

 

в скрипте OnConnect добавляем:

INC="_dsl"

 

EX=`echo $1 | grep "$INC"`

if [ -n "$EX" ]; then

iptables -t mangle -A PREROUTING -s $2 -d ! 192.168.1.0/24 -j MARK --set-mark 0x10

fi

 

в скрипте OnDisconnect аналогичным образом удаляем правило

 

 

теперь пользователи чье имя содержит строку "_dsl" пойдут по земле.

В принципе можно это делать и по имени тарифа, но для этого нужно править код СГ чтоб в скрипт передавалось имя тарифа

Ссылка на сообщение
Поделиться на других сайтах
В принципе можно это делать и по имени тарифа, но для этого нужно править код СГ чтоб в скрипт передавалось имя тарифа

login=$2

INC="_dsl"

 

EX=`grep "tariff" /var/stargazer/users/$login/conf | grep $INC`

 

if [ -n "$EX" ]; then

.......

 

 

И не надо править код стг :)

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...