Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » Два провайдера на одном сервере

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

LikMigTel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня игровой сервер.
К серверу подключено два провайдера.
Debian Linux 5.0
 
Это физический железный сервак, который прямо смотрит в обе сети провайдеров, на нем нет ничего кроме
нескольких игровых серверов Counter-Strike 1.6 и team-fortress2
 
Как настроить маршрутизацию, или что сделать в IPTABLES
Чтобы на сервер можно было зайти по любому из двух IP?
 
т.е. чтобы с одного и того же IP клиента можно было подключиться как к первому IP Сервера, так и ко второму, и чтобы не было разницы между тем к какому из IP подключается клиент. (естественно речь не про пинг)
 
 
 
# The loopback network interface
auto lo
iface lo inet loopback
post-up iptables-restore < /etc/iptables.rules
 
# The primary network interface
allow-hotplug eth2
iface eth2 inet dhcp
 
allow-hotplug eth0
iface eth0 inet static
address xx.xx.xx.xx
netmask xxx.xxx.xxx.xxx
 
 
Как вариант могу купить и поставить RB450G перед этим сервером, но  будет ли тот результат?
СЛышал что можно обойтись без аппаратного решения, просто с помощью IPTABLES

Всего записей: 24 | Зарегистр. 10-12-2010 | Отправлено: 22:00 05-02-2012 | Исправлено: LikMigTel, 22:06 05-02-2012
tankistua

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Строил только на фре - там это решается фаерволом.
 
Здесь нужен айпироут
 
http://habrahabr.ru/blogs/linux/49137/
http://habrahabr.ru/blogs/linux/55132/

Всего записей: 9572 | Зарегистр. 15-01-2002 | Отправлено: 00:01 06-02-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LikMigTel
рекомендую к прочтению LARTC - вот нужный вам кусок на русском.
 
Вернее сказать это (LARTC) считается оф докой к утилите ip (часть пакета iproute2), так что это не мои прихоти
 
tankistua
Цитата:
Здесь нужен айпироут  
вы так это с тяжестью говорите - будто iproute чем-то не подходит для Linux, он между прочем часть ядра с 2.2 версии...

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 01:41 06-02-2012 | Исправлено: Alukardd, 01:52 06-02-2012
LikMigTel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дополню данные:
- у меня две сетевухи смотрящие прямо в инет и на каждой ВНЕШНИЙ IP
- у меня нет третьей локальной сетевухи и мой сервер не шлюз
 
 
IP1 внешний<--------------------------->как локальные так и внешние
IP2 внешний<--------------------------->как локальные так и внешние
 
 
на оба интерфейса юзеры заходят как с локальными так и с внешними IP
более того внутренние подсети у провайдеров пересекаются - имеют одинаковые сегменты.
 
скажем от обоих ко мне может зайти игрок с IP адресом 10.10.10.10
 
 
следовательно вот на этом моменте все стопорится:
 
2. Наконец, $P1_NET это IP сеть, к которой принадлежит $P1 , а $P2_NET -- сеть, к которой принадлежит $P2  
 
 
потому как НЕТУ У МЕНЯ ЧЕТКОГО ДИАПАЗОНА КАЖДОЙ ИЗ СЕТЕЙ
- они как внутренние так и внещние, они пересекаются.
 
мне банально нужно сделать элементарное:
 
1. чтобы игрок мог зайти по любому интерфейсу
2. чтоб обмен пакетами с игроком шел через тот интерфейс через который он зашел.
- даже порты выделять не надо!
тупо: все что пришло на сетевуху 1 обменивается данными с сервером через нее же
все что пришло на сетевуху 2 обменивается данными с сервером через нее же
 
и чтобы не было маршрутов, которые бы определяли что сетевуха 1 только для такого-то диапазона,
а сетевуха два только для другого диапазона.
 
любая сетевуха для любого входящего соединения
 
по логике тут прописей должно быть на 10 строчек от силы
настолько простая эта схема
 
 
 
 
 
 
 
Добавлено:
http://habrahabr.ru/blogs/linux/49137/
 
Начал делать по этому ману в итоге:
 
nano /etc/routes.sh
 
 
 
IF1=eth2 #(дефолтный первый интерфейс)
IF2=eth0 #(второй интерфейс)
IP1=78.30.248.244
IP2=91.200.47.201
P1=78.30.232.1
P2=91.200.47.193
SRV11=192.168.0.11
SRV12=192.168.0.12
 
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
 
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
 
 
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1 metric 10
 
 
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
 
ip rule add from $SRV11 fwmark 10 table T1
ip rule add from $SRV12 fwmark 20 table T2
 
 
./routes.sh
ругается так:
 
Error: argument "T1" is wrong: "table" value is invalid
 
Error: argument "T1" is wrong: "table" value is invalid
 
Error: argument "T2" is wrong: "table" value is invalid
 
Error: argument "T2" is wrong: "table" value is invalid
 
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
Error: argument "T1" is wrong: invalid table ID
 
Error: argument "T2" is wrong: invalid table ID
 
