В
прошлом посте разобрались с WireGuard в Ubuntu. Но при этом получили решение, которое не позволяет перенаправлять трафик для выбранных приложений и/или сайтов. Для этого нам понадобится
WireProxy Чтобы скомпилировать WireProxy в Ubuntu, выполните команды в терминале:
git clone
https://github.com/octeep/wireproxycd wireproxy
sudo apt install golang-go
go build ./cmd/wireproxy
Далее для проверки работоспособности запустите в терминале
./wireproxy -v
Поместите конфигурационный файл WireGuard (в данном случае с именем server-country-wireguard.conf) в папку /opt/myfiles/
sudo mkdir /opt/myfiles
cp server-country-wireguard.conf /opt/myfiles
Создайте файл wireproxy.conf, в котором будет описана конфигурация для создания SOCKS5-прокси
sudo gedit /opt/myfiles/wireproxy.conf
WGConfig = /opt/myfiles/server-country-wireguard.conf
[Socks4]
BindAddress = 127.0.0.1:64422
[Socks5]
BindAddress = 127.0.0.1:64423
[http]
BindAddress = 127.0.0.1:64424
Username = alex
Password = alex
BindAddress определяет локальный адрес и порт для прокси. Username и Password - это логин и пароль для подключения к прокси (их не обязательно использовать, тем более что расширение для Google Chrome в Ubuntu выдавало у меня сообщение, что данный браузер не поддерживает авторизацию для Sock5/Sock4 Proxy).
Скопируйте wireproxy в папку /usr/bin
cp wireproxy /usr/bin
Чтобы проверить правильность конфигурации wireproxy, введите в терминале
/usr/bin/wireproxy -c /opt/myfiles/wireproxy.conf -n
Для запуска wireproxy выполните:
/usr/bin/wireproxy -c /opt/myfiles/wireproxy.conf
Для автозапуска можно использовать systemd
Создаем новый файл:
sudo gedit /etc/systemd/system/wireproxy.service
В данном конфигурационном файле указываем:
[Unit]
Description=Wireproxy socks5/http tunnel
Wants=network-online.target
After=network-online.target
#After=network.target
[Service]
#User=wireproxy
#Group=wireproxy
SyslogIdentifier=wireproxy
Type=simple
Restart=on-failure
RestartSec=30s
DynamicUser=yes
LoadCredential=conf:/opt/myfiles/wireproxy.conf
ExecStartPre=/usr/bin/wireproxy -n -c ${CREDENTIALS_DIRECTORY}/conf
ExecStart=/usr/bin/wireproxy -c ${CREDENTIALS_DIRECTORY}/conf
#LoadCredential=conf:/etc/wireproxy.conf
#ExecStartPre=/opt/wireproxy/wireproxy -n -c ${CREDENTIALS_DIRECTORY}/conf
#ExecStart=/opt/wireproxy/wireproxy -c ${CREDENTIALS_DIRECTORY}/conf
# Required if <1024 port
#AmbientCapabilities=CAP_NET_BIND_SERVICE
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
LimitNPROC=64
LockPersonality=true
MemoryDenyWriteExecute=true
NoNewPrivileges=true
PrivateDevices=true
PrivateTmp=true
PrivateUsers=true
ProcSubset=pid
ProtectClock=true
ProtectControlGroups=true
ProtectHome=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
ProtectSystem=strict
RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK
RestrictNamespaces=true
RestrictRealtime=true
SystemCallArchitectures=native
SystemCallFilter=@system-service
[Install]
WantedBy=multi-user.target
Далее перезапускаем
sudo systemctl daemon-reload
Добавляем в автозапуск:
sudo systemctl enable wireproxy.service
После проверяем статус работы:
sudo systemctl status wireproxy.service
При некорректной работе смотрим журнал ошибок
journalctl -u wireproxy.service
Когда локальный прокси для Wireguard работает, можем его использовать. Для этого хорошо подходят расширения
Proxy SwitchyOmega,
FoxyProxy для Chrome и
FoxyProxy для FireFox.
Просто добавляем в настройках Proxies новый прокси сервер типа Sock5 с хостом 127.0.0.1 и номером порта из wireproxy.conf для Sock5.
После этого можно также указать домены, для которых будет применяться локальный прокси сервер (перенаправляющий трафик через Wireguard).