Dienste auf Linux-Server mit NAT

Aus Freifunk Halle
Wechseln zu: Navigation, Suche

Vorbedingungen

Im folgenden wird davon ausgegangen, dass wir einen http-Dienst, auf einem Server unter Port 80 auf einer eigenen Freifunk-IP anbieten wollen. Die Freifunk-IP, die im Beispiel verwendet wird, ist die 10.62.X.X., der Dienst auf dem Server wird also unter http://10.62.X.X erreichbar sein. Der Router, an dem der Server über einen LAN-Port verbunden ist, hat im Beispiel die Freifunk-IP 10.62.Y.Y. Diese IP-Adressen müsst ihr vorher wissen und vor allem im Wiki registrieren. (Adressverwaltung)

Nochmal zur Sicherheit:

  • IP 10.62.X.X = Im Wiki registrierte Adresse, unter der der Dienst/ Server erreichbar sein soll
  • IP 10.62.Y.Y = Im Wiki registrierte Adresse des Routers, an dem der Server an einem LAN-Port angeschlossen ist

Die LAN-Schnittstelle des Routers arbeitet standardmäßig im Adressbereich 192.168.62.0/24, d.h. der nutzbare Adressraum geht von 192.168.62.1 bis 192.168.62.254, und damit fangen wir an:

Server LAN-seitig auf eine feste IP einstellen oder einen festen DHCP-Lease zuweisen

Server mit fester IP

Der DHCP-Server auf dem Router vergibt ins LAN in der Standardeinstellung Adressen von 192.168.62.100 - 192.168.62.250. Die IP des Servers sollte also außerhalb des Bereiches liegen. Ich gehe im weiteren Verlauf davon aus, das der Server die 192.168.62.50 fest zugeordnet wird wie folgt: (Bei Debianbasierten Systemen ist dies unter /etc/network/interfaces zu finden.)

iface eth0 inet static
	address 192.168.62.50
	netmask 255.255.255.0
	gateway 192.168.62.1
	dns-nameservers 192.168.62.1 8.8.8.8

Server vom DHCP-Server eine feste IP zuteilen

Alternativ kann auch dem DHCP-Server auf dem Router mitgeteilt werden, der MAC-Adresse des Servers im LAN immer die selbe IP-Adresse zu geben. Dies kann man einstellen im Webinterface unter Admin → Netzwerk → DHCP und DNS bei statische Einträge. Dabei ist es egal, ob die IP im Bereich der verteilten Adressen des DCHP-Servers liegt oder nicht (im Beispiel 192.168.62.100 - .250). Wichtig ist, dass sie in das Netz passt (im Beispiel 192.168.62.1 - .254).

Freifunk-IP des neuen Dienstes eintragen

Auf dem Router bearbeiten wir nun über eine SSH-Konsole die Datei /etc/config/network mit einem Editor. Wir suchen uns das Interface wireless0. Dieses wollen wir verändern. Im Original sieht das so aus:

config interface 'wireless0'
	option dns '8.8.8.8 212.204.49.83 141.1.1.1'
	option netmask '255.255.255.255'
	option proto 'static'
	option ipaddr '10.62.Y.Y'

Wir möchten diesem Interface eine zweite IP zuweisen, nämlich die, unter der der Service später erreichbar sein soll. Wir müssen dem Interface mitteilen, das es statt mit einer IP-Adresse mit einer Liste von IP-Adressen arbeiten soll. Das sieht dann so aus, oben die IP des Routers und unten die IP unseres neuen Dienstes:

config interface 'wireless0'
    option dns '8.8.8.8 212.204.49.83 141.1.1.1'
    option netmask '255.255.255.255'
    option proto 'static'
    list ipaddr '10.62.Y.Y'
    list ipaddr '10.62.X.X'

Nach dem Abspeichern ist dann der Exkurs auf die Konsolen auch schon beendet und der Rest der Arbeit findet im Webinterface des Routers statt.

Firewall-Regeln erweitern

Im Webinterface des Routers gehen wir nach Admin → Netzwerk → Firewall → Benutzerdefinierte Regeln, dort tragen wir die Routing-Regeln vom Router zum Server und zurück ein (Hinweg = NAT, Rückweg = SNAT).

iptables -t nat -I PREROUTING -d 10.62.X.X -j DNAT --to-destination 192.168.62.50
iptables -t nat -I POSTROUTING -s 192.168.62.50 -j SNAT --to 10.62.X.X

Damit werden die Pakete, die auf 10.62.X.X reinkommen, auf 192.168.62.50 weitergeleitet und rückwärts genauso. Nach dem Speichern der Regeln wird ein Neustart des Routers fällig, den ihr jetzt durchführt. Nach dem Neustart sollte ein Ping 10.62.X.X vom Server beantwortet werden und der Server ebenfalls auf allen Ports aus dem Freifunknetz erreichbar sein.

Dienst im Freifunk-Netz bekannt machen

Dazu benötigt es zwei Einträge, einen bei der OLSR-HNA-Ankündigung und einen bei der OLSR-Namensauflösung:

  • Im Webinterface gehen wir nach Admin → Dienste → OLSR IPv4 → HNA-Ankündigungen und erstellen einen neuen Eintrag mit der IP 10.62.X.X und der Subnetzmaske 255.255.255.255
  • Im Webinterface gehen wir nach Admin → Dienste → OLSR IPv4 → Plugins und öffnen die Konfiguration des Plugins olsrd_nameservice.so.0.3. In dem Dropdownfeld unten fügen wir ein zusätzliches Feld des Typs service hinzu. Als Parameter geben wir eine Zeichenkette in folgender Reihenfolge ein: http://Adresse:Port|Protokoll|Beschreibung. Der Port ist hierbei Pflicht, auch wenn es Port 80 ist. (Bespiel: http://10.62.X.X:80|tcp|Dessau-Info)