Skip to main content

Установка WireProxy

В этой статье мы рассмотрим процесс создания SOCKS5-прокси с использованием Wireproxy, а также способы подключения к нему через расширение FoxyProxy для браузера Firefox.

Wireproxy — это клиент WireGuard, который выступает в роли прокси-сервера SOCKS5/HTTP или туннеля. Это решение может быть особенно полезным в случаях, когда необходимо подключиться к определенным сайтам через пир WireGuard, но нет желания или возможности настраивать новый сетевой интерфейс по различным причинам​.

Основные причины, по которым Wireproxy может быть предпочтительным выбором:

  • Использование WireGuard в качестве средства проксирования трафика.

  • Отсутствие необходимости получения прав администратора для изменения настроек WireGuard.

Wireproxy обеспечивает полную изоляцию от сетевых интерфейсов устройства, что позволяет использовать его без необходимости конфигурирования с правами администратора. 

Основные функции Wireproxy:

  • Статическая маршрутизация TCP для клиента и сервера.

  • Поддержка прокси SOCKS5/HTTP (на данный момент поддерживается только CONNECT)​​.

Разработчики Wireproxy также работают над добавлением новых возможностей, включая поддержку UDP в SOCKS5 и статическую маршрутизацию UDP​​.

Установка Wireproxy

Wireproxy — это кроссплатформенная утилита, поддерживающая множество операционных систем, включая Linux, macOS и Windows. Есть два основных способа установки Wireproxy: сборка проекта из исходного кода с использованием Go и загрузка готовой собранной версии для соответствующей платформы. Ниже представлены пошаговые инструкции для каждого из этих методов.

Выбор метода установки зависит от ваших предпочтений и требований: если вам важно использовать последнюю версию исходного кода, предпочтительнее сборка из исходников. Для стабильности и удобства подойдет предварительно скомпилированная версия.

Установка предварительно скомпилированной версии (на примере Windows)

  1. Перейдите на страницу релизов на Гитхабе и скачайте файл архив для вашей операционной системы. Так как в примере рассматривается установка в Windows, загрузите wireproxy_windows_amd64.tar.gz.

  2. Распакуйте архив и поместите wireproxy.exe в удобное место, например, создайте папку wireproxy на рабочем столе.

  3. Откройте командную строку Windows или PowerShell и перейдите в созданную папку с помощью команды cd Desktop\wireproxy.

  4. Выполните команду wireproxy.exe -v для проверки корректной работы утилиты.

Сборка из исходного кода с использованием Go (на примере Linux)

Предварительные требования:

  • Убедитесь, что на вашем устройстве установлена версия Go не ниже 1.20. Это можно проверить командой go version.
  • Если Go не установлен в вашей системе, вы можете воспользоваться этой инструкцией для установки на Ubuntu 22.04 или этой для установки Go в Windows.

Процесс сборки:

  1. Откройте терминал и выполните команды для клонирования репозитория Wireproxy:

    

    git clone https://github.com/octeep/wireproxy
cd wireproxy
  

2. В директории проекта выполните команду make для запуска процесса компиляции.

3. После завершения сборки выполните ./wireproxy -v, чтобы убедиться в корректной работе утилиты.

Настройка Wireproxy

После успешной установки Wireproxy на ваше устройство следующим шагом является настройка утилиты. 

Чтобы начать, вам необходим файл конфигурации для подключения к WireGuard. Вы можете создать новый сервер и настроить WireGuard вручную, следуя, например, этой инструкции Timeweb Cloud.

Другой вариант – использовать раздел «Маркетплейс» при создании сервера и выбрать «Wireguard-GUI»:

Image3

В общем виде, файл конфигурации WireGuard будет выглядеть примерно так:

    

    [Interface]
PrivateKey = [Ваш_личный_ключ]
Address = 10.0.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = [Публичный_ключ_сервера]
Endpoint = [IP_сервера:порт]
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
  

Конфигурационный файл Wireguard необходимо поместить в папку wireproxy, созданную ранее. В примере конфигурационный файл Wireguard имеет имя wg.conf.

В директории wireproxy создайте файл wp.conf, в котором будет описана конфигурация для создания SOCKS5-прокси:

    

    WGConfig = ./wg.conf

[Socks5]
BindAddress = 127.0.0.1:25344
Username = timeweb
Password = timeweb
  
  • В параметре WGConfig указывается путь к вашему конфигу WireGuard.

  • BindAddress определяет локальный адрес и порт для прокси.

  • Username и Password — это логин и пароль для подключения к прокси (эти параметры не обязательны).

Чтобы проверить правильность конфигурации, выполните команду ниже.

Для Linux:

    

    ./wireproxy -c wp.conf -n
  
 
Для Windows:
    

    wireproxy.exe -c wp.conf -n
  

Это позволит убедиться, что конфигурация описана правильно, без запуска самого прокси.

Для запуска Wireproxy выполните команду:

    

    ./wireproxy -c wp.conf
  

Для Windows:

    

    wireproxy.exe -c wp.conf
  

Для фонового запуска используйте параметр -d:

    

    ./wireproxy -c wp.conf -d     #Linux

wireproxy.exe -c wp.conf -d     #Windows
  

Подключение к Wireproxy через браузерное расширение

Для использования Wireproxy через браузер, можно воспользоваться специализированными расширениями для управления прокси-серверами. В этом примере мы рассмотрим настройку подключения к прокси в браузере Firefox с использованием расширения FoxyProxy, но аналогичные шаги могут быть выполнены и в других браузерах, например, в Google Chrome с помощью расширения Proxy SwitchyOmega.

Установка и настройка FoxyProxy в Firefox

Перейдите по ссылке Foxy Proxy для Firefox и установите расширение в ваш браузер.

После установки нажмите на иконку Foxy Proxy и выберите 'Options' для перехода в меню настроек.

Image5

В меню настроек нажмите на 'Add' для добавления новой конфигурации прокси.

Image4

В разделе 'Proxy Type' выберите 'SOCKS5'.

В поле 'Proxy IP' введите '127.0.0.1', а в поле 'Port' укажите '25344'. Если в конфигурации Wireproxy заданы логин и пароль, введите их в соответствующие поля 'Username' и 'Password'.

Image1

После внесения всех настроек нажмите на кнопку 'Save' для сохранения конфигурации.

Ещё раз нажмите на иконку Foxy Proxy и выберите созданную конфигурацию для подключения к прокси-серверу.

Image6

Для проверки работы прокси перейдите на сайт 2ip.ru и убедитесь, что IP-адрес изменился. Это подтвердит, что ваш трафик теперь проходит через настроенный Wireproxy.

Image2

Для более гибкой настройки работы с прокси, FoxyProxy предлагает функцию паттернов. Это позволяет настроить использование прокси-серверов только для определённых сайтов. Чтобы задать паттерны, откройте меню расширения FoxyProxy и выберите 'Options'. В уже созданном подключении нажмите на кнопку 'Patterns'.

Image7

Затем, чтобы активировать использование паттернов, кликните на иконку расширения FoxyProxy и выберите опцию 'Use Enable Proxies By Patterns and Order'.

Image8

После этих настроек подключение к прокси будет осуществляться только для сайтов, указанных в ваших паттернах.

Заключение

В этой статье мы рассмотрели процесс установки и настройки Wireproxy, инструмента для создания SOCKS5/HTTP-прокси через WireGuard. Отличительной особенностью Wireproxy является его способность работать в пользовательском пространстве, что упрощает настройку и использование, особенно для пользователей, не имеющих прав администратора. Мы также описали интеграцию Wireproxy с браузерными расширениями для управления прокси, добавляющую удобство в использовании.

 

Автозапуск WireProxy 

Running wireproxy with systemd

If you're on a systemd-based distro, you'll most likely want to run Wireproxy as a systemd unit.

The provided systemd unit assumes you have the wireproxy executable installed on /opt/wireproxy/wireproxy and a configuration file stored at /etc/wireproxy.conf. These paths can be customized by editing the unit file.

Setting up the unit

  1. Copy the wireproxy.service file from this directory to /etc/systemd/system/, or use the following cURL command to download it:

    sudo curl https://raw.githubusercontent.com/pufferffish/wireproxy/master/systemd/wireproxy.service > /etc/systemd/system/wireproxy.service
    
  2. If necessary, customize the unit.

    Edit the parts with ExecStartPre= and ExecStart= to point to the executable and the configuration file. For example, if wireproxy is installed on /usr/bin and the configuration file is located in /opt/myfiles/wireproxy.conf do the following change:

    ExecStartPre=/usr/bin/wireproxy -n -c /opt/myfiles/wireproxy.conf
    ExecStart=/usr/bin/wireproxy -c /opt/myfiles/wireproxy.conf
    

    2.2 Drop root privileges (optional, but recommended)

    Without any modifications, this Wireproxy service will run as root. You might want to drop those privileges. One way to do this is to simply create a system account for Wireproxy (or just use your own user account to run it instead).

    sudo useradd --comment "Wireproxy tunnel" --system wireproxy
    

    Then uncomment these lines from the wireproxy.service:

    #User=wireproxy
    #Group=wireproxy
    

    Caveats:

    1. Make sure wireproxy user can read the wireproxy configuration file.
    2. Also note that unprivileged user cannot bind to ports below 1024 by default.
  3. Reload systemd and enable the unit.

    sudo systemctl daemon-reload
    sudo systemctl enable --now wireproxy.service
    
  4. Make sure it's working correctly.

    Finally, check out the unit status to confirm wireproxy.service has started without problems. You can use commands like systemctl status wireproxy.service and/or sudo journalctl -u wireproxy.service.

Additional notes

If you want to disable the extensive logging that's done by Wireproxy, simply add -s parameter to ExecStart=. This will enable the silent mode that was implemented with pull/67.