Psocksd, un servidor proxy SOCKS en PHP
Hemos tratado en varias ocasiones los proxys SOCKS, pero esta vez traemos un programa gratuito y de código abierto que nos permite crear nuestro propio servidor proxy SOCKS. Se trata de psocksd, programado totalmente en PHP para funcionar como un demonio.
Psocksd ha sido creado por Christian Lück, quien parece ser un especialista en programación PHP. Dentro de su perfil de GitHub encontraremos innumerables proyectos. Entre sus repositorios incluso podremos encontrar alguna librería relacionada con los proxys SOCKS.
Psocksd, un servidor proxy SOCKS en PHP.
El servidor psocksd es compatible con SOCKS 4 y SOCKS 5, aunque el protocolo en su versión 5 es el recomendable al ser más actual.
En primer lugar vamos a comentar los requisitos para instalar psocksd. Es multiplataforma, por lo que funciona tanto en Windows como en Linux, pero en este artículo nos vamos a centrar en su instalación y configuración sobre Linux.
Para probar psocksd
hemos empleado un servidor VPS con Linux Ubuntu 16.04 en el que hemos instalado PHP 7 con el siguiente comando:
sudo apt-get install php7.0 php7.0-mbstring
Es importante recalcar que requiere la extensión php7.0-mbstring instalada, por eso está incluida en el comando de instalación. Si no la instalamos el programa no funcionará y nos devolverá un error fatal.
A continuación, tendremos que descargar el archivo .phar
del apartado releases de GitHub. Para descargar el archivo podemos emplear wget:
wget https://github.com/clue/psocksd/releases/download/v0.4.0/psocksd.phar
Ahora sólo tendremos que ejecutar el comando:
php psocksd.phar *:52000
En este comando hay que diferenciar la parte del asterisco *
, que indica que servidor está a la escucha en todas interfaces. La parte del número 52000
indica el puerto en el que el servidor proxy SOCKS permanece a la escucha. Este puerto lo podemos modificar a nuestro gusto siempre y cuando no usemos uno que esté ya en uso (recomiendo usar un puerto entre 50000 y 60000 para no tener conflictos).
Diferentes posibilidades de configuración de psocksd.
El programa psocksd nos permite lanzarlo con más configuraciones. Si quisiésemos restringir el servidor proxy para que sólo use el protocolo SOCKS 5, podemos emplear el comando:
php psocksd.phar socks5://*:52000
También podemos definir la IP de la interfaz en la que escuchará el servidor:
php psocksd.phar 192.168.1.2:52000
Podemos especificar un usuario y contraseña para que el cliente pueda acceder al proxy:
php psocksd.phar socks5://username:password@*:52000
Modo interactivo y no interactivo de psocksd.
Cuando ejecutamos psocksd se ejecuta por defecto en modo interactivo, de forma que podemos enviar comandos al demonio mientras está en funcionamiento a través de la consola.
Por ejemplo, si ejecutamos el comando help
se nos muestran todas las opciones:
psocksd help: help show this very help status show status via list list all forwarding entries via default <target> set given <target> socks proxy as default target via reject <host> reject connections to the given host via add <host> <target> [<priority:int>] add new <target> socks proxy for connections to given <host> via remove <id:uint> remove forwarding entry with given <id> (see "via list") via reset clear and reset all forwarding entries and only connect locally ping <target> ping another SOCKS proxy server via TCP handshake quit | exit shutdown this application
También podemos forzar el demonio para que se ejecute en modo NO interactivo, para eso empleamos el modificador --no-interaction
como en el siguiente comando:
php psocksd.phar --no-interaction *:52000
En Windows siempre funcionará en modo no interactivo, ya que la terminal de Windows así lo requiere. Para detener el demonio cuando funciona en modo no interactivo habrá que pulsar la combinación de teclas CTRL + C
.
No olvides que para configurar el proxy SOCKS en el navegador, debes hacerlo con los datos que empleaste durante la configuración (IP, puerto, usuario y contraseña).