Ваша ситуация связана с целью сохранить исходный IP-адрес клиента, который подключается через VPN, при прохождении через PFSense и далее к внутреннему серверу. Использование правил NAT (в частности, POSTROUTING) изменяет исходный IP-адрес, что ведет к потере оригинального IP.
Вот несколько способов решения этой проблемы:
### 1. Использование правила ACCEPT в iptables
Вы можете использовать `iptables` для разрешения трафика без изменения IP-адреса. Вам нужно будет настроить UPD и TCP правила для соответствующих портов, чтобы разрешить доступ от клиентских IP на сервер.
Пример правил:
```bash
# Принять трафик от VPN с оригинальным IP
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 44 -j ACCEPT
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 77 -j ACCEPT
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 11 -j ACCEPT
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 1000 -j ACCEPT
```
Здесь `tun0` – это интерфейс вашего VPN.
### 2. Сохранение оригинального IP с помощью `conntrack`
Использование `conntrack` может помочь отслеживать соединения. Если вы хотите сохранить оригинальный IP, вам может потребоваться использовать `CONNMARK` в iptables для маркировки соединений.
Пример:
```bash
# Маркируем соединение
iptables -t mangle -A PREROUTING -i tun0 -j CONNMARK --set-mark 1
# Используем эту отметку в POSTROUTING
iptables -t nat -A POSTROUTING -m connmark --restore-mark --mark 1 -j ACCEPT
```
### 3. Прокси-туннель с помощью socat
Если вы хотите использовать `socat`, его можно настроить для создания прокси-туннеля. Вот базовый пример:
```bash
socat TCP-LISTEN:<local-port>,fork TCP:<destination-IP>:<destination-port>
```
Эта команда создаст туннель, принимающий соединения на `local-port` и отправляющий их на `destination-IP` с `destination-port`.
Однако важно помнить, что использование `socat` не сохранит оригинальный IP при маршрутизации через NAT. С помощью этого метода ваш сервер увидит IP 91.91.91.91.
### 4. Использование OpenVPN с маршрутизацией
Если возможно, рассмотрите возможность настройки OpenVPN так, чтобы он не менял оригинальный IP. В параметрах сервера OpenVPN, добавьте:
```
push "route 192.168.10.0 255.255.255.0"
```
Это позволит вашим внутренним устройствам видеть оригинальный IP-клиента. Убедитесь, что ваш клиентский OpenVPN может выполнять маршрутизацию IP.
### Заключение
Каждый из перечисленных методов имеет свои особенности и может потребовать настроек, специфичных для вашей инфраструктуры. Обязательно протестируйте каждую конфигурацию в контролируемом окружении, прежде чем внедрять в продуктив.