POSTROUTING Теряется реальный IP, какие есть вариаты решений?
Из интернета Client public IP xxx.xxx.xxx.xxx ---> (91.91.91.91 VPN 10.8.0.1) ---> (PFsense 192.168.10.1 VPN 10.8.0.1) ---> 192.168.10.39 (server)
Нужно прокинуть десяток портов типа 44, 77, 11, 1000. Не в интервале 44-1000!
на 91.91.91.91 используется POSTROUTING PREROUTING. Соединение устанавливается нормально. Но 192.168.10.39 не видит Client public IP а он необходим!
Вариатны MARK CONMARK не работают.
Есть мысль прокинуть прокси тунель через это все дело от 91.91.91.91 до 192.168.0.39 но не соображу как. Socat пробовал он ошибку выдал.
Проблема не редкая судя по гуглу но ясных успешных решений не нашел.
Почтовый сервер не может получить реальный IP-адрес клиента через прокси. От клиента с публичным IP xxx.xxx.xxx.xxx ---> (91.91.91.91 Италия) ---> (OPNsense 101.101.101.101 Германия) ---> 192.168.10.39 (почтовый сервер OPNsense LAN)
1 openvpn
2 Haproxy
inet_listener pop3 {
address = *
port = 110
haproxy = yes, но proxy_protocol = yes не работает, не знаю почему.
}
frontend pop3_frontend
bind *:110
default_backend pop3_backend backend pop3_backend
server server1 101.101.101.101 send-proxy check
3 Nginx
stream {
server {
listen 100;
set_real_ip_from 0.0.0.0/0;
proxy_pass 101.101.101.101:ПОРТ;
}}
4 IPTABLES POSTROUTING, PREROUTING
5 SOCAT
С каждым вариантом я пробовал разные настройки. Здесь все не описано. Соединения устанавливаются но
почтовый сервер не получает ИП клиента ну и это вызывает проблемы со спамом и прочим.
Если сервер будет видеть внешний IP он и отвечать на него будет, а зачем тогда VPN? завернуть маршрут до него в впн, но тогда зачем видеть внешний IP? в целом на PFыутсу ни кто не мешает SRCNAT и навесить любой адрес какой захотите и даже в обратку завернуть на внутренний через DSTNAT все что летит на внешний. Но в целом звучит как попытка разрулить последствия неправильного подхода к решению изначальной задачи, а не попытка решить изначальную задачу. Может стоит посмотреть например на IPSec. или поделиться изначальным условием задачи
Вот задача:
Почтовый сервер не может получить реальный IP-адрес клиента через прокси. От клиента с публичным IP xxx.xxx.xxx.xxx ---> (91.91.91.91 Италия) ---> (OPNsense 101.101.101.101 Германия) ---> 192.168.10.39 (почтовый сервер OPNsense LAN)
1 openvpn
2 Haproxy
inet_listener pop3 {
address = *
port = 110
haproxy = yes, но proxy_protocol = yes не работает, не знаю почему.
}
frontend pop3_frontend
bind *:110
default_backend pop3_backend backend pop3_backend
server server1 101.101.101.101 send-proxy check
3 Nginx
stream {
server {
listen 100;
set_real_ip_from 0.0.0.0/0;
proxy_pass 101.101.101.101:ПОРТ;
}}
4 IPTABLES POSTROUTING, PREROUTING
5 SOCAT
С каждым вариантом я пробовал разные настройки. Здесь все не описано. Соединения устанавливаются но
почтовый сервер не получает ИП клиента ну и это вызывает проблемы со спамом и прочим.
на сервере 91.91.91.91 есть впн (10.8.0.Х) который смотрит в сторону шлюза (10.8.0.1) и локальной сети 192.168.10.Х через этот шлюз, в этой сети есть сервер 192.168.10.39 на который надо пробросить порты с адреса 91.91.91.91?
заходим на сервер 91.91.91.91 и пингуем 192.168.10.39 - сервер должен быть доступен, если недоступен разбираемся с сетью и маршрутами
заходим на сервер 192.168.10.39 и смотрим маршрут на 0.0.0.0/0, если через впн через сервер 91.91.91.91 и интернет бегает, то все нормально. если дефолтный маршрут должен идти через другой шлюз и сервак смотрит не только в эти сети, тогда манглами навешиваем метки на входящий трафик от 91.91.91.91 и ответ заруливаем на него же (наверное проще будет сделать еще один IP 192.168.10.40 и фильтровать запросы по dst IP)
Когда все готово остается ерунда - зайти на 91.91.91.91 и правилом dstnat завернуть все нужные порты на 192.168.10.39
Теоретически возможно, если прописать (91.91.91.91 VPN 10.8.0.1) в качестве default gateway для pfSense. На 91.91.91.91 прописываете маршрут в 192.168.10.0/24 через удаленный IP тунеля 10.8.0.1??? - чего это, кстати, они у вас на обоих концах одинаковые? Далее делаете DNAT 91.91.91.91 -> 192.168.10.39, а на pfSense просто разрешаете этот трафик