Развёртывание прокси-сервиса

Здесь мы предлагаем два способа установки SOCKS5-прокси. Чтобы избежать проблем, внимательно ознакомьтесь с описанием.

Если нужно проксировать UDP

Из-за особенностей проксирования UDP через SOCKS5 могут возникать многочисленные непредвиденные проблемы, и ситуация становится всё сложнее. Если вы точно уверены, что вам нужен UDP, обязательно соблюдайте следующие правила: во-первых, ваша хостовая система должна быть Linux, и в брандмауэре необходимо открыть UDP-порты 50000-55000; во-вторых, сеть вашего сервера не должна быть NAT (FULL NAT тоже не подходит — сейчас многие облачные серверы работают в режиме NAT).

Совет

Почему хостовая система должна быть Linux? Потому что на других системах Docker может некорректно пробрасывать такой большой диапазон портов, а также в других системах сетевой режим Docker невозможно установить в режим хоста (host).

Если вы не уверены, находится ли сеть вашего сервера за NAT, получите IP-адрес сетевого интерфейса по умолчанию с помощью команды ifconfig или аналогичной, а затем выполните ping этого адреса с машины, на которой хотите использовать прокси. Если пинг не проходит, скорее всего ваш сервер находится в NAT-сети. Конечно, даже если некоторые условия не выполнены, это не означает, что UDP полностью недоступен: вы можете самостоятельно развернуть gost, конкретный способ описан в конце документа.

Внимание

Из-за особенностей проксирования UDP через SOCKS5, если вам точно нужен UDP, обязательно настройте брандмауэр так, чтобы разрешить UDP-связь по всем портам.

Если проксирование UDP не требуется

Если вам не нужно проксировать UDP, всё очень просто. Выполните следующую команду, чтобы запустить SOCKS5-сервис.

docker run -it --rm -p 1080:1080 --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5

Указание сетевого интерфейса для исходящего трафика

Если у вашего сервера или компьютера есть несколько сетевых интерфейсов с выходом в интернет, например, на домашнем компьютере вы подключены к двум сетям — по кабелю и по Wi‑Fi, — то у вас может быть два сетевых интерфейса, например wlan0 и eth0. Если вы хотите указать, какой сетевой интерфейс использовать для исходящего трафика прокси, например, выходить через eth0, запустите SOCKS5-сервис следующей командой.

Внимание

Ваш компьютер или сервер должен работать под управлением Linux; другие системы не поддерживают указание исходящего сетевого интерфейса.

docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd -e DEV=eth0 rev1si0n/socks5

Если вы уже выполнили все предварительные условия для использования UDP, воспользуйтесь следующей командой.

docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5

Использование GOST

Если вы хотите использовать UDP, но не можете выполнить условия, описанные выше, или вам не нужно указывать исходящий интерфейс, или вы не хотите устанавливать Docker, попробуйте gost. Скачайте архив с исполняемым файлом для вашей системы со страницы github.com/ginuerzh/gost/releases/.

gost -L=socks5://username:passwd@:1080

Подсказка

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