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

Перенаправить определенный сетевой трафик на другой сервер

Можно ли перенаправить входящий трафик на определенный порт моего сервера Ubuntu Linux на другой сервер (у которого есть другой общедоступный IP-адрес и который находится на другом сайте)? Я использую игровой сервер на другом сервере, но я хочу, чтобы люди могли подключаться к старому IP-адресу. Можно ли это сделать с помощью какого-нибудь NAT / PAT в сочетании с VPN?

Это мои результаты тестирования с правилами iptables ...

root@oldserver:~# tcpdump -n -i eth0 port 83
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
17:47:40.349492 IP client.63633 > oldserver.83: Flags [S], seq 783927589, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
17:47:40.597801 IP client.63634 > oldserver.83: Flags [S], seq 924277477, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
17:47:43.349118 IP client.63633 > oldserver.83: Flags [S], seq 783927589, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
17:47:43.596024 IP client.63634 > oldserver.83: Flags [S], seq 924277477, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
17:47:49.349400 IP client.63633 > oldserver.83: Flags [S], seq 783927589, win 8192, options [mss 1460,nop,nop,sackOK], length 0
17:47:49.600172 IP client.63634 > oldserver.83: Flags [S], seq 924277477, win 8192, options [mss 1460,nop,nop,sackOK], length 0

Эти две строки

iptables -t nat -A PREROUTING -p tcp --dport <yourgameserverport> -j DNAT --to <yournewserver>:<yournewport>

iptables -t nat -A POSTROUTING -p tcp -d <yournewserver> --dport <yournewport> -j MASQUERADE

должен

  • перенаправить трафик на новый сервер (в любом случае нет необходимости в VPN, если это общедоступный трафик)
  • замаскируйте перенаправленные пакеты как исходящие от вашего «старого» сервера, чтобы он наверняка находился на пути маршрутизации для обратного сопоставления пакетов ответа перенаправленных соединений.

См. Соответствующие разделы справочной страницы iptables для получения подробной информации о целях DNAT и MASQUERADE.

Обратите внимание, что этот вид перенаправления прост в настройке, но он нарушит регистрацию вашего IP-адреса на целевом сервере - каждое перенаправленное соединение будет отображаться как исходящее от <youroldserver>. Пока это всего лишь переходное решение, оно должно сработать. Если вы хотите делать это постоянно, вы можете изучить туннелирование перенаправленных запросов через виртуальный интерфейс (например, VPN) и убедиться, что ваш пересылающий хост <youroldserver> находится в пути маршрутизации пакета ответа, направляя ответы обратно через тот же виртуальный интерфейс с использованием альтернативных таблиц маршрутизации.

Ах, и вам нужно будет включить маршрутизацию, выполнив echo "1" > /proc/sys/net/ipv4/ip_forward (для временного изменения) или редактирование /etc/sysctl.cfg и установка net.ipv4.ip_forward=1 (действует после перезагрузки).