Error: argument "T1" is wrong: invalid table ID
 
Error: argument "T2" is wrong: invalid table ID
 
 
Добавлено:
та же хрень, дошел вот до этого момента:
 
LOCAL_ETH=eth0
GLOBAL_ETH_P1=eth1
GLOBAL_ETH_P2=eth2
LOCAL_IP=192.168.0.1
LOCAL_NET=192.168.0.0/24
GLOBAL_IP_P1=10.10.10.10
GLOBAL_IP_P2=20.20.20.20
 
 
 
и - НУ НЕТУ У МЕНЯ LOCAL_ETH
 
и че мне делать?
ЭТ НЕ ШЛЮЗ А СЕРВЕР

Всего записей: 24 | Зарегистр. 10-12-2010 | Отправлено: 09:50 06-02-2012 | Исправлено: LikMigTel, 10:25 06-02-2012
tankistua

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
вы так это с тяжестью говорите - будто iproute чем-то не подходит для Linux, он между прочем часть ядра с 2.2 версии...

 
да для меня давно уже что на линуксе - то тяжесть Примерно как для линуксоида винда
 
 
Так там ошибка в статье - поправь.
 

Цитата:
и - НУ НЕТУ У МЕНЯ LOCAL_ETH

ну так не пиши его - делов-то.
 
Тут самый главный смысл пакет промаркировать да и отправить обратно в интерфейс, с которого он прилетел.

Всего записей: 9572 | Зарегистр. 15-01-2002 | Отправлено: 01:00 07-02-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LikMigTel
Цитата:
Error: argument "T1" is wrong: invalid table ID  
так таблицы T1 и T2 создать надо
Цитата:
Создадим две дополнительные таблицы маршрутизации, скажем T1 и T2. Добавим их в файл /etc/iproute2/rt_tables. Теперь можно настроить эти таблицы следующими командами:


----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 01:26 07-02-2012
LikMigTel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Таk в том то и дело, что нельзя мне этого делать.
Любой игрок должн заходить по любому IP
а если я сделаю эти маршруты то им будет доступен только 1 IP
 
или не так?
пожалуйста объясните мне на пальцах принцип этот, а то я походу не понимаю:
пакет пришел на IP1 дальше он перекинулся туда, а ушел оттуда, вот так как то))
 
 

Всего записей: 24 | Зарегистр. 10-12-2010 | Отправлено: 09:41 07-02-2012
tankistua

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну я б с удовольствием помог - да даже тестировать негде - везде фря стоит, на фре делается такое очень просто
 
pass in quick on $inet_iface reply-to ($inet_iface $inet_gw) proto tcp from <TRUSTED-HOSTS> to $inet_ip port ssh
pass in quick on $binet_iface reply-to ($binet_iface $binet_gw) proto tcp from <TRUSTED-HOSTS> to $binet_ip port ssh
 
 
и все.
 
Добавлено:
#!/bin/sh
  IP1=217.111.111.99
  IP2=94.11.111.81
  P1=217.111.111.97
  P2=94.11.111.82
 
# добавим дефаулт гетвей в каждую таблицу.
  ip route add default via $P1 table T1
  ip route add default via $P2 table T2
# Говорим, что по дефолту будем ходить через первого провайдера.
  ip route add default via $P1
  ip rule add from $IP1 table T1
  ip rule add from $IP2 table T2  
 
#Это так на всякий случай
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
 
Добавлено:
   #!/bin/sh
   IP1=192.168.4.1
   IP2=217.1.1.2
   P1=192.168.4.2
   P2=217.1.1.1
   ip route add default via $P1 table T1
   ip route add default via $P2 table T2
   ip route add default via $P1
   ip rule add from $IP1 table T1
   ip rule add from $IP2 table T2

Всего записей: 9572 | Зарегистр. 15-01-2002 | Отправлено: 22:40 07-02-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LikMigTel
Если на пальцах смысл настроек заключается в следующем:
у сервера есть gateway он один (давайте для простоты абстрагируемся от возможности использования 2-х - у вас скорее всего один и настроен) - через него сервер ходит в инет. (условимся его называть провайдер1 = П1, другой соответственно будет П2)
Теперь у вас есть 2 провайдера и 2 разных внешних ip адреса. Так вот что происходит когда клиент стучится через внешний ip адрес П2 - серверу приходит пакет от некого клиента он его обрабатывает и хочет послать ответ, маршрут для ответы выбирается исходя из его таблицы маршрутизации, а она велит ему слать ответ через шлюз по умолчанию (т.е. через П1) - так ответный пакет сможет идти до ближайшего NAT'ящего устройства, которое этот пакет и поглотит, т.к. оно просто не будет знать куда его слать дальше - ведь изначальный пакет прошёл не через него!
Если в двух словах - то ответ просто не дойдёт до вопрошающего через П2 провайдера.
Так вот!!! Эти манипуляции с iproute2 позволяют (опачки читаем что написано первой же строчкой по моей ссылке)
Цитата:
вопрос заключается в том, как организовать маршрутизацию таким образом, чтобы ответы на запросы, приходящие через определенного провайдера, скажем ровайдера 1, уходили через того же провайдера.
А зачем это? Читаем то что я только что изложил.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 00:46 08-02-2012
LikMigTel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Про гейтвеи я немного вкурил.
/etc/network/interfaces
тот гейтвей который прописан первым или который по DHCP получается раньше - становится дефолтным
второй в потерях.
 
