Настройка простого SOCKS5-прокси сервера в Debian Linux


VPN-технологии для объединения офисов и обхода блокировок
3proxy cv debian install linux
 
 

* В этом блоге я описываю свою повседневную рабочую практику, поэтому все статьи в блоге написаны лично мной и при копировании их на свой сайт пожалуйста указывайте ссылку на страницу откуда вы скопировали.
* Если какая-то статья вам помогла, то вы можете дать мне немного денег вместо простого спасибо (ссылка на форму поддержки проекта внизу страницы), если вы что-то не поняли или у вас что-то не получается, то вы можете нанять меня и я вам все подробно расскажу (расценки и ссылки в конце статьи).


(последние правки 5 дней, 18 часов)

Фактически, мне требовалось настроить проксирование трафика для одного браузера через удаленный хост - это задача достаточно типовая, поэтому сразу перейдем к делу и рассмотрим практическую реализацию этого кейса. 3proxy не входит в штатные пакеты Debian/Ubuntu, поэтому мы соберем его из исходных кодов. Дополнительно расскажу как можно ограничить доступ к 3Proxy-серверу по IP-адресу, если ваш роутер не поддрживает полноценные ограничения по адресам источника (Source IP).

Официальная страничка проекта на GitHub расположена по адресу https://github.com/z3APA3A/3proxy.git, нам понадобится подготовить окружение для сборки и собрать приложение из исходных кодов (в общем, ничего нового):

# apt-get install -y build-essential git tar gzip
# cd /usr/src/
# git clone https://github.com/z3APA3A/3proxy.git
# cd ./3proxy/
# make -f Makefile.Linux

Собирается бинарный файл без скриптов установки и нам придется самостоятельно скопировать бинарный файл proxy-сервера и его каталог конфигурации:

# cp ./src/3proxy /usr/local/bin/
# cp ./cfg/3proxy.cfg.sample /etc/3proxy.cfg

Естественно, что запускать это приложение от имени супер-пользователя root не стоит, поэтому создадим группу и пользователя 3proxy:

# useradd 3proxy
# passwd 3proxy

Пароль пользователя я задал для тестирования на период отладки, вы можете не задавать ему пароль или вообще сделать пользователя системным. Конфигурационный файл довольно простой и мы его еще больше упростим и 3proxy будет у нас работать только как SOCKS5-прокси без авторизации, а удаленный доступ к прокси-серверу мы ограничим средствами роутера.

setgid 1001
setuid 1001
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
daemon
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
allow *
socks -p1080 -a

В конфигурации прокси-сервера setgid и setuid - это ID-пользователя 3proxy полученные командой:

# id 3proxy

Не забываем сменить владельца на каталоге с логами и конфигурационном файле:

# mkdir /var/log/3proxy
# chown 3proxy:3proxy /var/log/3proxy
# chown 3proxy:3proxy /etc/3proxy.cf

Тестовый запуск можно провести командой:

# 3proxy /etc/3proxy.cfg

Проверьте, что SOCKS5-прокси сервер принимает соединения и, в случае ошибки, проверьте лог-файлы в каталоге /var/log/3proxy. Если тестирование прошло успешно, можно остановить демон и создать сервис SystemD для автоматического запуска при старте сервера:

# killall 3proxy

Файл описания сервиса (файл /lib/systemd/system/3proxy.service) содержит следующие записи:

[Unit]
Description=3Proxy SOCKS5 Daemon
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
ExecStart=/usr/local/bin/3proxy /etc/3proxy.cfg

[Install]
WantedBy=multi-user.target

Активируем автозапуск и запускаем:

# systemctl enable 3proxy
# systemctl start 3proxy

Для проверки того, что автозапуск проходит корректно можно перезапустить весь сервер, если там ничего важного не запущено. Дополнительно расскажу как можно ограничить доступ к 3Proxy-серверу по IP-адресу, если ваш роутер не поддерживает полноценные ограничения по адресам источника (Source IP).

В этом случае, вам потребуется привести конфигурацию 3proxy к следующему виду:

setgid 1001
setuid 1001
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
daemon
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
auth iponly
allow * 178.49.118.251
socks -p3128 -a
Моя официальная страница на FaceBook
Мой микроблог в твиттер

Как сделать Double VPN - Подробная инструкция

Как сделать Double VPN - Подробная инструкция

В мире анонимайзеров нововведение, - Double VPN. Основной особенностью его является то, что сервер к которому мы подключаемся и сервер точкой выхода которого будет исходящий трафик, это два разных сервера, причем желательно расположенные в разных странах. Особой сложности реализация такого механизма не представляет, хотя некоторые интересные моменты там есть. Типовая схема реализации маршрутизации трафика через OpenVPN сервер использует механизм NAT и собственно сам OpenVPN в режиме изменения основного шлюза. В этом случае весь трафик клиента перенаправляется на сервер OpenVPN, где уже направляется далее в сеть Internet с подменой адреса источника.


OpenVPN-сеть для LXD-кластера без назначения адресов клиентов (использование стороннего DHCP для управления клиентами VPN-сети)

OpenVPN-сеть для LXD-кластера без назначения адресов клиентов (использование стороннего DHCP для управления клиентами VPN-сети)

Представляю вашему вниманию небольшой экскурс в активно используемую мной технологию построения распределенных виртуальных сетей на базе OpenVPN в немного непривычной реализации. Если вы работаете с OpenVPN технологиями, то наверное обратили внимание что практически все руководства описывают OpenVPN сеть где OpenVPN-сервер выступет в качестве DHCP-сервера и назначает адреса для своих клиентов, но я сегодня хотел бы предложить вам уйти от типовых реализаций.


Разработка собственного модуля авторизации для OpenVPN

Разработка собственного модуля авторизации для OpenVPN

Как вы наверное знаете помимо стандартной авторизации по ключам и сертификатам вы можете дополнительно использовать парольную защиту как дополняющий механизм к модели сертификатов или полностью перейти исключительно на парольную авторизацию. Стоит отметить, что защищенность OpenVPN с авторизацией с использованием Login/Password будет гораздо выше чем использование механизмов PPTP например.


Как вы наверное понимаете, бесплатно сейчас работать никто не будет и если ответ на ваш вопрос потребует больше трех минут времени и вам требуется полноценная консультация, то расценки на мои услуги представленны ниже.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .