Назад | Перейти на главную страницу

Перенаправить все сетевые пакеты с сервера A на сервер B (WAN) Ubuntu

В настоящее время я запускаю игровой сервер на 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 :

  1. DNAT входящие пакеты в Server A к Server B
  2. Также делаю 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


Конечно, для всего этого рекомендуется указывать протоколы и порты. Мои образцы слишком разрешительны, потому что я не знаю ваших портов / протоколов.