Tengo un servidor que solo puede escuchar el puerto 23006. Quiero acceder a él desde afuera y por el puerto 443.
Tengo la configuración systemctl:
$ sudo sysctl --system
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
* Applying /usr/lib/sysctl.d/99-protect-links.conf ...
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
kernel.pid_max = 4194304
fs.protected_fifos = 1
fs.protected_hardlinks = 1
fs.protected_regular = 2
fs.protected_symlinks = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.all.route_localnet = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.all.route_localnet = 1
Si ejecuto otro servidor de prueba para escuchar en el puerto 443, funciona y puedo acceder a él desde afuera. Pero es sólo un servidor de prueba y no mi programa de servidor real.
Si ejecuto socat:
sudo nohup socat TCP-LISTEN:443,pktinfo,fork TCP:127.0.0.1:23006
Funciona y puedo acceder a él desde fuera. Pero mi servidor no ve la dirección IP real del cliente.
Si ejecuto curl en el puerto 23006, mi servidor real responde:
$ curl 127.0.0.1:23006
<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.24.0</center>
</body>
</html>
Si ejecuto este comando de iptables:
sudo iptables -t nat -A OUTPUT -o lo -p tcp --dport 443 -j REDIRECT --to-port 23006
entonces también puedo acceder a mi servidor a través del puerto 443 pero SÓLO desde local:
$ curl 127.0.0.1:443
<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.24.0</center>
</body>
</html>
El problema es: no puedo acceder a mi servidor desde fuera en el puerto 443. Por favor ayuda. Gracias de antemano.
Respuesta1
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 23006
Respuesta2
Si quieres redirigirentrantetráfico, utilice la PREROUTING
cadena.
Además, si desea redirección, se sugiere utilizar la tabla mangle
o nat
en su lugar.