Можно ли перенаправить входящий трафик на определенный порт моего сервера 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
должен
См. Соответствующие разделы справочной страницы iptables
для получения подробной информации о целях DNAT и MASQUERADE.
Обратите внимание, что этот вид перенаправления прост в настройке, но он нарушит регистрацию вашего IP-адреса на целевом сервере - каждое перенаправленное соединение будет отображаться как исходящее от <youroldserver>
. Пока это всего лишь переходное решение, оно должно сработать. Если вы хотите делать это постоянно, вы можете изучить туннелирование перенаправленных запросов через виртуальный интерфейс (например, VPN) и убедиться, что ваш пересылающий хост <youroldserver>
находится в пути маршрутизации пакета ответа, направляя ответы обратно через тот же виртуальный интерфейс с использованием альтернативных таблиц маршрутизации.
Ах, и вам нужно будет включить маршрутизацию, выполнив echo "1" > /proc/sys/net/ipv4/ip_forward
(для временного изменения) или редактирование /etc/sysctl.cfg и установка net.ipv4.ip_forward=1
(действует после перезагрузки).