Psocksd, un servidor proxy SOCKS en PHP

En Software, Tutoriales y Guías por

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, un servidor proxy SOCKS en PHP

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).

psocksd demonio socks php shell

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).