Pregunta:
Tengo un servidor de desarrollo, al que solo se puede acceder desde 127.0.0.1:8000, no desde 192.168.1.x: 8000. Como un truco rápido, ¿hay alguna manera de configurar algo para escuchar en otro puerto (digamos, 8001) para que desde la red local pueda conectar 192.168.1.x: 8001 y canalizaría el tráfico entre el cliente y 127.0? .0.1: 8000?
Respuesta:
Con socat
en el servidor:
socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000
De forma predeterminada, socat
escuchará en el puerto TCP 8001 en cualquier dirección IPv4 o IPv6 (si es compatible) en la máquina. Puede restringirlo a IPv4 / 6 reemplazando tcp-listen
con tcp4-listen
o tcp6-listen
, o a una dirección local específica agregando a ,bind=that-address
.
Lo mismo para el socket de conexión al que está utilizando el proxy, puede usar cualquier dirección en lugar de localhost
y reemplazar tcp
con tcp4
o tcp6
si desea restringir la resolución de la dirección a direcciones IPv4 o IPv6.
Tenga en cuenta que para el servidor que escucha en el puerto 8000, la conexión aparecerá como proveniente del proxy (en el caso de localhost
, será localhost
), no del cliente original. Necesitaría usar enfoques DNAT (pero que requieren privilegios de superusuario) para que el servidor pueda decir quién es el cliente.