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

Aus Freifunk Halle
Zur Navigation springen Zur Suche springen
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 RasPi unter Port 80 auf einer eigenen IP anbieten wollen. Die IP die im Beispiel verwendet wir ist die 10.62.X.X. Der Server (Raspi) wird also unter http://10.62.X.X erreichbar sein. Der Router, an dem der RasPi über einen gelben LAN Port verbunden ist, hat im Beispiel die IP 10.62.Y.Y. Diese IP's müßt ihr vorher wissen und vor allem im Wiki registriert haben.  
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]])
 


'''Nochmal zur Sicherheit:'''
'''Nochmal zur Sicherheit:'''
* IP '''10.62.X.X''' = Im Wiki registrierte Adresse unter der der Server erreichbar sein soll
* 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 am LAN Port angeschlossen ist
* 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:


Die LAN Schnittstelle des Routers arbeitet im Adressbereich 192.168.1.x und damit fangen wir an:
== Server LAN-seitig auf eine feste IP einstellen oder einen festen DHCP-Lease zuweisen ==
==Server auf eine feste IP einstellen.==  
=== Server mit fester IP ===
Der DHCP auf dem LAN vergibt default Adressen von 192.168.1.100 - 192.168.1.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.1.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 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.)
<pre>
<pre>
iface eth0 inet static
iface eth0 inet static
address 192.168.1.50
address 192.168.62.50
netmask 255.255.255.0
netmask 255.255.255.0
gateway 192.168.1.1
gateway 192.168.62.1
dns-nameservers 192.168.1.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''
''Anmerkung: auf meinem Raspi funktionierte die Namensauflösung nicht. Ich habe daher das Paket '''resolvconf''' nachinstalliert und die Nameserver hart verdrahtet''


==IP bekanntmachen==  
=== Server vom DHCP-Server eine feste IP zuteilen ===
Auf dem Router bearbeiten wir nun, auf der SSH Konsole, die Datei '''/etc/config/network''' mit dem Editor vi. Wir suchen uns das Interface '''wireless0'''. Dieses wollen wir verändern. Im Original sieht das so aus:
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).
 
== 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:
<pre>
<pre>
config interface 'wireless0'
config interface 'wireless0'
Zeile 32: Zeile 36:
</pre>
</pre>


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
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:
<pre>
<pre>
config interface 'wireless0'
config interface 'wireless0'
Zeile 43: Zeile 47:
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==
== Firewall-Regeln erweitern ==
Im Webinterface des Routers gehen wir unter '''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 Raspi und zurück ein (Hinweg = NAT, Rückweg = SNAT).


'''Anmerkung:''' ''Wenn du die Umleitung zu weiteren oder anderen IP-Adressen machern möchtest, kann das auch in der rc.local auf dem raspi eingetragen werden.''
'''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.1.50
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.1.50 -j SNAT --to 10.62.X.X
iptables -t nat -I POSTROUTING -s 192.168.62.50 -j SNAT --to 10.62.X.X
</pre>
</pre>
Damit werden die Pakete, die auf 10.62.X.X reinkommen auf 192.168.1.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.


==IP Adresse im Netz bekannt machen (HNA Ankündigung)==
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.
Im Webinterface gehen wir unter '''OLSR -> HNA-Ankündigungen''' und erstellen einen neuen Eintrag mit 10.62.X.X und Subnetzmaske 255.255.255.255
 
== 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:


==Dienst im Freifunk Netz bekannt machen==
* 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 unter '''OLSR -> 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 "service" hinzu. Als Parameter geben wir eine Zeichenkette in folgender Reihenfolge ein 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:04 Uhr

Eine kleine Anleitung, wie ein Freifunk-Dienst erreichbar gemacht werden kann.

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 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.)

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

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

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).

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 Raspi 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.

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 Raspi beantwortet werden und der Raspi 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)