Вопрос или проблема
Сетевая трасса:
Публичный IP клиента xxx.xxx.xxx.xxx —> (91.91.91.91 Италия) —> (OPNsense 101.101.101.101 Германия) —> 192.168.10.39 (OPNSense LAN Email сервер)
Я пробую:
auth_trusted_networks = 0.0.0.0/0
login_trusted_networks = 0.0.0.0/0
haproxy_trusted_networks = 0.0.0.0/0
-
Openvpn
-
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
- Nginx
stream {
server {
listen 100;
set_real_ip_from 0.0.0.0/0;
proxy_pass 101.101.101.101;
}
}
-
IPTABLES POSTROUTING, PREROUTING
-
SOCAT
С каждым выбором я пробовал разные варианты. Здесь все не описано.
ВСЕ РАБОТАЕТ, НО НЕ МОЖЕТ ОТПРАВИТЬ РЕАЛЬНЫЙ ПУБЛИЧНЫЙ IP КЛИЕНТА.
.
Ответ или решение
Когда клиент использует прокси, реальный IP-адрес клиента не передается на почтовый сервер. Эта ситуация может быть вызвана различными аспектами настройки сетевой инфраструктуры и специфическими особенностями работы прокси-серверов.
1. Суть проблемы
Клиенты подключаются к почтовому серверу через серию промежуточных узлов, включая прокси-серверы и маршрутизаторы. Каждый из этих узлов может изменять или скрывать оригинальный IP-адрес клиента. В результате на почтовый сервер может поступать только IP-адрес последнего прокси-сервера, а не реальный адрес клиента.
2. Как работает прокси?
Прокси-сервер действует как посредник между клиентом и ресурсом, к которому он обращается. При этом прокси может перехватывать запросы, модифицировать их, кэшировать, а также изолировать клиентский IP-адрес. Наиболее часто используемые методы включают:
- HTTP-прокси: Работает на уровне приложения и способен изменять заголовки запросов.
- TCP-прокси: Менее гибкие, но эффективные для передачи трафика без изменения заголовков приложения.
3. Как передать реальный IP?
Для передачи реального IP-адреса клиента на почтовый сервер необходимо использовать несколько методов на разных уровнях:
3.1. Конфигурация прокси
Если используется HAProxy, например, важно включить опции proxy_protocol
, чтобы прокси передавал информацию о реальном IP-адресе. Также необходимо знать, чтобы сервер почты был настроен на принятие этой информации:
inet_listener pop3 {
address = *
port = 110
haproxy = yes
proxy_protocol = yes
}
Это позволит почтовому серверу воспринимать PROXY
заголовок и извлекать из него реальный IP клиента.
3.2. Конфигурация Nginx
Если вы используете Nginx в качестве TCP-прокси, убедитесь, что настроен заголовок set_real_ip_from
, чтобы принимать запросы от всех источников:
stream {
server {
listen 100;
set_real_ip_from 0.0.0.0/0;
proxy_pass 101.101.101.101;
}
}
3.3. Firewall и маршрутизация
Если используются IPTables и другие сетевые инструменты, проверьте правила NAT. Убедитесь, что во время маршрутизации не теряется информация о клиентском IP:
- Вы можете использовать
POSTROUTING
для изменения и контроля выхода трафика. - Настройте
PREROUTING
правила для корректной обработки входящих запросов.
4. Вопрос безопасности
Важно отметить, что передача реального IP-адреса клиента может иметь последствия для безопасности. Например, это может открывать уязвимости для атак на ваши системы. Поэтому всегда следует тщательно настраивать политики доступа и фильтрации.
Заключение
Для корректной передачи реального IP-адреса клиента на почтовый сервер необходимо настраивать как прокси-серверы (например, HAProxy, Nginx), так и сетевые инструменты (IPTables). Убедитесь, что все промежуточные узлы правильно обрабатывают заголовки и не модифицируют клиентский IP. Это потребует детального анализа сетевой схемы и возможных изменений в конфигурации.