Используйте SOCKS-прокси в терминале.

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

Я использую selektor, который схож с Vidalia Tor Bundle. По умолчанию используются safe socks с номером порта 9054. Все работает нормально, и когда я устанавливаю в Firefox прокси “использовать системный прокси”, я могу получить доступ к заблокированным сайтам, например www.torproject.org.

Когда я ввожу wget http://torproject.org, это не использует установленный VPN. Что я могу сделать, чтобы это работало? Я не хочу использовать префикс, такой как foo wget www.torproject.org. Есть ли способ задать переменную socks_proxy? Я вижу http_proxy, которая здесь не подходит. Какие-нибудь идеи?

Вы можете использовать SOCKS-прокси для HTTP трафика следующим образом:

export http_proxy=socks5://PROXYSERVER:PORT

Чтобы DNS разрешался прокси-сервером:

export http_proxy=socks5h://PROXYSERVER:PORT

Источник: https://linuxtutorials.org/socks5-proxy-environment-variable-linux/

Также необходимо установить переменную https_proxy, чтобы использовать прокси для HTTPS трафика:

export https_proxy=$http_proxy

Если вы хотите, чтобы не HTTP трафик проходил через прокси, вы можете использовать инструмент, такой как proxychains (proxychains4 вместо proxychains3, если вам нужен IPv6).

Чтобы избежать префикса proxychain wget, вы можете создать алиас:

alias wget="proxychains wget"

На данный момент, мне не удалось использовать SOCKS-прокси для приложений Flatpak (это может сработать с redsocks, но весь трафик вашего компьютера будет проходить через прокси, как при использовании VPN):

https://github.com/flatpak/flatpak/issues/2297#issuecomment-2726693270

Даже без использования Flatpak, некоторые приложения, такие как VLC, не работают с proxychains:

https://github.com/rofl0r/proxychains-ng/issues/364

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

Чтобы использовать SOCKS-прокси в терминале и обеспечить доступ к заблокированным сайтам через такие команды, как wget, нужно прежде всего понимать, как работает конфигурация прокси на уровне системы и приложений. Рассмотрим эту задачу на примере использования Selektor, похожего на Tor Vidalia Bundle, с настройкой безопасного SOCKS-прокси на порту 9054.

Теория

SOCKS-прокси действует на уровне транспортного протокола и может пропускать через себя любые протоколы, включая HTTP и HTTPS, в отличие от более специализированных прокси (например, HTTP-прокси), которые ограничены определенными протоколами или портами. Однако, командная утилита wget по умолчанию не поддерживает SOCKS-прокси напрямую, так как она больше оптимизирована для работы через HTTP-прокси. Для того чтобы направить весь трафик через SOCKS-прокси, потребуется использование дополнительных инструментов или настроек.

Пример

В данном случае, чтобы перенаправить трафик команд, таких как wget, через SOCKS-прокси, можно воспользоваться такими инструментами, как proxychains или torsocks. Эти программы позволяют принудительно направить сетевой трафик от произвольных приложений через SOCKS-прокси. Попробуем разобраться, как они работают.

  • Proxychains: Этот инструмент добавляет возможность использования ПО с SOCKS-прокси без изменения исходного кода приложения. Proxychains действует путем перехвата вызовов сети и перенаправления их через указанный прокси.

    Настроим proxychains:

    1. Установите proxychains через пакетный менеджер вашей системы (например, apt, yum, pacman).
    2. Откройте файл конфигурации proxychains.conf (обычно находится в /etc/proxychains.conf или $HOME/.proxychains/proxychains.conf).
    3. Добавьте или измените последнюю строку, чтобы указать ваш SOCKS-прокси:
      socks5 127.0.0.1 9054
    4. Запустите команду wget через proxychains:
      proxychains wget http://torproject.org
  • Torsocks: Это еще один инструмент для принудительного использования Tor через SOCKS-прокси. Как и proxychains, он перехватывает системные вызовы, направляя их через Tor.

    Настроим torsocks:

    1. Установите torsocks через пакетный менеджер.
    2. Выполните команду с использованием torsocks:
      torsocks wget http://torproject.org

Применение

Вы также упомянули, что не хотите использовать префиксы, так как это неудобно. Чтобы избежать использования префиксов, можно изменить команды оболочки с помощью aliases:

  1. Используйте alias, чтобы автоматически применять proxychains к wget:

    alias wget='proxychains wget'

    Это позволит вам использовать wget как обычно, но с перенаправлением через прокси.

  2. В случае использования torsocks, настройка аналогична:

    alias wget='torsocks wget'
  3. Добавьте эту строку в файл конфигурации вашей оболочки, например, .bashrc или .zshrc, чтобы применить изменения глобально для всех сессий терминала.

Вам также стоит учитывать ситуацию, если вам нужно применять эти настройки к нескольким приложениям или если нужно обеспечить работу через прокси всех сетевых приложений системы. В таком случае, стоит рассмотреть глобальные решения, такие как настройка прокси на уровне операционной системы или использование виртуальных частных сетей (VPN).

Важно помнить, что не все программы могут работать через такие инструменты, как proxychains, из-за того, как они управляют сетевыми вызовами. На практике, если wget или другое приложение не поддерживает прокси напрямую, использование таких инструментов является одним из оптимальных решений, обеспечивающих гибкость и простоту конфигурации.

Таким образом, использование SOCKS-прокси через терминал может потребовать от вас настроить дополнительные инструменты, чтобы обеспечить желаемую маршрутизацию трафика. Однако, как видно из примеров, сделать это вполне возможно и относительно просто путем применения таких утилит, как proxychains и torsocks, с минимальными изменениями в конфигурациях.

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

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