Cómo configurar un proxy SOCKS5 en un Servidor Virtual (VPS)
08:12, 30.11.2022
Qué tipos de proxies hay disponibles
Hay cinco tipos básicos de proxies:
- Proxies FTP - se utilizan para descargar datos en servidores FTP.
- CGI (anonimizadores) - por regla general, son sitios web a través de los cuales se puede acceder a cualquier otro sitio bloqueado. Es decir, si quieres, por ejemplo, visitar un sitio que está bloqueado en tu país, sólo tienes que ir al anonimizador del sitio, e introducir la URL deseada en el campo de la dirección. No es necesario instalar nada en tu ordenador, todo se hace a través de la nube. El único inconveniente es que puede costar dinero.
- SMTP, POP3 e IMAP son tecnologías utilizadas para enviar y recibir correo electrónico.
- Los proxies HTTP y HTTPS son necesarios para la navegación web.
- SOCKS5: es un servicio que redirige el tráfico saliente y entrante de Internet a través de un servidor proxy remoto. Enmascara su dirección IP real, oculta la geolocalización y evita las filtraciones accidentales de información confidencial: la opción óptima para eludir la censura regional para VPS.
La tecnología más avanzada y masiva es SOCKS5, y también es la más adecuada para utilizarla junto con VPS.
Cómo configurar un proxy SOCKS5 en un servidor virtual con Ubuntu 18 y superior
Reconozcámoslo, no va a ser rápido ni fácil. Pero si sigue nuestras instrucciones claramente, no le llevará mucho tiempo ni esfuerzo.
En primer lugar, alquila un VPS basado en Ubuntu 18.04.4 LTS (https://www.hostzealot.com/vps/os-ubuntu ). Es fácil: póngase en contacto con su proveedor de alojamiento y dígale qué plan le interesa. Ellos le ayudarán a encontrar el mejor VPS o VDS para usted individualmente.
A continuación, conéctese al servidor como administrador y actualice los paquetes:
apt update apt full-upgrade
Descubra lo que es la versión del paquete del servidor Dante SOCKS en sus repositorios:
apt search dante-server dante-server/jammy 1.4.2+dfsg-7build4 amd64 SOCKS (v4 and v5) proxy daemon (danted)
Ahora instale Dante:
apt install dante-server
Y pongalo en el arranque automático:
systemctl is-enabled danted enabled
Ahora abra el archivo de configuración /etc/danted.conf en modo de edición y escriba allí los parámetros necesarios. Ejemplo de contenido:
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 }
Hay que aclararlo un poco:
- logoutput - define el mecanismo de registro de las conexiones (en nuestro ejemplo, todo pasará por el registro estándar del sistema).
- user.privived - otorga derechos de root al servidor para comprobar los permisos.
- user.uncitationd - necesario para bloquear la ejecución del servidor como un usuario sin privilegios.
- internal - especifica el puerto en el que se ejecuta el servicio, así como las direcciones IP que pueden conectarse.
- external - define la interfaz de red para las conexiones salientes.
Ahora vamos a crear el usuario que utilizará nuestro servidor SOCKS5. Hay que añadirlo al grupo de proxy:
useradd -s /bin/false proxyuser && sudo passwd proxyuser usermod -aG proxy proxyuser
A continuación, en el firewall, permitimos que el puerto TCP 1080 se conecte a los clientes:
sudo ufw allow 1080/tcp
Esto completa la configuración del proxy SOCKS5 en el VPS. Después de eso comprueba la conexión a través de Dante - utiliza algún navegador gratuito antidetección con soporte SOCKS5: por ejemplo, Dolphin Anty o cualquier otro similar.
Instalación del servidor SOCKS Dante en Ubuntu 16.04
En versiones tan antiguas de Ubuntu, la versión por defecto de Dante Server 1.1.19 está desfasada y no funciona con login y password. Es decir, el acceso al proxy se regula únicamente modificando las reglas iptables. Por lo tanto, en primer lugar, tenemos que instalar y configurar el conjunto necesario de software y dependencias:
apt-get install -y autoconf automake libtool pkg-config checkinstall libwrap0 libwrap0-dev libpam0g-dev
A continuación, creamos un directorio para seguir trabajando y nos dirigimos a él:
mkdir dante && cd ~/dante
Ahora ve al sitio oficial de los desarrolladores y descarga la última versión de Dante. También puede hacerlo a través de la línea de comandos:
wget https://www.inet.no/dante/files/dante-1.4.2.tar.gz
Descomprima y navegue hasta el directorio correspondiente:
tar -zxvf dante-1.4.2.tar.gz cd dante-1.4.2
Establezca la configuración del montaje:
./configure --prefix=/etc/dante
Debería terminar con algo así:
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
El siguiente paso es compilar las fuentes:
make
Ahora puede instalar el servidor construido. La mejor manera de hacerlo es a través de 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. >>
Cuando la instalación haya terminado, se creará un paquete deb (dante_1.4.2-1_amd64.deb), que puede ser instalado en otra máquina virtual en cualquier momento, pero ahora ya no es necesario preconfigurar ni ensamblar.
Si necesita eliminar un paquete instalado, utilice el comando
dpkg -r dante
Cómo configurar la ejecución automática de un servidor
Vaya a /etc/init.d/ y cree un script llamado sockd:
nano /etc/init.d/sockd
Su contenido debería ser el siguiente:
#! /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
Guarde los cambios y no olvide hacer que este script sea ejecutable:
chmod +x /etc/init.d/sockd
Recarga todos los demons:
systemctl daemon-reload
Y puede añadir sockd a la ejecución automática:
systemctl enable sockd systemctl start sockd
Y por último, comprueba todo:
systemctl status sockd
A partir de ahora puede gestionar el servidor proxy SOCKS con los comandos estándar de systemctl.
Conclusión
Por supuesto, los métodos descritos no son los más fáciles de llevar a cabo, aquí se necesita cierta comprensión de los principios de las utilidades y protocolos descritos. Como alternativa, puedes utilizar una VPN de pago: le ahorrará muchos dolores de cabeza y le permitirá eludir los bloqueos regionales de forma segura, manteniendo el anonimato y la privacidad totales.