еще вопрос:
чтобы любой игрок мог зайти и по одному и по второму интерфейсу на свой выбор и поиметь разный пинг до сервера надо обязательно маркировать пакеты?
 
потому как я подозреваю что если речь идет о таблицах маршрутизации, то тогда
второй интерфейс будет доступен только для тех кто прописан в маршрутах, а для всех остальных нет, так?
 
что в этих таблицах? можно на пальцах, ссори за нубство )
 
и еще
есть вариант купить RB450G
вставить в него два провайдера (сделать 2 ван порта) и 1 лан порт воткнуть в сервак
 
на этой железке проще же настроить чтобы откуда пришел пакет туда же и ушел?
потому как у меня нету элементарных понятий о маршрутизации вообще,  
а все статьи предполагают что я имею уже определенную базу.  
 
 
 

Цитата:
Создадим две дополнительные таблицы маршрутизации, скажем T1 и T2. Добавим их в файл /etc/iproute2/rt_tables.  

 
а какого формата записи должны быть в этих таблицах? и что там вообще должно быть?

Всего записей: 24 | Зарегистр. 10-12-2010 | Отправлено: 12:41 08-02-2012 | Исправлено: LikMigTel, 12:50 08-02-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LikMigTel
Просто по аналогии с выше стоящими сделайте. В файле описаны только таблицы. Соответственно номер ставите какой-нить 5 и второй 6 и имена T1 и T2 (имена можете изменить на более красивые).
 
Про вариант купить железку - я бы не стал. Зачем оно лишнее железо?

Цитата:
чтобы любой игрок мог зайти и по одному и по второму интерфейсу на свой выбор и поиметь разный пинг до сервера надо обязательно маркировать пакеты?  
 
потому как я подозреваю что если речь идет о таблицах маршрутизации, то тогда  
второй интерфейс будет доступен только для тех кто прописан в маршрутах, а для всех остальных нет, так?  
все манипуляции которые описаны в том разделе LARTC, что я вам показал касаются только входящих пакетов, что бы откуда пришёл туда и ушел это вам и надо! У меня от работы мозг же лопается, а тут еще вы по 3 разу одно и тоже спрашиваете

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 18:58 08-02-2012
LikMigTel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
делаю скрипт:

Цитата:
 
IF1=eth2
IF2=eth0
IP1=78.30.248.244
IP2=91.200.47.203
P1=78.30.232.1
P2=91.200.47.193
P1_NET=78.30.192.0/18
P2_NET=91.200.47.192/27
 
 
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
 
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
 
ip route add default via $P1
 
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
 

 
таблицы прописал так:
/etc/iproute2/rt_tables

Цитата:
 
#
# reserved values
#
255     local
254     main
253     default
0       unspec
5       T1
6       T2

#
# local
#
#1      inr.ruhep
 

 
 
ругается так

Цитата:
 
csmania:~# ./script.sh
RTNETLINK answers: Invalid argument
RTNETLINK answers: File exists
RTNETLINK answers: Invalid argument
RTNETLINK answers: File exists
 

 
 
 
P1_NET=78.30.192.0/18
P2_NET=91.200.47.192/27  
брал отсюда:
 

Цитата:
 
csmania:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
91.200.47.192   *               255.255.255.224 U     0      0        0 eth0
78.30.192.0     *               255.255.192.0   U     0      0        0 eth2
default         gate.sevstar.ne 0.0.0.0         UG    0      0        0 eth2
 

 
/etc/network/interfaces

Цитата:
 
# The loopback network interface
auto lo
iface lo inet loopback
post-up iptables-restore < /etc/iptables.rules
 
# The primary network interface
allow-hotplug eth2
iface eth2 inet static
address 78.30.248.244
netmask 255.255.192.0
gateway 78.30.232.1
 
allow-hotplug eth0
iface eth0 inet static
address 91.200.47.201
netmask 255.255.255.224
#gateway 91.200.47.193
 

 
 
где я недопетрил?

Всего записей: 24 | Зарегистр. 10-12-2010 | Отправлено: 10:44 09-02-2012 | Исправлено: LikMigTel, 11:07 09-02-2012
LikMigTel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите пожалуйста.

Всего записей: 24 | Зарегистр. 10-12-2010 | Отправлено: 09:47 15-02-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LikMigTel
думается мне что он ругается ,т.к. маршруты вы эти в ходе ваших изысканий уже не раз туда добавили, соответственно 2-ой раз он сделать это не может...
При всём этом у вас вроде как всё должно работать.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 21:35 15-02-2012
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » Два провайдера на одном сервере


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru