GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar el servidor proxy Shadowsocks-libev en Ubuntu

Este tutorial le mostrará cómo configurar el servidor proxy Shadowsocks en Ubuntu. Shadowsocks es un proxy de Socks5 liviano, rápido y seguro para eludir la censura de Internet. Aprenderemos cómo configurar el lado del servidor y cómo configurar el cliente de escritorio en Ubuntu. Hay muchas implementaciones de Shadowsocks, este tutorial le muestra cómo usar Shadowsocks-libev, porque

  • Está escrito en C, muy rápido incluso en máquinas de gama baja.
  • Está bien mantenido.
  • Es la implementación con más funciones. Se admiten TCP de apertura rápida, multiusuario, API de administración, modo de redirección, modo de túnel, retransmisión UDP, cifrados AEAD y complementos.

Requisitos

Para completar este tutorial, necesitará:

  • Un VPS (servidor privado virtual). Recomiendo Vultr. Ofrecen VPS de alto rendimiento con memoria de 512 millones por solo $ 2.5 por mes, lo cual es perfecto para su servidor proxy privado.
  • Luego instala Ubuntu en tu VPS.

Paso 1:Instale el servidor Shadowsocks-libev en Ubuntu

SSH en su servidor Ubuntu remoto. Shadowsocks-libev está incluido en el repositorio de Ubuntu desde 17.04, por lo que puede instalarlo con:

sudo apt update

sudo apt install shadowsocks-libev

Los usuarios de Ubuntu 16.04 pueden instalarlo desde PPA ejecutando los siguientes comandos. software-properties-common es necesario si desea instalar software de PPA. Es posible que falte en su servidor Ubuntu.

sudo apt install software-properties-common -y

sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y

sudo apt update

sudo apt install shadowsocks-libev

La biblioteca criptográfica de sodio (libsodium) se instalará junto con shadowsocks-libev. Es un requisito si desea utilizar el método de encriptación ChaCha20-Poly1305 seguro y rápido. Una vez que esté instalado, edite el archivo de configuración.

sudo nano /etc/shadowsocks-libev/config.json

El contenido predeterminado del archivo es el siguiente.

{
    "server":["::1", "127.0.0.1"],
    "mode":"tcp_and_udp",
    "server_port":8388,
    "local_port":1080,
    "password":"ACRrobo9ymXb",
    "timeout":60,
    "method":"chacha20-ietf-poly1305"
}

Necesitamos cambiar 127.0.0.1 a 0.0.0.0 , por lo que el servidor Shadowsocks-libev escuchará en la dirección IP pública. Luego cambie server_port a otros números de puerto como 8888. La contraseña se generó aleatoriamente, por lo que puede dejarla como está.

Guarde y cierre el archivo. Luego reinicie el servicio shadowsocks-libev para que los cambios surtan efecto.

sudo systemctl restart shadowsocks-libev.service

Habilite el inicio automático en el momento del arranque.

sudo systemctl enable shadowsocks-libev.service

Compruebe su estado. Asegúrate de que se esté ejecutando.

systemctl status shadowsocks-libev.service

Si ve el siguiente error.

This system doesn't provide enough entropy to quickly generate high-quality random numbers. The service will not start until enough entropy has been collected.

Puede corregir este error instalando rng-tools .

sudo apt-get install rng-tools

Entonces corre

sudo rngd -r /dev/urandom

Ahora puede iniciar el servicio Shadowsocks-libev.

Paso 2:configurar el cortafuegos

Si está utilizando el firewall de iptables en su servidor, debe permitir el tráfico al puerto TCP y UDP en el que Shadowsocks está escuchando. Por ejemplo, si Shadowsocks está utilizando el puerto 8888, ejecute el siguiente comando:

sudo iptables -I INPUT -p tcp --dport 8888 -j ACCEPT

sudo iptables -I INPUT -p udp --dport 8888 -j ACCEPT

