В настоящее время я запускаю игровой сервер на VPS и скоро перейду к провайдеру VPS. Чтобы упростить миграцию для игроков, я хотел бы, чтобы игроки могли использовать исходный IP-адрес в течение короткого времени, перенаправляя все пакеты со старого сервера на новый.
Я знаю, что это добавит дополнительную задержку, но я буду отображать сообщение, показывающее новый IP-адрес, и предупреждать их о добавленной задержке, если они используют исходный IP-адрес.
Два сервера не в той же внутренней сети.
Я бы хотел, чтобы все это было действительным;
Client --> Server A --> Server B
Server B --> Client
Client --> Server B
Например, клиент может подключиться напрямую к B, но если они подключатся к A, он будет перенаправлен на B. Сервер B во всех случаях отправляет свои данные непосредственно клиенту.
Сервер A не будет делать ничего, кроме пересылки пакетов (например, игровой сервер не работает там)
Я знаю, что это может быть невозможно, но было бы здорово, если бы кто-нибудь мог мне с этим помочь.
О, поскольку это игровой сервер, большая часть трафика - UDP, и оба сервера работают под управлением Ubuntu 12.0.4.
Спасибо
Клиент -> Сервер A -> Сервер B
Для этого вам придется использовать двойной NAT, на Server A
:
DNAT
входящие пакеты в Server A
к Server B
SNAT
так что обратный трафик будет отправлен обратно через Server A
Что-то вроде этого :
iptables -t nat -A PREROUTING -d $Server_A_ip_address -j DNAT --to-destination $Server_B_ip_address
iptables -t nat -A POSTROUTING -d $Server_B_ip_address -j SNAT --to-source $Server_A_ip_address
С другими случаями справиться проще:
Сервер B -> Клиент
На Server B
: iptables -A OUTPUT -s $Server_B_ip_address -j ACCEPT
Клиент -> Сервер B
На Server B
: iptables -A INPUT -d $Server_B_ip_address -j ACCEPT
Конечно, для всего этого рекомендуется указывать протоколы и порты. Мои образцы слишком разрешительны, потому что я не знаю ваших портов / протоколов.