Настройка простого SOCKS5 прокси-сервера для личного использования

Статья последний раз была обновлена 04.03.2023

Настройка простого SOCKS5 прокси-сервера для личного использования

Буквально пару недель назад развернулась настоящая эпопея с Телеграмом и его возможной блокировкой. Казалось счет шел на дни, но пока похоже конфликт на данной стадии исчерпан и Телеграм блокироватся не будет. Однако что-то мне подсказывает, что потенциальный читатель этой статьи примерно из зимы-весны 2018 года, когда вступили в силу новые пункты закона Яровой и Телеграм опять хотят заблокировать или уже это сделали.

Благо господин Дуров уже завез обновление на все платформы с поддержкой SOCKS5-прокси. Поэтому я решил написать простой минигайд о том, как сделать собственный прокси-сервер на дешевеньком VPS за 5 баксов.

Приступим!

Тема прокси для меня была весьма новой, поэтому пришлось сначала немного погуглить, чтобы разузнать что же за ПО для этого пресловутого SOCKS5 нужно вообще. Выбор быстро пал на Dante в виду его невероятно простой настройки.

За основу теперь я беру Debian 9, так как Debian 8 морально устарел. Ставим dante-server:

1
sudo apt-get install dante-server

Сходу демон Dante, danted, почему-то падает. Видимо косяк мейнтейнера пакета. Так что сразу лезем в конфиг:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo nano /etc/danted.conf
---
logoutput: stderr
internal: eth0 port = 1080
external: eth0
socksmethod: username
user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody
client pass {
from: 0/0 to: 0/0
log: error
}
socks pass {
from: 0/0 to: 0/0
log: error
}

Перед вами откроется подробный конфиг с множеством комментариев. В принципе вы можете просто всё удалить и вставить туда мой вариант, представленный выше. Но можно изучить его, раскомментировать и исправить нужные параметры.

ЧИТАЙТЕ ТАКЖЕ:  Прокси чекер / PROXY6.net

Немного подробностей

socksmethod: username — для авторизации по системному пользователю. Разумеется можно вообще написать none, но тогда ваш сервер рискует попасть в публичные «бесплатные списки». Можно использовать хитрый механизм pam c целым RADIUS-сервером, который будет авторизировать сотни пользователей. Но всё же моей целью был личный сервер для себя и друзей, а не высоконагруженный продакшен-сервер на тысячи пользователей 🙂

user.privileged: root — вместо дефолтного proxy ставим root, потому что нам нужно читать файл /etc/passwd для авторизации по системному пользователю.

А вот блоки client pass и socks pass и мутят всю магию прокси. Разумеется, можно покурить матчасть и поставить гору различных умных правил, но мне нужен был простой прокси, который в случае чего будет работать не только для Телеграма.

Конфиг готов?

Ctrl^O — сохраняем конфиг, Ctrl^X — выходим из nano. Теперь будет разумным сделать отдельного пользователя, особенно если вы не хотите чтобы пароль от вашего VPS узнали друзья, подключаясь к вашему прокси.

1
2
3
sudo useradd proxy
sudo passwd proxy
[Вводим дважды пароль]

Готово, пользователь создан. Осталось только перезапустить службу:

1
sudo systemctl restart danted

Всего нужно будет помнить 4 настройки:
IP-адрес вашего сервера, порт (в моем конфиге 1080), логин (в моем примере proxy) и пароль, который вы этому пользователю указали. Коннект должен пройти удачно.

Небольшая заметка

Я немного перфекционист и решил сделать субдомен для прокси, чтобы моим знакомым и друзьям не нужно было запоминать странный IP-адрес. Однако столкнулся с забавной сложностью. Дело в том, что в домене я прописал A- и AAAA-записи сразу, так как сервер поддерживал IPv6. Однако изначально я настроил сервер Dante без поддержки IPv6. В итоге мой ПК пытался подключится по умолчанию через IPv6, но не получал ответа. Возможно кому-то это пригодится, потому что я потратил на это не мало часов…

ЧИТАЙТЕ ТАКЖЕ:  Расширенный FAQ по работе с прокси

P.S. Ссылки на прокси в Телеграме можно распостранять в интересном формате:
https://t.me/socks?server=IP&port=PORT&user=USERNAME&pass=PASSWORD

https://krasovsky.me/it/2017/07/socks5-dante/index.html

Губарь Маргарита Александровна