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 🙂