iptables port REDIRECT funktioniert lokal, aber nicht von außen

iptables port REDIRECT funktioniert lokal, aber nicht von außen

Ich habe einen Server, der nur auf Port 23006 lauschen kann. Ich möchte von außerhalb und über Port 443 darauf zugreifen.

Ich habe das Systemctl-Setup:

$ 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

Wenn ich einen anderen Testserver laufen lasse, der auf Port 443 lauscht, funktioniert es und ich kann von außen darauf zugreifen. Aber es ist nur ein Testserver und nicht mein eigentliches Serverprogramm.

Wenn ich socat ausführe:

sudo nohup socat TCP-LISTEN:443,pktinfo,fork TCP:127.0.0.1:23006

es funktioniert und ich kann von außerhalb darauf zugreifen. Aber mein Server sieht die tatsächliche IP-Adresse des Clients nicht.

Wenn ich curl auf Port 23006 ausführe, antwortet mein tatsächlicher Server:

$ 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>

Wenn ich diesen iptables-Befehl ausführe:

sudo iptables -t nat -A OUTPUT -o lo -p tcp --dport 443 -j REDIRECT --to-port 23006

dann kann ich auch über Port 443 auf meinen Server zugreifen, aber NUR lokal:

$ 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>

Das Problem ist: Ich kann von außen über Port 443 nicht auf meinen Server zugreifen. Bitte helfen Sie. Vielen Dank im Voraus.

Antwort1

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 23006

Antwort2

Wenn Sie umleiten möchteneingehendVerkehr, benutzen Sie die PREROUTINGKette.

Wenn Sie außerdem eine Umleitung wünschen, wird empfohlen, stattdessen die Tabelle mangleoder zu verwenden nat.

verwandte Informationen