Подключение к интернету через SOCKS-прокси, когда локальный DNS не разрешает.

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

У меня есть локальная машина с CentOS 7. В локальной подсети есть сервер прокси Socks V5, который предоставляет этой машине доступ в интернет. Я могу загружать файлы с помощью,

curl -x --proxy socks5://ipaddress:1080 -u username:password www.google.com

На моей локальной машине в настоящее время запущены веб-приложения Artifactory и Jenkins в Tomcat. Эти системы не предоставляют настройки прокси socks и требуют доступ в интернет.

Я пробовал использовать tsocks, однако удаленные DNS-запросы не разрешаются.

Как мне это сделать?

То, что вы предоставили, это прокси для программы curl для использования в этом одном запросе.

Вам может быть полезно попробовать установить переменные окружения http_proxy и https_proxy и посмотреть, подхватят ли их ваши программы.

Например:

export http_proxy=username:[email protected]:8080

Эти переменные необходимо будет устанавливать снова после каждой перезагрузки, так что это не идеально.

Если вас не устраивает хранить эти учетные данные в открытом виде в переменной окружения, вы можете рассмотреть более надежное решение, например, cntlm:

Ответ или решение

Для настройки доступа к интернету через SOCKS-прокси на вашем сервере CentOS 7, где локальная система DNS не разрешает адреса, можно использовать подход с перенаправлением трафика через прокси, что позволит приложениям, как Artifactory и Jenkins, генерировать запросы интернета через SOCKS-прокси. Рассмотрим несколько этапов решения вашей проблемы.

1. Установка и настройка dante-server

Одним из наиболее универсальных решений является использование SOCKS-прокси-сервера dante-server, который позволит вашему серверу работать как промежуточный обработчик для приложений.

Установка dante-server:

sudo yum install dante-server

Настройка dante-server:

Создайте файл конфигурации /etc/danted.conf со следующим содержимым:

logoutput: /var/log/danted.log

# Определяем секции клиент и сервер
client pass {
    from: 192.168.0.0/24 to: 0.0.0.0/0
    protocol: tcp
}

# Определяем разрешенные пользователи
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    protocol: tcp
    method: username # или другой метод аутентификации
}

Замените 192.168.0.0/24 на соответствующую подсеть вашего локального окружения.

Запуск сервиса:

sudo systemctl start danted
sudo systemctl enable danted

2. Настройка приложений для использования прокси

Установка переменных окружения

Вы можете установить http_proxy и https_proxy для вашего пользовательского сеанса или на уровне системы:

export http_proxy="socks5://username:password@localhost:1080"
export https_proxy="socks5://username:password@localhost:1080"

Для проверки работоспособности этих переменных используйте команды, такие как curl или wget.

3. Использование cntlm как шлюза для аутентификации

Если у вас есть необходимость в более сложной аутентификации, вы можете настроить cntlm, который будет работать как промежуточный прокси между вашим сервером и SOCKS-прокси.

Установка cntlm:

sudo yum install cntlm

Конфигурация cntlm:

Откройте файл конфигурации /etc/cntlm.conf и отредактируйте его, добавив учетные данные и необходимые прокси.

Username    ваш_пользователь
Domain      ваш_домен
Password    ваш_пароль
Proxy       socks5://ipaddress:1080
NoProxy     localhost

Запуск cntlm:

sudo systemctl start cntlm
sudo systemctl enable cntlm

Теперь вы можете настроить ваши приложения на использование cntlm, задав соответствующие переменные окружения:

export http_proxy="http://localhost:3128"
export https_proxy="http://localhost:3128"

4. Дополнительные возможности

Если вы не хотите устанавливать сторонние сервисы, можно попробовать использовать инструменты, такие как proxychains, которые перенаправляют сетевые соединения через SOCKS-прокси:

Установка proxychains:

sudo yum install proxychains

Конфигурация proxychains:

Редактируйте файл /etc/proxychains.conf для добавления информации о вашем SOCKS-прокси в нижней части файла:

socks5  127.0.0.1  1080  # или ipaddress вашего прокси

Теперь вы можете запускать ваши приложения через proxychains, например:

proxychains java -jar artifact.jar

Заключение

Согласно этим шагам, вы сможете решить проблему доступа к интернету для ваших приложений на CentOS 7 при использовании SOCKS-прокси. Программа должна корректно разрешать DNS-запросы через прокси, обеспечивая доступ к интернет-ресурсам, необходимым для функционирования Jenkins и Artifactory. Рекомендуется протестировать каждую часть конфигурации и удостовериться, что у вас есть необходимые разрешения для подключения через прокси.

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

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