Найти в Дзене
Просто об IT

Запускаем прокси-сервер за 10 минут

Рассмотрим, что такое SOCKS5 прокси.

В отличие от HTTP прокси-серверов, SOCKS передаёт все данные от клиента, ничего не добавляя от себя, то есть с точки зрения конечного сервера, данные, полученные им от SOCKS-прокси, идентичны данным, которые клиент передал бы напрямую, без проксирования. SOCKS более универсален, он не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и оперирует на уровне TCP-соединений (4‑й уровень модели OSI). SOCKS 5-й версии поддерживает аутентификацию пользователя.

Таким образом мы получаем:

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

Основными требованиями для дальнейшей работы являются два компонента: Debian 9 и Dante-Server. Вместо Debian у вас может быть любая Unix-подобная ОС, а Dante был выбран за неимением достойной альтернативы на мой взгляд.

Первым делом подключаемся по SSH к нашему серверу (инструкция для Windows-пользователей).

Если такого нет - можно арендовать за небольшие деньги у Digital Ocean или у любого другого хостера, который предоставляет VPS (Virtual Private Server).

После успешного входа в систему, первым делом стоит обновить систему и пакеты:

apt update && apt dist-upgrade

И ставим Dante-Server:

apt install dante-server

Сразу же после установки открываем и правим конфигурационный файл:

sudo nano /etc/danted.conf
logoutput: stderr
internal: eth0 port = 8467
external: eth0
socksmethod: username

user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody

client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

-2

logoutput: stderr - программ будет писать логи только о критических ошибках. Для отладки можно добавить параметр syslog чтобы ввелись логи подключения в /etc/log/syslog.

internal: eth0 port = 8467 - листенер сервера на нестандартном порту на eth0.

external: eth0 - исходящий трафик будет проходить через интерфейс eth0.

socksmethod: username - для авторизации по локальному пользователю.

user.privileged: root - чтобы dante-server смогла читать файл /etc/passwd для авторизации пользователей.

client pass и socks pass - доступ ото всюду, куда угодно.

Подробнее о более точной настройке можно почитать в сети.

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

useradd -s /bin/false testuser && passwd testuser

Разрешаем TCP порт 8467, который должен слушаться:

#Если используете iptables:
iptables -A INPUT -p tcp --dport 8467 -j ACCEPT

#Или же UFW:
ufw allow 8467/tcp

Запускаем Dante-server и добавляем в автозагрузку:

systemctl restart danted
systemctl enable danted

Проверяем соединение с proxy в Firefox:

-3

Все работает, мы справились. Можно смело прописывать настройки в приложение, на котором требуется использование прокси.