Si está utilizando el cortafuegos UFW, ejecute los siguientes comandos:

sudo ufw allow 8888

Si está utilizando AWS o Google Cloud, debe configurar el firewall en el panel de control basado en la web.

Paso 3:Instalar y configurar el cliente Shadowsocks-libev

Escritorio Ubuntu

El shadowsocks-libev El paquete contiene tanto el software del servidor como el software del cliente. En el escritorio Ubuntu 20.04, 18.04, ejecute los siguientes comandos para instalar Shadowsocks-libev.

sudo apt update

sudo apt install shadowsocks-libev

En el escritorio de Ubuntu 16.04, ejecute los siguientes comandos para instalar Shadowsocks-libev.

sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y

sudo apt update

sudo apt install shadowsocks-libev

Shadowsocks-libev (el servidor) se iniciará automáticamente después de la instalación. Debe detener el servidor Shadowsocks en el escritorio de Ubuntu.

sudo systemctl stop shadowsocks-libev

Además, deshabilite el inicio automático en el momento del arranque.

sudo systemctl disable shadowsocks-libev

El binario del cliente de Shadowsocks se llama ss-local . Hay una unidad de servicio systemd de plantilla para ello: /lib/systemd/system/[email protected] . Antes de iniciar el cliente, debemos crear el archivo de configuración del lado del cliente. Podemos copiar la configuración del servidor Shadowsocks-libev al archivo de configuración del cliente.

sudo cp /etc/shadowsocks-libev/config.json /etc/shadowsocks-libev/location-of-your-server.json

Puede reemplazar location-of-your-server con algo como SFO, LAX. Luego edite el archivo de configuración del cliente.

sudo nano /etc/shadowsocks-libev/location-of-your-server.json

Cambie la dirección del servidor a la dirección IP pública de su servidor y agregue la siguiente línea para decirle al cliente que escuche en 127.0.0.1.

"local_address":"127.0.0.1",

Así que el archivo de configuración del cliente se verá así:

{
 "server":"your-server-ip-address",
 "mode":"tcp_and_udp",
 "server_port":8888,
 "local_address":"127.0.0.1",
 "local_port":1080,
 "password":"ACRrobo9ymXb",
 "timeout":60,
 "method":"chacha20-ietf-poly1305"
}

Guarde y cierre el archivo. Entonces podemos iniciar el cliente con:

sudo systemctl start [email protected]location-of-your-server.service

Y habilite el inicio automático en el momento del arranque.

sudo systemctl enable [email protected]location-of-your-server.service

Compruebe su estado. Asegúrate de que se esté ejecutando.

systemctl status [email protected]location-of-your-server.service

Ahora el proceso ss-local escucha en 127.0.0.1:1080 en su escritorio Ubuntu y está conectado a su servidor Shadowsocks.

Escritorio de Windows

Los usuarios de Windows pueden descargar este cliente de Shadowsocks. Una vez que esté instalado, puede agregar un nuevo servidor en el software del cliente. Especifique la dirección IP, el puerto y la contraseña del servidor. Haz clic en Apply botón

Si tiene varios servidores proxy, puede hacer clic en Add botón para agregar más servidores proxy. Tenga en cuenta que solo utiliza un servidor proxy a la vez.

Paso 4:Configure el navegador web para usar el proxy de calcetines

Para que su programa use un proxy de calcetines, el programa debe ser compatible con el proxy de calcetines. Programas como Firefox, Google Chrome y Dropbox permiten a los usuarios usar proxy. Te mostraré cómo configurar Firefox y Google Chrome.

Firefox

En Firefox, ve a Editar> Preferencias> Generales (o Herramientas -> Opciones -> Generales ). A continuación, desplácese hasta la parte inferior y haga clic en Configuración en proxy de red . En la Configuración de conexión ventana, seleccione configuración de proxy manual . Luego seleccione SOCKS v5 porque Shadowsocks es un proxy de Socks5. Introduce 127.0.0.1 en el campo SOCKS Host y 1080 en el campo del puerto. Asegúrese de Proxy DNS cuando use SOCKS v5 está habilitado. Haz clic en Aceptar para aplicar estas modificaciones.

