Server hinter NAT betreiben: Port Forwarding und DynDNS Setup

Viele Linux-Server werden in privaten Netzwerken betrieben – etwa im Heimnetz, im Labor oder in kleinen Unternehmensumgebungen. In solchen Szenarien befindet sich der Server häufig hinter einem Router mit Network Address Translation (NAT). Dadurch ist der Server im Internet nicht direkt erreichbar. Mit Port Forwarding und Dynamic DNS (DynDNS) lässt sich dieses Problem lösen. In diesem Tutorial erfahren Sie praxisnah, wie NAT funktioniert, wie Sie Portweiterleitungen konfigurieren und wie Sie DynDNS einsetzen, um Ihren Server trotz wechselnder IP-Adresse zuverlässig erreichbar zu machen.

Grundlagen von NAT (Network Address Translation)

NAT ist ein Mechanismus, bei dem ein Router private IP-Adressen eines internen Netzwerks in eine öffentliche IP-Adresse übersetzt. Diese Technik wird von nahezu allen Heim- und Unternehmensroutern verwendet, um mehrere Geräte über eine einzige öffentliche IP-Adresse mit dem Internet zu verbinden.

  • Private Netzwerke verwenden typischerweise RFC1918-Adressbereiche.
  • Der Router fungiert als Gateway zwischen internem Netzwerk und Internet.
  • Extern eingehende Verbindungen werden standardmäßig blockiert.
  • Port Forwarding ermöglicht gezielte Weiterleitung bestimmter Ports.

Typische private Netzbereiche

Die folgenden IP-Bereiche sind für private Netzwerke reserviert:

  • 10.0.0.0 – 10.255.255.255
  • 172.16.0.0 – 172.31.255.255
  • 192.168.0.0 – 192.168.255.255

192.168.1.0 / 24

Dieses Beispielnetz umfasst 256 Adressen von 192.168.1.0 bis 192.168.1.255.

Funktionsweise von Port Forwarding

Port Forwarding ermöglicht es, eingehende Verbindungen aus dem Internet gezielt an ein internes System weiterzuleiten. Der Router übersetzt dabei eine öffentliche Portnummer auf eine interne IP-Adresse und einen Port.

Beispielstruktur

  • Öffentliche IP-Adresse: 203.0.113.15
  • Router-Gateway: 192.168.1.1
  • Linux Server: 192.168.1.100
  • SSH-Port: 22

Die Weiterleitung sieht dann so aus:

  • 203.0.113.15:22 → 192.168.1.100:22

Verbindet sich ein Client aus dem Internet mit Port 22 der öffentlichen Adresse, wird die Verbindung automatisch an den internen Server weitergeleitet.

Server im internen Netzwerk vorbereiten

Bevor Port Forwarding eingerichtet wird, sollte der Linux-Server eine feste IP-Adresse erhalten. Eine statische Adresse verhindert, dass sich die Zieladresse der Portweiterleitung ändert.

IP-Adresse prüfen

ip a

Netzwerkverbindung testen

ping 8.8.8.8

Offene Ports prüfen

sudo ss -tulnp

Port Forwarding im Router konfigurieren

Die genaue Konfiguration hängt vom Routermodell ab. Die grundlegenden Schritte sind jedoch meist identisch.

  • Router-Webinterface öffnen (z.B. http://192.168.1.1)
  • Menüpunkt „Port Forwarding“ oder „NAT“ aufrufen
  • Neue Regel hinzufügen

Typische Konfiguration

  • Service: SSH
  • Externer Port: 22
  • Interne IP: 192.168.1.100
  • Interner Port: 22
  • Protokoll: TCP

Alternative: Nicht-Standard-Ports nutzen

Um automatisierte Angriffe zu reduzieren, kann ein anderer externer Port verwendet werden.

  • Extern: 2222
  • Intern: 22

Verbindung erfolgt dann mit:

ssh -p 2222 user@public-ip

Firewall auf dem Server konfigurieren

Auch wenn der Router den Port weiterleitet, sollte der Server selbst eine Firewall nutzen.

UFW Beispiel

sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Status prüfen

sudo ufw status

Problem dynamischer IP-Adressen

Viele Internetanschlüsse erhalten regelmäßig eine neue öffentliche IP-Adresse vom Provider. Dadurch ist ein Server über eine feste IP nicht dauerhaft erreichbar.

Dynamic DNS (DynDNS) löst dieses Problem, indem ein Domainname automatisch auf die aktuelle IP-Adresse aktualisiert wird.

DynDNS Funktionsweise

  • Sie registrieren eine DynDNS-Domain.
  • Ein Client aktualisiert regelmäßig die öffentliche IP.
  • Der DNS-Eintrag wird automatisch angepasst.

Beispiel Domain:

  • meinserver.example-dyndns.org

DynDNS Anbieter

  • DuckDNS
  • No-IP
  • Dynu
  • Cloudflare (API)

DynDNS Client auf Linux installieren

Ein einfacher Weg ist die Nutzung eines Curl-Skripts.

Beispiel mit DuckDNS

mkdir ~/duckdns
cd ~/duckdns
nano update.sh
curl "https://www.duckdns.org/update?domains=meinserver&token=TOKEN&ip="

Skript ausführbar machen

chmod +x update.sh

Cronjob erstellen

crontab -e
*/5 * * * * ~/duckdns/update.sh

Damit wird die IP-Adresse alle fünf Minuten aktualisiert.

Externe Verbindung testen

Nachdem Port Forwarding und DynDNS eingerichtet sind, sollte der Zugriff getestet werden.

DNS prüfen

dig meinserver.example-dyndns.org

Port testen

nc -vz meinserver.example-dyndns.org 22

SSH Verbindung

ssh user@meinserver.example-dyndns.org

Typische Fehlerquellen

  • Server hat keine statische IP-Adresse
  • Firewall blockiert den Port
  • Router-Portweiterleitung falsch konfiguriert
  • DynDNS Update funktioniert nicht
  • Provider nutzt Carrier-Grade NAT

Carrier-Grade NAT erkennen

curl ifconfig.me

Wenn diese Adresse nicht mit der Router-WAN-Adresse übereinstimmt, befindet sich der Anschluss hinter CGNAT.

Sicherheitsmaßnahmen für öffentliche Server

  • SSH Key Authentifizierung nutzen
  • Root Login deaktivieren
  • Fail2Ban einsetzen
  • Firewall Regeln restriktiv konfigurieren
  • Regelmäßig Updates installieren

Fail2Ban Beispiel

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Monitoring und Wartung

Ein öffentlich erreichbarer Server sollte kontinuierlich überwacht werden.

  • Logdateien regelmäßig prüfen
  • Firewall-Regeln auditieren
  • Portscans im eigenen Netz durchführen
  • DynDNS Updates überwachen

Offene Ports prüfen

sudo ss -tulnp

Systemlogs analysieren

journalctl -xe

Durch die Kombination aus NAT, Port Forwarding und DynDNS können Linux-Server auch in privaten Netzwerken zuverlässig erreichbar gemacht werden. Mit einer sicheren Firewall-Konfiguration, Monitoring und regelmäßiger Wartung lässt sich eine stabile und sichere Infrastruktur betreiben.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles