Skip to content

Commit 31c0188

Browse files
committed
Neuer Beitrag: Ports mit socat als Proxy weiterleiten
1 parent 3017de6 commit 31c0188

2 files changed

Lines changed: 107 additions & 0 deletions

File tree

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
---
2+
title: Ports mit socat als Proxy weiterleiten
3+
author:
4+
name: Peter Müller
5+
link: https://crycode.de
6+
banner: banner.webp
7+
date: 2025-07-21
8+
categories:
9+
- [Linux]
10+
- [Software]
11+
tags:
12+
- Portweiterleitung
13+
- socat
14+
- Proxy
15+
---
16+
17+
Mit dem Tool `socat` ("SOcket CAT") lassen sich Netzwerkverbindungen flexibel weiterleiten und als Proxy nutzen. Das ist besonders praktisch, wenn Dienste auf anderen Hosts oder Ports erreichbar gemacht werden sollen, ohne die eigentliche Anwendung zu verändern.
18+
19+
<!-- more -->
20+
<!-- toc -->
21+
22+
## Warum braucht man das?
23+
24+
* **Netzwerkdienste zugänglich machen:** Dienste, die nur lokal oder in einem privaten Netz laufen, können so einfach erreichbar gemacht werden.
25+
* **Port-Konflikte umgehen:** Wenn ein Port bereits belegt ist, kann ein anderer Port als Proxy genutzt werden.
26+
* **Protokoll- oder Port-Übersetzung:** Ermöglicht die Weiterleitung zwischen verschiedenen Protokollen oder Ports.
27+
28+
`socat` ist ein sehr mächtiges Werkzeug für Netzwerkadministratoren und Entwickler, um flexibel mit Ports und Verbindungen zu arbeiten.
29+
30+
> [!NOTE]
31+
> Für einen produktiven Einsatz sollte sofern möglich immer auf eine dedizierte Proxy-Lösung wie `nginx` oder `haproxy` zurückgegriffen werden. `socat` ist eher für einfache, temporäre Lösungen gedacht.
32+
33+
## TCP-Port weiterleiten
34+
35+
Um beispielsweise alle eingehenden Verbindungen auf Port 8080 lokal an einen anderen Server (z.B. 192.168.1.100:80) weiterzuleiten:
36+
37+
```sh TCP-Portweiterleitung mit socat
38+
socat TCP-LISTEN:8080,reuseaddr,fork TCP:192.168.1.100:80
39+
```
40+
41+
* `TCP-LISTEN:8080`: Lauscht auf Port 8080 (lokal)
42+
* `reuseaddr,fork`: Erlaubt mehrfaches Binden an den Port und parallele Verbindungen
43+
* `TCP:192.168.1.100:80`: Zieladresse und -port
44+
45+
Im Normalfall wird `socat` weiterlaufen, bis es manuell gestoppt wird. Ausgaben sind dabei in der Regel nicht zu sehen.
46+
47+
Mit `Strg+C` kann der Prozess beendet werden.
48+
49+
## UDP-Port weiterleiten
50+
51+
Für UDP funktioniert es ähnlich, z.B. um Port 5353 weiterzuleiten:
52+
53+
```sh UDP-Portweiterleitung mit socat
54+
socat UDP-LISTEN:5353,reuseaddr,fork UDP:192.168.1.100:5353
55+
```
56+
57+
* `UDP-LISTEN:5353`: Lauscht auf Port 5353 (lokal)
58+
* `UDP:192.168.1.100:5353`: Zieladresse und -port
59+
60+
## Permanenter Betrieb als SystemD-Service
61+
62+
Möchte man `socat` dauerhaft im Hintergrund laufen lassen, kann man es als SystemD-Service einrichten.
63+
64+
Dazu wird eine neue Service-Datei mit folgendem Inhalt erstellt:
65+
66+
```sh SystemD Service für socat erstellen
67+
sudo nano /etc/systemd/system/socat-port-forward-8080.service
68+
```
69+
70+
```ini /etc/systemd/system/socat-port-forward-8080.service
71+
[Unit]
72+
Description=Socat Port Forwarding Service Port 8080
73+
After=network.target
74+
75+
[Service]
76+
ExecStart=/usr/bin/socat TCP-LISTEN:8080,reuseaddr,fork TCP:192.168.1.100:80
77+
Restart=always
78+
RestartSec=3s
79+
User=nobody
80+
Group=nogroup
81+
82+
[Install]
83+
WantedBy=multi-user.target
84+
```
85+
86+
Anschließend den Service aktivieren und starten:
87+
88+
```sh Aktivieren und Starten des Services
89+
sudo systemctl daemon-reload
90+
sudo systemctl enable socat-port-forward-8080.service
91+
sudo systemctl start socat-port-forward-8080.service
92+
```
93+
94+
Nun läuft `socat` als Hintergrunddienst und leitet Port 8080 permanent weiter.
95+
96+
## Alternativen
97+
98+
Neben `socat` gibt es weitere Tools, die für Portweiterleitungen und Proxy-Funktionalitäten genutzt werden können:
99+
100+
* **iptables / nftables**
101+
Ermöglichen auf Systemebene das Weiterleiten von Ports (Port-Forwarding) und Netzwerkpaketen. Besonders geeignet für permanente und performante Weiterleitungen.
102+
* **ssh (Port-Forwarding)**
103+
Mit `ssh -L` (lokal) oder `ssh -R` (remote) lassen sich Ports sicher über SSH-Tunnel weiterleiten. Praktisch für verschlüsselte Verbindungen und temporäre Weiterleitungen.
104+
* **nginx / haproxy**
105+
Leistungsfähige Proxy-Server, die für komplexe Weiterleitungen, Lastverteilung und Protokollumwandlung eingesetzt werden können. Besonders für produktive Umgebungen geeignet.
106+
* **rinetd**
107+
Einfache und ressourcensparende Lösung für TCP-Portweiterleitungen, ideal für minimalistische Setups.
12.9 KB
Loading

0 commit comments

Comments
 (0)