Google Chrome

Si bien puede configurar el proxy para Google Chrome y el navegador Chromium desde la línea de comandos, recomiendo instalar la extensión Proxy SwitchyOmega para administrar los proxies.

Una vez que la extensión esté instalada en Google Chrome, configure un servidor proxy de la siguiente manera:

  • Elija el SOCKS5 protocolo.
  • Establecer 127.0.0.1 como la dirección del servidor.
  • Establecer 1080 como número de puerto.

Aplicar los cambios. Luego haga clic en el ícono de extensiones en la esquina superior derecha y haga clic en Proxy SwithyOmega .

De forma predeterminada, SwithyOmega utiliza la configuración de proxy del sistema operativo. Necesitamos cambiarlo desde system proxy a proxy .

Ahora su proxy debería estar funcionando.

Paso 5:Prueba de fuga de DNS

Vaya a dnsleaktest.com. Verá la dirección IP de su servidor Shadowsocks, lo que indica que su proxy está funcionando.

Haga clic en la prueba estándar. Asegúrese de que su ISP local no esté en los resultados de la prueba.

Proxy en línea de comandos

Para permitir que sus programas de línea de comandos usen el proxy, puede instalar tsocks .

sudo apt install tsocks

Luego edite el archivo de configuración.

sudo nano /etc/tsocks.conf

Busque la siguiente línea:

server = 192.168.0.1

Cámbialo a

server = 127.0.0.1

Guarde y cierre el archivo. Ahora puede permitir que su programa de línea de comandos use el proxy Shadowsocks de esta manera:

sudo tsocks apt update

También hay un programa similar llamado proxychains.

Habilitar apertura rápida de TCP

Puede acelerar Shadowsocks habilitando la apertura rápida de TCP. TCP es un protocolo orientado a la conexión, lo que significa que los datos solo se pueden intercambiar después de que se establezca una conexión, lo que se realiza a través del protocolo de enlace de tres vías. En otras palabras, tradicionalmente, los datos solo se pueden intercambiar después de que se completa el protocolo de enlace de tres vías. La apertura rápida de TCP (TFO) es un mecanismo que permite el intercambio de datos antes de que se complete el protocolo de enlace de tres vías, ahorrando hasta 1 tiempo de ida y vuelta (RTT).

El soporte de apertura rápida de TCP se fusiona con el kernel de Linux desde la versión 3.7 y está habilitado de forma predeterminada desde la versión 3.13. Puede comprobar la versión de su kernel ejecutando:

uname -r

Para verificar la configuración de apertura rápida de TCP en su servidor Ubuntu, ejecute

cat /proc/sys/net/ipv4/tcp_fastopen

Puede devolver 4 valores.

  • 0 significa deshabilitado.
  • 1 significa que está habilitado para la conexión saliente (como cliente).
  • 2 significa que está habilitado para la conexión entrante (como servidor).
  • 3 significa que está habilitado tanto para conexiones salientes como entrantes.

Todos mis Ubuntu VPS (servidor privado virtual) devolvieron 1 después de ejecutar el comando anterior. Queremos que tcp_fastopen se establezca en 3 en nuestro servidor. Para lograr eso, podemos editar el archivo de configuración sysctl.

sudo nano /etc/sysctl.conf

Luego pegue la siguiente línea al final del archivo.

net.ipv4.tcp_fastopen=3

Vuelva a cargar la configuración de sysctl para que el cambio surta efecto.

sudo sysctl -p

Luego, también deberá habilitar la apertura rápida de TCP en el archivo de configuración de Shadowsocks.

sudo nano /etc/shadowsocks-libev/config.json

Agregue la siguiente línea.

"fast_open": true

Entonces, el archivo de configuración de su servidor Shadowsocks se verá así:

