Порт Iptables-переадресация с сохранением IP-адреса клиента

TL;DR:Как я могу получить IP-адрес клиента, подключающегося к удаленно размещенному VPS, чтобы он был IP-адресом, который через iptables перенаправляется/нет на игровой сервер, работающий у меня дома?

У меня есть игровой сервер Rust, который я размещаю у себя дома. Я хочу, чтобы это было общедоступно, однако я не обязательно хочу раздавать свой IP-адрес всем. Поэтому я арендую небольшой VPS, который собираюсь использовать в основном как обратный прокси. В настоящее время я использую nginx для пересылки трафика через clinet-server VPN, который отлично работает. Однако на игровом сервере IP-адрес каждого игрока соответствует туннельному адресу VPS, а не фактическому IP-адресу клиента. Я попытался использовать proxy_pass $remote_addr:28015 transparancy; proxy_responses 0в моей конфигурации nginx, без изменений. Поэтому я переключился на это через iptables.

Я могу заставить это работать на 99% так, как я хочу,делаем именно это:

sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 28015 -j NAT --на-назначение мой_ip:28015
iptables -t nat -A PREROUTING -p udp --dport 28015 -j NAT --на-назначение мой_ip:28015
iptables -t nat -A PREROUTING -p tcp --dport 28016 -j NAT --на-назначение мой_ip:28016
iptables -t nat -A PREROUTING -p udp --dport 28016 -j NAT --до-назначения мой_ip:28016
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp -d my_ip --dport 28015 -m состояние --состояние НОВОЕ,УСТАНОВЛЕНО,СВЯЗАННОЕ -j ​​ПРИНЯТЬ
iptables -A FORWARD -p ucp -d my_ip --dport 28015 -m состояние --состояние НОВОЕ,УСТАНОВЛЕНО,СВЯЗАННОЕ -j ПРИНЯТЬ
ufw отключить
ufw включить
vps reboot \

То, что это делает, в основном то же самое, что и nginx, где он работает нормально, но у всех просто есть общедоступный IP-адрес VPS(обратите внимание, что локальная сеть и общедоступный IP-адрес VPS одинаковы). Если я опускаю маскарад, он не работает.

Немного информации о настройке:
VPS имеет один интерфейс:eth0
VPS работаетUbuntu 20.04
У меня дома модем находится в режиме сквозного доступа к pfsesne. В pfsense у меня есть правила переадресации портов для передачи 28015/28016 tcp/udp на gameserver.

Примечание:Я не уверен, почему nginx не работал для этого. Как будто nginx ничего не делал с директивой proxy_pass $remote_addr.

0
задан 18 November 2021 в 13:47
0 ответов

Теги

Похожие вопросы