Как настроить прокси SOCKS5 на виртуальном частном сервере (VPS)

Как настроить прокси SOCKS5 на виртуальном частном сервере (VPS)

07:45, 02.12.2022

Содержание статьи
arrow

  • Какие существуют типы прокси
  • Как настроить прокси SOCKS5 на виртуальном сервере c Ubuntu 18 и выше
  • Установка SOCKS сервера Dante в Ubuntu 16.04

  • Как настроить автозапуск сервера
  • Заключение

Какие существуют типы прокси

Основных типов прокси существует пять:

  1. FTP прокси – их используют для загрузки данных на FTP сервера.
  2. CGI (анонимайзеры) – как правило, это веб-сайты, посредством которых можно получить доступ к любым другим заблокированным сайтам. То есть если вы, например, хотите посетить сайт, который заблокирован в вашей стране, достаточно перейти на такой сайт-анонимайзер и ввести искомый URL в адресное поле. Ничего устанавливать на компьютер не нужно – всё происходит через облако. Единственный недостаток – могут стоить денег.
  3. SMTP, POP3 и IMAP – технологии, которые используют для отправки и приема электронной почты.
  4. HTTP и HTTPS прокси – нужны для просмотра веб-страниц.
  5. SOCKS5 – сервис, перенаправляющий исходящий и входящий интернет-трафик через удаленный прокси-сервер. Обеспечивает маскировку вашего реального IP-адреса, скрывает геолокацию и предотвращает случайные утечки конфиденциальной информации. Оптимальный вариант для обхода региональной цензуры для VPS.

Наиболее продвинутой и массовой технологией является SOCKS5, и она же лучше всего подходит для использования в связке с VPS.

Как настроить прокси SOCKS5 на виртуальном сервере c Ubuntu 18 и выше

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

Первым делом арендуйте VPS на базе Ubuntu 18.04.4 LTS. Здесь всё просто – свяжитесь с интересующим хостинг-провайдером и сообщите, какой тарифный план вас интересует. Вам помогут подобрать оптимальный по мощности VPS или VDS индивидуально.

Далее подключитесь к серверу от имени администратора и обновите пакеты:


apt update
apt full-upgrade


Узнайте, какая версия пакета Dante SOCKS сервера в ваших репозиториях:

apt search dante-server
 
dante-server/jammy 1.4.2+dfsg-7build4 amd64
  SOCKS (v4 and v5) proxy daemon (danted)


Теперь устанавливаем Dante:

apt install dante-server


И ставим его в автозагрузку:

systemctl is-enabled danted
enabled


Теперь откройте конфигурационный файл /etc/danted.conf в режиме редактирования и пропишите туда необходимые параметры. Пример содержимого:

logoutput: syslog stdout /var/log/sockd.log
#logoutput: stderr
 
internal: ens3 port = 1080
external: ens3
 
socksmethod: username
#socksmethod: username none
 
user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody
 
client pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: error connect disconnect
}
 
client block {
        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: error connect disconnect
}
 
socks block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error

}


Здесь требуются некоторые разъяснения:

  • logoutput – определяет механизм регистрации подключений (в нашем примере всё будет происходить через стандартный системный лог).
  • user.privived – предоставление серверу root-прав для проверки разрешений.
  • user.uncitationd – необходимо, чтобы заблокировать работу сервера в качестве пользователя без привилегий.
  • internal – задает порт, на котором запущен сервис, а также IP-адреса, разрешенные для подключения.
  • external – определяет сетевой интерфейс для исходящих подключений.

Теперь переходим к созданию пользователя, который и будет использовать наш SOCKS5 сервер. Его обязательно нужно добавить в группу прокси:

useradd -s /bin/false proxyuser && sudo passwd proxyuser
usermod -aG proxy proxyuser


Далее в фаерволе разрешаем порт TCP 1080 для подключения клиентов:

sudo ufw allow 1080/tcp

На этом настройка прокси SOCKS5 на VPS завершена. После этого проверьте подключение через Dante – воспользуйтесь каким-нибудь бесплатным антидетект браузером с поддержкой SOCKS5: например, Dolphin Anty или любым другим аналогичным.

Как настроить прокси socks5 на виртуальном частном сервере (vps)

Установка SOCKS сервера Dante в Ubuntu 16.04

На столь старых версиях Ubuntu по умолчанию установлена устаревшая версия Dante Server 1.1.19, которая, ко всему прочему, не работает с логином и паролем. То есть доступ к прокси регулируется исключительно путем модификации правил iptables. Таким образом, сперва нам потребуется установить и установить необходимый для сборки набор софта и зависимостей:

apt-get install -y autoconf automake libtool pkg-config checkinstall libwrap0 libwrap0-dev libpam0g-dev


Следом создаем каталог для последующей работы и переходим в него:

mkdir dante && cd ~/dante

Теперь перейдите на официальный сайт разработчиков и загрузите последнюю версию Dante. Сделать это можно и через командную строку:

wget https://www.inet.no/dante/files/dante-1.4.2.tar.gz


Распакуйте и перейдите в соответствующий каталог:

tar -zxvf dante-1.4.2.tar.gz
cd dante-1.4.2

Задайте конфигурацию сборки:

./configure --prefix=/etc/dante

В итоге должно получиться что-то подобное:

Configure status:
Client:        	 Enabled
Server:        	Enabled
Preloading:	Enabled
Libwrap:     	Enabled
BSD Auth:   	Disabled, usable bsd_auth.h not found
PAM:           	Enabled
GSSAPI:       	Not found/disabled
KRB5:          	 Not found/disabled
SASL:          	  Not found/disabled
UPNP:          	Not found/disabled
Compatability: 	issetugid setproctitle strlcpy strvis
Modules:
redirect:      	Not found
bandwidth: 	Not found
ldap:         	    Not found


Следующий шаг – компиляция исходников:

make


Теперь можете приступать к установке собранного сервера. Лучше всего делать это через checkinstall:

checkinstall
# Нажмите y, затем Enter для создания каталога с документацией.
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]: y

Preparing package documentation...OK

# Описание можно не прописывать, везде жмите Enter
Please write a description for the package.
End your description with an empty line or EOF.

>> 


Когда установка будет завершена, создастся deb-пакет (dante_1.4.2-1_amd64.deb), его в любой момент можно установить на другую виртуальную машину, но теперь больше не потребуется предварительная конфигурация и сборка.

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

dpkg -r dante


Как настроить автозапуск сервера

Перейдите в директорию /etc/init.d/ и создайте скрипт с названием sockd:

nano /etc/init.d/sockd


Его содержимое должно выглядеть следующим образом:

#! /bin/sh
### BEGIN INIT INFO
# Provides:      	sockd
# Required-Start:	$remote_fs $syslog
# Required-Stop: 	$remote_fs $syslog
# Default-Start: 	2 3 4 5
# Default-Stop:  	0 1 6
# Short-Description: Start the dante SOCKS server.
# Description:   	SOCKS (v4 and v5) proxy server daemon (sockd).
#                	This server allows clients to connect to it and
#                    request proxying of TCP or UDP network traffic
#                	with extensive configuration possibilities.
### END INIT INFO
#
# dante SOCKS server init.d file. Based on /etc/init.d/skeleton:
# Version:  @(#)skeleton  1.8  03-Mar-1998  miquels@cistron.nl
# Via: https://gitorious.org/dante/pkg-debian
PATH=/sbin:/usr/sbin:/bin:/usr/bin
NAME=sockd
DAEMON=/etc/dante/sbin/$NAME
DAEMON_ARGS="-D"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
DESC="Dante SOCKS daemon"
CONFFILE=/etc/$NAME.conf
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
set -e
# This function makes sure that the Dante server can write to the pid-file.
touch_pidfile ()
{
  if [ -r $CONFFILE ]; then
    uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' $CONFFILE`"
	if [ -n "$uid" ]; then
      touch $PIDFILE
      chown $uid $PIDFILE
	fi
  fi
}
case "$1" in
  start)
	if ! egrep -cve '^ *(#|$)' \
        -e '^(logoutput|user\.((not)?privileged|libwrap)):' \
        $CONFFILE > /dev/null
	then
        echo "Not starting $DESC: not configured."
        exit 0
	fi
	echo -n "Starting $DESC: "
    touch_pidfile
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
        $DAEMON_ARGS \
        || return 2
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	echo "$NAME."
	;;
  reload|force-reload)
	#
    #   If the daemon can reload its config files on the fly
    #   for example by sending it SIGHUP, do it here.
	#
    #   Make this a do-nothing entry, if the daemon responds to changes in its config file
    #   directly anyway.
	#
 	echo "Reloading $DESC configuration files."
     start-stop-daemon --stop --signal 1 --quiet --pidfile \
        $PIDFILE --exec $DAEMON -- -D
  ;;
  restart)
	#
    #   If the "reload" option is implemented, move the "force-reload"
    #   option to the "reload" entry above. If not, "force-reload" is
    #   just the same as "restart".
	#
	echo -n "Restarting $DESC: "
    start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
	sleep 1
    touch_pidfile
    start-stop-daemon --start --quiet --pidfile $PIDFILE \
      --exec $DAEMON -- -D
	echo "$NAME."
	;;
  status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  *)
    N=/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|status|force-reload}" >&2
	exit 1
	;;
esac

exit 0


Сохраните изменения, и не забудьте этот скрипт сделать исполняемым:

chmod +x /etc/init.d/sockd


Перечитайте всех демонов:

systemctl daemon-reload


И добавьте sockd в автозапуск:

systemctl enable sockd
systemctl start sockd


И напоследок все проверьте:

systemctl status sockd


Отныне вы можете управлять прокси-сервером SOCKS с помощью стандартных команд systemctl.

Заключение

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

views 5m, 39s
views 2
Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.