{
 "server":"your-server-ip-address",
 "server_port":8388,
 "local_port":1080,
 "password":"focobguph",
 "timeout":60,
 "method":"chacha20-ietf-poly1305",
 "fast_open": true
}

Tenga en cuenta que la última línea de configuración no tiene coma. Guarde y cierre el archivo. Luego reinicie el servidor Shadowsocks.

sudo systemctl restart shadowsocks-libev

Compruebe si se está ejecutando. (Un error en el archivo de configuración puede evitar que se reinicie).

systemctl status shadowsocks-libev

También debe editar el archivo de configuración del cliente de Shadowsocks y reiniciarlo para habilitar la apertura rápida de TCP en el escritorio de Ubuntu.

Habilitar TCP BBR

TCP BBR es un algoritmo de control de congestión de TCP que puede mejorar drásticamente la velocidad de conexión. Consulte el siguiente tutorial.

  • Cómo aumentar fácilmente el rendimiento de la red de Ubuntu habilitando TCP BBR

Para obtener más información sobre Shadowsocks, consulta el manual.

man shadowsocks-libev

Resolución de problemas

De vez en cuando, mi proxy Shadowsocks-libev deja de funcionar y aparece el siguiente error en el lado del servidor cuando verifico el estado con systemctl .

ERROR: server recv: Connection reset by peer

En el lado del cliente, el error devuelto por systemctl es:

ERROR: remote_recv_cb_recv: Connection reset by peer

No sé por qué sucede, pero reiniciando shadowsocks-libev El servicio en el servidor puede solucionar este problema.

sudo systemctl restart shadowsocks-libev

No quiero reiniciar manualmente el servicio cada vez, así que agrego un trabajo cron para que lo haga periódicamente.

sudo crontab -e

Coloque la siguiente línea al final del archivo.

0 */3 * * * /bin/systemctl restart shadowsocks-libev

Esto reiniciará el servicio cada 3 horas. Es decir, el reinicio ocurre a las 12 a. m., 3 a. m., 6 a. m., 9 a. m. y así sucesivamente. Tenga en cuenta que el tiempo está determinado por cron. No se determina calculando cuánto tiempo ha estado funcionando el servicio.

Si ve el siguiente error en el registro de Shadowsocks-libev.

ERROR: unable to resolve www.youtube.com

Esto significa que el servidor Shadowsocks-libev no puede resolver correctamente el DNS. Es útil especificar un servidor DNS en /etc/shadowsocks-libev/config.json expediente. Simplemente agregue la siguiente línea en el archivo y reinicie el servicio shadowsocks-libev.

"name_server":"1.1.1.1",

Si tiene su propia resolución de DNS ejecutándose en el servidor Shadowsocks, puede especificar 127.0.0.1 como servidor de nombres.

"name_server":"127.0.0.1",

Recuerde que en el archivo JSON, la última línea no termina con una coma.

¡Eso es todo! Espero que este tutorial te haya ayudado a instalar el proxy Shadowsocks-libev en Ubuntu. Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín gratuito para obtener más consejos y trucos 🙂


Ubuntu
  1. Cómo configurar un servidor LAMP de Ubuntu/Debian

  2. Cómo configurar Nginx como proxy inverso en Ubuntu 20.04

  3. Cómo configurar WireGuard en Ubuntu 22.04

  4. Cómo instalar Ansible en Ubuntu Server 21.04

  5. Cómo configurar un servidor TeamSpeak en Ubuntu 16.04

Cómo configurar el servidor de impresión CUPS en Ubuntu 20.04

Cómo instalar el servidor SSH en Ubuntu 22.04

Cómo instalar Webmin en el servidor Ubuntu 18.04 y Ubuntu 16.04

¿Cómo configurar un servidor Apt-cacher?

Cómo instalar el servidor proxy Squid en Ubuntu 18.04

Cómo instalar el servidor de Minecraft en Ubuntu 20.04