Как настроить проброс портов так, чтобы сохранить исходный 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-адреса сохранялись после выхода из туннеля, вам потребуется использовать специализированные методы, которые могут быть реализованы на более высоком уровне, например при помощи программных продуктов специальной направленности.

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