Redireccionar puertos con NodeJS – Guía paso a paso para crear un servidor de redireccionamiento de puertos

Introducción

La redirección de puertos es una técnica muy útil para direccionar el tráfico de red desde un puerto a otro en el mismo servidor o en otro servidor. En este tutorial, vamos a utilizar NodeJS para crear un servidor de redireccionamiento de puertos que nos permitirá redireccionar el tráfico de red de un puerto a otro.

Validación de parámetros

Para asegurarnos de que el servidor de redireccionamiento de puertos funcione correctamente, es esencial validar los parámetros proporcionados. Para ello, utilizaremos una expresión regular para validar que los parámetros del origen y del destino sean correctos. En el siguiente código, la expresión regular se utiliza para validar los parámetros de las direcciones:

var dir_valid_r = /^(([a-zA-Z\-\.0-9]+):)?(\d+)$/;
var dir = {desde: dir_valid_r.exec(process.argv[2]),hasta: dir_valid_r.exec(process.argv[3])};
if (!dir.desde || !dir.hasta) {
   console.log(‘Uso: desde hasta\n\nEjemplo: localhost:80 192.168.0.100:8080′);
   return;
} 

Creación del servidor

Para crear el servidor de redireccionamiento de puertos, utilizaremos la función net.createServer(). Esta función toma como argumento otra función que se ejecutará cada vez que se conecte un cliente. En nuestro caso, utilizaremos esta función para crear una nueva conexión hacia el destino deseado. Aquí está el código para crear el servidor:

net.createServer(function(desde) {
    var destino = net.createConnection({
       host: dir.hasta[2],
       port: dir.hasta[3]
    });
    desde.pipe(destino);
    destino.pipe(desde);
 }).listen(dir.desde[3], dir.desde[2]); 

Enlace de origen y destino

Para conectar el origen y el destino, utilizamos los métodos .pipe(). Estos métodos son necesarios para garantizar que la conexión entre el origen y el destino se establezca correctamente. Aquí está el código que enlaza el origen y el destino:

desde.pipe(destino);
destino.pipe(desde); 

Ejecución del servidor

Para que el servidor funcione, debemos ejecutarlo en el puerto especificado utilizando el método .listen(). En nuestro caso, lo hacemos de la siguiente manera:

 .listen(dir.desde[3], dir.desde[2]);

Código completo

var net = require(‘net’);

var dir_valid_r = /^(([a-zA-Z\-\.0-9]+):)?(\d+)$/; //Regex para validar los parámetros de las
direcciones.

//Parámetros desde loa consola.
var dir = {desde: dir_valid_r.exec(process.argv[2]),hasta: dir_valid_r.exec(process.argv[3])};

//Valida los parámetros desde la consola.
if (!dir.desde || !dir.hasta) {
   console.log(‘Uso: desde hasta\n\nEjemplo: localhost:80 192.168.0.100:8080′);
   return;
}

//Creamos el servidor
net.createServer(function(desde) {
   var destino = net.createConnection({
      host: dir.hasta[2],
      port: dir.hasta[3]
   });
   desde.pipe(destino); //Aquí se enlaza el origen con el destino
   destino.pipe(desde);
}).listen(dir.desde[3], dir.desde[2]); 

Conclusión

En este tutorial, hemos visto cómo utilizar NodeJS para crear un servidor de redireccionamiento de puertos. Hemos validado los parámetros, creado el servidor, conectado el origen y el destino, y ejecutado el servidor. Ahora estás listo para redireccionar puertos utilizando NodeJS. Esperamos que esta guía te haya sido útil.

Deja un comentario