Когда клиент использует прокси, настоящий IP-адрес клиента не отправляется на почтовый сервер.

Вопрос или проблема

Сетевая трасса:

Публичный 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

  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

  1. Nginx
stream {
  server {
    listen 100; 
    set_real_ip_from 0.0.0.0/0;
    proxy_pass 101.101.101.101; 
  }
}
  1. IPTABLES POSTROUTING, PREROUTING

  2. 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. Это потребует детального анализа сетевой схемы и возможных изменений в конфигурации.

Оцените материал
Добавить комментарий

Капча загружается...