Dienste auf Linux-Server mit NAT: Unterschied zwischen den Versionen

Aus Freifunk Halle
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Eine kleine Anleitung, wie ein Freifunk-Dienst erreichbar gemacht werden kann.
== Vorbedingungen ==
== 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 <nowiki>http://10.62</nowiki>'''.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]])
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 <nowiki>http://10.62</nowiki>'''.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]])
Zeile 12: Zeile 10:
== Server LAN-seitig auf eine feste IP einstellen oder einen festen DHCP-Lease zuweisen ==
== Server LAN-seitig auf eine feste IP einstellen oder einen festen DHCP-Lease zuweisen ==
=== Server mit fester IP ===
=== 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 Raspi sollte also außerhalb des Bereiches liegen. Ich gehe im weiteren Verlauf davon aus, das dem Raspberry die 192.168'''.62.50''' fest zugeordnet wird wie folgt: (Bei Debianbasierten Systemen ist dies unter ''/etc/network/interfaces'' zu finden.)
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 dem Raspberry die 192.168'''.62.50''' fest zugeordnet wird wie folgt: (Bei Debianbasierten Systemen ist dies unter ''/etc/network/interfaces'' zu finden.)
 
<pre>
<pre>
iface eth0 inet static
iface eth0 inet static
Zeile 20: Zeile 19:
dns-nameservers 192.168.62.1 8.8.8.8
dns-nameservers 192.168.62.1 8.8.8.8
</pre>
</pre>
''Anmerkung: auf meinem Raspi funktionierte die Namensauflösung nicht. Ich habe daher das Paket '''resolvconf''' nachinstalliert und die Nameserver hart verdrahtet''


=== Server vom DHCP-Server eine feste IP zuteilen ===
=== Server vom DHCP-Server eine feste IP zuteilen ===
Alternativ kann auch dem DHCP-Server auf dem Router mitgeteilt werden, einer MAC-Adresse im LAN (sprich Raspi) 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).
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 ==
== Freifunk-IP des neuen Dienstes eintragen ==
Zeile 43: Zeile 40:
     option proto 'static'
     option proto 'static'
     list ipaddr '10.62.Y.Y'
     list ipaddr '10.62.Y.Y'
     list ipaddr '10.62.X.X'</pre>
     list ipaddr '10.62.X.X'
</pre>


Nach dem Abspeichern ist dann der Exkurs auf die Konsolen auch schon beendet und der Rest der Arbeit findet im Webinterface des Routers statt.
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 ==
== Firewall-Regeln erweitern ==
Im Webinterface des Routers gehen wir nach Admin → Netzwerk → Firewall → Benutzerdefinierte Regeln, dort tragen wir die Routing-Regeln vom Router zum Raspi und zurück ein (Hinweg = NAT, Rückweg = SNAT).
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).
 
'''Anmerkung:''' ''Wenn du die Umleitung zu weiteren oder anderen IP-Adressen machen möchtest, kann das auch in der rc.local auf dem Raspi eingetragen werden.''
 
<pre>
<pre>
iptables -t nat -I PREROUTING -d 10.62.X.X -j DNAT --to-destination 192.168.62.50
iptables -t nat -I PREROUTING -d 10.62.X.X -j DNAT --to-destination 192.168.62.50
Zeile 57: Zeile 52:
</pre>
</pre>


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 Raspi beantwortet werden und der Raspi ebenfalls auf allen Ports aus dem Freifunknetz erreichbar sein.
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 ==
== 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:
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 → 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: <nowiki>http://</nowiki>Adresse:Port|Protokoll|Beschreibung ein. Der Port ist hierbei Pflicht, auch wenn es Port 80 ist. <nowiki>(Bespiel: http://10.62.X.X:80|tcp|Dessau-Info)</nowiki>
* 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: <nowiki>http://</nowiki>Adresse:Port|Protokoll|Beschreibung ein. Der Port ist hierbei Pflicht, auch wenn es Port 80 ist. <nowiki>(Bespiel: http://10.62.X.X:80|tcp|Dessau-Info)</nowiki>

Version vom 18. August 2016, 21:10 Uhr

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 dem Raspberry 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 ein. Der Port ist hierbei Pflicht, auch wenn es Port 80 ist. (Bespiel: http://10.62.X.X:80|tcp|Dessau-Info)