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

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

## Проксирование UDP-протокола

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

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

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

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

## Без проксирования UDP-протокола

Если вам не требуется проксирование UDP-протокола, то все становится намного проще. Следующая команда запустит SOCKS-сервис.

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

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

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

```{attention}
Ваш компьютер или сервер должен работать под управлением Linux. Другие операционные системы не поддерживают указание сетевого интерфейса.
```

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

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

```bash
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/](https://github.com/ginuerzh/gost/releases).

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

```{hint}
После завершения всех операций по развертыванию, обратитесь к разделу о настройке прокси, чтобы узнать, как настроить сетевой прокси на вашем устройстве.
```