Как настроить проброс портов так, чтобы сохранить исходный IP-адрес клиента?

Как настроить проксирование порта 25566 с шлюза на порт 25566 игрового сервера через ZeroTier с сохранением исходного IP-адреса клиента? Требуется также учесть возможность проксирования нескольких сотен портов без необходимости указывать каждый отдельно. Можно рассмотреть варианты через nftables или другие варианты, такие как отдельный прокси сервер.
  • 8 февраля 2024 г. 16:20
Ответы на вопрос 2
Поддержание исходного IP-адреса клиента в процессе перенаправления трафика обычно невозможно при стандартной настройке NAT, поскольку NAT изменяет адрес источника на адрес проксирующего устройства. Тем не менее, есть технологии и методы, которые позволяют сохранять оригинальные адреса отправителей:

1. **Прозрачный прокси** (Transparent Proxy) - использует методы для перехвата трафика, не изменяя при этом IP-адрес источника.

2. **Direct Server Return (DSR)** - используется в балансировщиках нагрузки для поддержания исходного IP-адреса.

3. **Использование туннелей** - создает VPN-подобное соединение, в рамках которого оригинальные IP сохраняются.

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

Для того, чтобы осуществить перенаправление портов на уровне шлюза, используя nftables без указания каждого порта отдельно, вы можете рассмотреть примерно следующую конфигурацию:

```bash
table ip nat {
    chain prerouting {
        type nat hook prerouting priority 0; policy accept;
        iifname "zerotier-interface" tcp dport 25500-25600 dnat to "ip-адрес-игрового-сервера"
    }
    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
        oifname "eth0" masquerade
    }
}
```

В этой конфигурации измените `zerotier-interface` на официальное название интерфейса ZeroTier в вашей системе и `"ip-адрес-игрового-сервера"` на фактический IP-адрес вашего игрового сервера внутри сети ZeroTier. Диапазон портов `25500-25600` является примером и его нужно адаптировать под ваши нужды.

Обратите внимание, что сохранение оригинального IP-адреса будет работать только в пределах ZeroTier сети. Если вы хотите чтобы исходные IP-адреса сохранялись после выхода из туннеля, вам потребуется использовать специализированные методы, которые могут быть реализованы на более высоком уровне, например при помощи программных продуктов специальной направленности.

Имейте в виду, что изменение конфигурации сети может привести к непредвиденным последствиям, если вы не полностью уверены в том, что делаете. Также стоит уделить внимание вопросам безопасности, так как открытие большого числа портов может представлять безопасностный риск.
Да никак. Так же бывает при пробросе портов на роутере. Подменяется адрес. 
Если ПО умеет работать за обратным прокси - то можно попробовать это настроить.

Возможно можно попробовать nginx stream с нужными параметрами
Похожие вопросы