Jump to content

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


Recommended Posts

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

Link to post
Share on other sites

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

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

Т.е.

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

Link to post
Share on other sites

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

 

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

Link to post
Share on other sites

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

Link to post
Share on other sites

Я делал так:

 

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

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" пойдут по земле.

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

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

login=$2

INC="_dsl"

 

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

 

if [ -n "$EX" ]; then

.......

 

 

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...