Dienste auf Linux-Server mit OLSR

Aus Freifunk Halle
Zur Navigation springen Zur Suche springen
  • Es wird vorausgesetzt, das du dich mit Linux auskennst und OLSRD bereits auf deinem Server installiert hast. Hilfe dazu findest du zum Beispiel hier. LinuxOLSR
  • Das hier dargestellte sind Beispiele. Diese musst du entsprechend anpassen. In diesem Beispiel werden 3 Dienste durch den Server angekündigt. Der erste läuft auf dem Server, die anderen beiden laufen auf anderen Geräten im Lan.

Dienste ankündigen

  • Dienste werden in der /etc/olsrd/olsrd.conf angekündigt. Wenn du also auf deinem Server Dienste bereitstellen möchtest, ändere die olsrd.conf entsprechend. Der Eintrag erfolgt im Bereich LoadPlugin "olsrd_nameservice.so.0.3". Hier ein Beispiel:
LoadPlugin "olsrd_nameservice.so.0.3"
{
	PlParam "name" "servername"
	PlParam "suffix" ".olsr"
#       PlParam         "service"       "Adresse:Port|Protokoll|Dienstname"
	PlParam 	"service"	"http://servername.olsr:8080|tcp|OLSR-Information"
	PlParam 	"service"	"http://104.62.0.2:80|tcp|Dienst2"
  	PlParam 	"service"	"http://104.62.0.3:21|tcp|Dienst3"
}

Du kannst deinem Server im ersten Abschnitt einen Namen geben. PlParam "name" "servername" Den trägst du bei Servername ein. Bitte beachte dabei, das jeder Name im Netz nur einmal vorkommt. Es ist die Adresse unter der dein Server erreichbar sein wird. Du kündigst die Dienste mit PlParam "service" "Adresse:Port|Protokoll|Dienstname" an. Als Adresse kannst du servername.olsr oder die IP-Adresse des Server angeben.

Zusätzliche IP-Adressen auf dem Server und im OLSR ankündigen

  • Der Server bekommt von den VPN Servern je eine IP-Adressen zugewiesen. Unter diesen ist er im Freifunknetz erreichbar. Man kann aber auch weitere IP-Adressen auf einem Server einrichten. Damit bitte sparsam umgehen. Wir haben zwar viele aber nicht unendlich viele IP-Adressen. Reserviere die Adressen in der Netzverwaltung im Projekt 0. Um diese IP-Adressen dem Server zuzuweisen erzeugst du virtuelle Schnittstellen. Am besten auf realen Schnittstellen. Im Beispiel wurde an die reale Schnittstelle eth0 die virtuelle Schnittstelle eth0:1 und eth0:2angehängt. Das wird in die /etc/network/interfaces eingetragen.
iface eth0 inet dhcp

auto eth0:1
iface eth0:1 inet static
address 104.62.0.2
netmask 255.255.255.255
broadcast 104.62.0.2

auto eth0:2
iface eth0:2 inet static
address 104.62.0.3
netmask 255.255.255.255
broadcast 104.62.0.3 
  • Jetzt müssen im OLSR diese virtuellen Schnittstellen angekündigt werden. Dazu musst du in der /etc/olsrd/olsrd.conf diese noch eintragen. Das machst du ganz unten.
Interface "eth0:1"
{
    HelloInterval               6.0
    HelloValidityTime           600.0
    TcInterval                  0.5
    TcValidityTime              300.0
    MidInterval                 10.0
    MidValidityTime             300.0
    HnaInterval                 10.0
    HnaValidityTime             300.0
    LinkQualityMult default 1.0
}

Interface "eth0:2"
{
    HelloInterval               6.0
    HelloValidityTime           600.0
    TcInterval                  0.5
    TcValidityTime              300.0
    MidInterval                 10.0
    MidValidityTime             300.0
    HnaInterval                 10.0
    HnaValidityTime             300.0
    LinkQualityMult default 1.0
}

Jetzt kündigt OLSR auch diese IP-Adressen im Netz an.

IP-Adressen mit dem Server umleiten (NAT)

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.


Nochmal zur Sicherheit:

  • IP 10.62.X.X = Im Wiki registrierte Adresse unter der der Server erreichbar sein soll
  • IP 10.62.Y.Y = Im Wiki registrierte Adresse des Routers an dem Der Server am LAN Port angeschlossen ist


Die LAN Schnittstelle des Routers arbeitet im Adressbereich 192.168.1.x und damit fangen wir an:

Server auf eine feste IP einstellen.

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

iface eth0 inet static
	address 192.168.1.50
	netmask 255.255.255.0
	gateway 192.168.1.1
	dns-nameservers 192.168.1.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

IP bekanntmachen

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:

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/24'

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

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)

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.

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

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.