Как настроить маршрутизацию трафика с различных IP-адресов на разные прокси-серверы с авторизацией?

Мне требуется прокси-сервер, который сможет перенаправлять HTTPS-запросы на другие внешние прокси в зависимости от IP-адреса клиента. Проблема заключается в том, что внешние HTTP-прокси требуют авторизации, и я не уверен, как правильно указать учетные данные. Если бы трафик был HTTP, я мог бы просто добавить заголовок Proxy-Authorization: Basic base64(login:pass). Однако, поскольку речь идет о HTTPS, предполагаю, что понадобится использовать HTTP CONNECT и тоннели. Не подскажете, какое программное обеспечение для этого можно использовать на Ubuntu?
  • 27 марта 2025 г. 16:54
Ответы на вопрос 2
Для маршрутизации трафика с различных IP-адресов на разные прокси-серверы с авторизацией в Ubuntu, действительно, можно использовать подходы, основанные на прокси-сервере, который поддерживает метод HTTP CONNECT для подключения к HTTPS/SSL. Ниже приведены шаги и некоторые популярные решения для реализации вашей задачи.

### Подходящие программы

1. **Nginx**: Это один из самых популярных веб-серверов, который можно использовать в качестве реверсивного прокси. Он поддерживает маршрутизацию трафика, но может потребоваться дополнительная настройка для аутентификации на внешних прокси.

2. **Squid**: Это мощный прокси-сервер, который хорошо подходит для работы с HTTP и HTTPS. Он поддерживает авторизацию и может быть сконфигурирован для маршрутизации запросов на основе IP-адреса.

3. **HAProxy**: Это высокопроизводительный прокси-сервер TCP и HTTP, который позволяет выполнять балансировку нагрузки и маршрутизацию на основе клиентских IP.

### Пример настройки с использованием Squid

1. **Установка Squid**:

   ```bash
   sudo apt update
   sudo apt install squid
   ```

2. **Настройка конфигурации Squid**: Откройте файл конфигурации Squid (`/etc/squid/squid.conf`) и добавьте необходимые параметры. Пример конфигурации для маршрутизации трафика в зависимости от IP-адреса может выглядеть так:

   ```plaintext
   # Допустим, у вас есть два прокси-сервера
   cache_peer proxy1.example.com parent 8080 0 no-query login=login1:pass1
   cache_peer proxy2.example.com parent 8080 0 no-query login=login2:pass2

   # ACL для управления IP-адресами
   acl local_network src 192.168.1.0/24
   acl other_network src 192.168.2.0/24

   # Правила маршрутизации
   cache_peer_access proxy1.example.com allow local_network
   cache_peer_access proxy2.example.com allow other_network
   cache_peer_access proxy1.example.com deny all
   cache_peer_access proxy2.example.com deny all

   http_access allow local_network
   http_access allow other_network
   http_access deny all
   ```

3. **Перезапуск Squid**:

   ```bash
   sudo systemctl restart squid
   ```

### Примечания

- Убедитесь, что правильные IP-адреса и учетные данные (логины/пароли) указаны в конфигурации.
- При использовании авторизации в Squid необходимо обязательно использовать `login` с указанием логина и пароля для каждого внешнего прокси.
- Проверьте логи Squid для отладки, если что-то будет работать не так, как ожидалось. Их можно найти по пути `/var/log/squid/access.log`.

Эта настройка должна помочь вам организовать маршрутизацию трафика с различных IP-адресов на разные внешние прокси-серверы с авторизацией. Если у вас возникнут дополнительные вопросы по настройке, не стесняйтесь спрашивать!
В 3proxy https://github.com/3proxy/3proxy 

auth iponly

allow * ip1
parent 1000 http proxy1 port1 login1 password1
allow * ip2
parent 1000 http proxy2 port2 login2 password2
allow * ip3
parent 1000 http proxy3 port3 login3 password3

proxy -p3128
Похожие вопросы