// Engineering Log

Servidores proxy: Parte 5 — 3proxy

Publicado el 21.09.2026

// Ruta rapida

Este articulo pertenece al tema Redes y enrutamiento.

3proxy — un servidor proxy gratuito y de código abierto que en un único programa pequeño reúne proxy HTTP, proxy SOCKS, proxy para protocolos de correo y FTP, redirección de puertos y DNS con caché. El autor es Vladimir Dubrovín, conocido bajo el seudónimo 3APA3A; de ese seudónimo proviene el nombre del programa. El proyecto se desarrolla desde 2000; en agosto de 2026 se lanzó la versión 1.0.0. 3proxy funciona en Linux, BSD, macOS y Windows.

Qué servicios ofrece 3proxy

Cada servicio se inicia con un comando separado en el archivo de configuración. Según la documentación (man 3proxy.cfg) están disponibles:

  • proxy — proxy HTTP y HTTPS (puerto por defecto 3128); HTTPS pasa mediante CONNECT sin descifrado;
  • socks — SOCKS4, SOCKS4.5 y SOCKS5 (puerto por defecto 1080);
  • pop3p y smtpp — proxy para recibir y enviar correo;
  • ftppr — proxy FTP;
  • tcppm y udppm — redirección de puertos TCP y UDP a otra dirección;
  • dnspr — proxy DNS con caché; funciona solo junto con los comandos nserver y nscache;
  • tlspr — proxy para conexiones TLS;
  • admin — interfaz web para ver estadísticas y configuración;
  • auto — servicio que detecta el protocolo del cliente automáticamente.

La principal diferencia con Dante es que en 3proxy no solo hay SOCKS, sino también proxy HTTP, control de tráfico, límites y limitación de velocidad por usuarios. Esto lo hace conveniente para una pequeña oficina o para repartir proxies a varios clientes desde un mismo servidor.

Instalación

Para Linux el proyecto publica paquetes deb para Ubuntu 22.04 y posteriores y para Debian 12 y posteriores —para procesadores x86-64, ARM64 y ARM de 32 bits. Se pueden descargar desde la página de releases en GitHub o añadir el repositorio apt firmado https://3proxy.org/repo/. En el repositorio hay dos canales: current — rama corriente 1.x, lts — rama 0.9 con soporte a largo plazo.

Tras la instalación la configuración se encuentra en el archivo /etc/3proxy/3proxy.cfg. Para añadir usuarios el paquete incluye el script add3proxyuser:

bash
sudo add3proxyuser ivan 'СложныйПароль'

El script está pensado para la configuración estándar del paquete, donde la lista de usuarios se guarda en un archivo separado. En el ejemplo siguiente los usuarios, para mayor claridad, están definidos directamente en la configuración. El servicio se gestiona mediante systemd: sudo systemctl enable --now 3proxy.

Ejemplo de configuración

A continuación — una configuración para una pequeña oficina: proxy HTTP y SOCKS5 con contraseñas, prohibición de accesos a redes internas a través del proxy, registro con rotación diaria y limitación de velocidad para un usuario.

nserver 1.1.1.1
nserver 8.8.8.8
nscache 65536

log /var/log/3proxy/3proxy.log D
rotate 30

users ivan:CL:ПарольИвана olga:CL:ПарольОльги

auth strong
deny * * 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
allow ivan,olga
bandlimin 10000000 olga
proxy -p3128

flush
auth strong
allow ivan
socks -p1080

Cómo se lee:

  • nserver y nscache — servidores DNS a través de los cuales 3proxy resuelve nombres, y el tamaño del caché de respuestas;
  • log ... D y rotate 30 — registro con rotación diaria; se guardan 30 archivos archivados;
  • users — usuarios y contraseñas. El tipo CL significa contraseña en texto claro; en una configuración en producción es mejor guardar el hash, tipo CR (por ejemplo, ivan:CR:$1$... — ese hash lo genera el comando openssl passwd -1);
  • auth strong — acceso solo por nombre y contraseña. Otras opciones: iponly — solo por dirección del cliente, none — sin comprobación, cache — recordar autorizaciones exitosas;
  • deny y allow — reglas de acceso. Sus campos van en el orden: usuarios, direcciones de clientes, direcciones de destino, puertos, operaciones, días de la semana, hora del día. El asterisco significa “cualquiera”. Las reglas se evalúan de arriba abajo, por eso la denegación para redes internas está primero;
  • bandlimin 10000000 olga — límite de velocidad entrante para el usuario olga hasta 10 Mbit/s;
  • proxy -p3128 — lanzar el proxy HTTP con el conjunto actual de reglas;
  • flush — vaciar reglas: todo lo que esté por debajo se refiere solo a los servicios siguientes. Aquí el proxy SOCKS está disponible únicamente para el usuario ivan.

El orden en el archivo es importante: un servicio hereda las reglas que fueron declaradas por encima de él y después del último flush.

Las reglas también se pueden limitar por tiempo. Por ejemplo, así el acceso está abierto solo entre semana en horario laboral:

allow * 198.51.100.0/24 * * * 1-5 09:00:00-18:00:00

Conteo de tráfico por usuarios

Los contadores permiten limitar el volumen de tráfico, por ejemplo, 5 GB por día para cada usuario. El comando counter especifica el archivo donde 3proxy guarda los valores acumulados, y countin — el límite en megabytes:

counter /var/lib/3proxy/3proxy.counters
countin 1 D 5000 ivan
countin 2 D 5000 olga

El primer número en countin es el número de entrada en el archivo de contadores, la letra — el período (H — hora, D — día, W — semana, M — mes), luego el límite y la lista de usuarios. Cuando se agota el límite, el usuario recibe denegación hasta el final del período. Estas líneas, al igual que las reglas de acceso, deben colocarse por encima del servicio al que se refieren.

Cadenas de proxies

3proxy puede enviar conexiones no directamente, sino a través de un proxy ascendente. El comando parent complementa la última regla allow:

allow *
parent 1000 socks5 203.0.113.5 1080 user password
proxy -p3128

Aquí los clientes se conectan al proxy HTTP en el puerto 3128, y 3proxy envía sus conexiones a través del proxy SOCKS5 en 203.0.113.5. El número 1000 es el peso: si se especifican varios parent con pesos que sumen 1000, 3proxy elegirá entre ellos aleatoriamente. Así se puede distribuir la carga entre varios servidores de salida.

Comprobación

bash
sudo systemctl restart 3proxy
curl -x http://ivan:ПарольИвана@192.0.2.10:3128 https://ifconfig.me
curl -x socks5h://ivan:ПарольИвана@192.0.2.10:1080 https://ifconfig.me

Ambos comandos deberían mostrar la dirección externa del servidor con 3proxy.

Otras funciones útiles

  • Redirección de puertos. El comando tcppm 8080 10.0.0.5 80 acepta conexiones en el puerto 8080 y las transmite al puerto 80 de un servidor interno — útil cuando hay que abrir rápidamente el acceso a un servicio.
  • Proxy HTTP anónimo. La opción -a en el servicio proxy elimina de las solicitudes los encabezados por los que el servidor de destino podría averiguar la dirección del cliente.
  • Conteo y límites de tráfico. Los comandos counter, countin y countout llevan contadores y limitan el volumen de tráfico de un usuario por hora, día, semana o mes. Los comandos bandlimin y bandlimout limitan la velocidad.
  • Reducir privilegios. Los comandos setuid y setgid cambian el proceso de root a un usuario sin privilegios después de iniciar los servicios, y chroot lo encierra en un directorio separado.

Errores típicos

  • Reglas declaradas después del servicio. Si allow está debajo de la línea proxy, no afectará a ese servicio.
  • Olvidar flush. Sin él el segundo servicio hereda todas las reglas del primero, y el acceso resulta más amplio o distinto de lo previsto.
  • Proxy abierto. Una configuración con auth none y sin restricción de direcciones es detectada rápidamente por escáneres. Siempre limite el acceso mediante contraseña o por direcciones de clientes.
  • Contraseñas en texto claro. El tipo CL es útil para pruebas, pero en producción almacene hashes.
  • La contraseña se transmite sin cifrar. En proxies HTTP con autenticación básica y en SOCKS5 el nombre y la contraseña viajan por la red en claro. Al conectarse por Internet proteja el canal con un túnel.

Ventajas y limitaciones

Ventajas:

  • muchas funciones en un programa pequeño;
  • bajo consumo de recursos;
  • reglas flexibles por usuarios, direcciones, puertos y tiempo;
  • contadores de tráfico integrados y limitación de velocidad;
  • funciona en Linux, BSD, macOS y Windows.

Limitaciones:

  • no tiene caché completo de páginas web como Squid;
  • no es adecuado como proxy inverso y balanceador frente a servicios web — para eso están Nginx y HAProxy;
  • configuración solo mediante archivo de texto, y el orden de las líneas importa, lo que inicialmente provoca errores;
  • en funciones particulares los programas especializados son más profundos: por ejemplo, las reglas SOCKS en Dante son más detalladas.

Cuándo elegir 3proxy

3proxy es adecuado cuando desde un solo servidor hay que distribuir proxies HTTP y SOCKS a varios usuarios, llevar el control de su tráfico y limitar la velocidad o el volumen. Para una tarea que requiera solo SOCKS5 es más simple Dante; para filtrado de tráfico web e informes de sitios visitados es mejor Squid.

// Tarea parecida

Si estas resolviendo algo parecido

Este articulo pertenece a uno de los temas principales de trabajo. Puedes seguir leyendo sobre el tema, ir a la pagina principal para entender a que me dedico o abrir directamente los servicios.

Tema del articulo

Redes y enrutamiento

MikroTik, VPN, enrutamiento, DNS, BGP, conectividad y problemas de acceso.

Tareas frecuentes de esta tema

  • Montar VPN y acceso seguro a oficina o nube
  • Corregir enrutamiento, DNS o conectividad inestable
  • Configurar MikroTik, firewall y enlaces externos

// Siguiente paso

Si necesitas ayuda con este tema y no solo otro articulo, es mejor ir directo a la pagina del servicio. La pagina principal y la seleccion de materiales quedan como rutas secundarias.

Abrir servicios

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Respondo en un día laborable (03:00-13:00 GMT)

Или оставьте заявку здесь:

Confirme que no es un bot.

Escribir y recibir una respuesta rápida