Netzwerk/Super-Node Backbone Anbindung: Unterschied zwischen den Versionen

Aus Freifunk Rheinland e.V.
Zur Navigation springen Zur Suche springen
(→‎Anbindung von Supernodes an den Freifunk Rheinland Backbone: mehr Anmerkungen und für Arch Linux spezifische Kommandos)
Zeile 1: Zeile 1:
= Anbindung von Supernodes an den Freifunk Rheinland Backbone =
Dieser Artikel erläutert, wie eine [[Super-Node]] an den [[Backbone]] des Freifunk Rheinland angeschlossen werden kann.
Dieser Artikel soll erläutern wie eine Supernode an den Backbone des Freifunk Rheinland angeschlossen werden kann.


== Anbindung an das Layer2 Netz via tinc ==
== tinc ==


Zuerst einmal ist das Paket tinc auf dem Super-Node zu installieren.
Die Super-Nodes und die Router bilden ein vermaschtes VPN (Layer 2) per tinc.
 
Zuerst das Paket tinc installieren.
 
  # pacman -S tinc
 
Das Verzeichnis für die Backbone-Konfiguration und die Schlüssel anlegen. Der Name dieser Instanz lautet: ''rheinland''.


   mkdir -p /etc/tinc/rheinland
   mkdir -p /etc/tinc/rheinland
Die tinc-Konfiguration für tinc ablegen. Hier die provider-zugewiesene IPv4-Adresse des Servers unter $ADRESSE und den Hostnamen unter $HOSTNAME eintragen.


   # < /etc/tinc/rheinland/tinc.conf
   # < /etc/tinc/rheinland/tinc.conf
   AddressFamily ipv4
   AddressFamily ipv4
   BindToInterface <public IPv4 Interface>
   BindToInterface $ADRESSE
   Broadcast direct
   Broadcast direct
   DeviceType tap
   DeviceType tap
Zeile 18: Zeile 25:
   Interface bb0
   Interface bb0
   Mode switch
   Mode switch
   Name <hostname>
   Name $HOSTNAME
   PingInterval 15
   PingInterval 15
   PingTimeout 5
   PingTimeout 5
Zeile 25: Zeile 32:
   ConnectTo = rheinland1
   ConnectTo = rheinland1
   Debug 3
   Debug 3
Dann eine Datei mit Adresse und Schlüssel des einen Routers anlegen.


   # < /etc/tinc/rheinland/hosts/rheinland0
   # < /etc/tinc/rheinland/hosts/rheinland0
Zeile 36: Zeile 45:
   awnBNLV2ate25FZuvjHkD6yyjQcCsoryMwIDAQAB
   awnBNLV2ate25FZuvjHkD6yyjQcCsoryMwIDAQAB
   -----END RSA PUBLIC KEY-----
   -----END RSA PUBLIC KEY-----
Und noch eine Datei mit Adresse und Schlüssel des anderen Routers.


   # < /etc/tinc/rheinland/hosts/rheinland1
   # < /etc/tinc/rheinland/hosts/rheinland1
Zeile 48: Zeile 59:
   -----END RSA PUBLIC KEY-----
   -----END RSA PUBLIC KEY-----


Skript zum Setzen der Adressen. Bitte XXX und XXXX durch zugewiesene Werte ersetzen!
Ein Skript zum Setzen der Adressen beim Start des VPN anlegen.. Bitte $SUFFIX durch das Suffix der Super-Node ersetzen (z.B. ''13'' für Rheinufer).


   # < /etc/tinc/rheinland/tinc-up
   # < /etc/tinc/rheinland/tinc-up
Zeile 54: Zeile 65:
    
    
   ip link set up dev $INTERFACE
   ip link set up dev $INTERFACE
   ip -4 addr add 10.78.0.XXX/22 dev $INTERFACE
   ip -4 addr add 10.78.0.$SUFFIX/22 dev $INTERFACE
   ip -6 addr add 2001:470:72da::XXXX/64 dev $INTERFACE  
   ip -6 addr add 2001:470:72da::$SUFFIX/64 dev $INTERFACE  
   ip -6 addr add 2001:470:7861::XXXX/64 dev $INTERFACE
   ip -6 addr add 2001:470:7861::$SUFFIX/64 dev $INTERFACE


Ausführbar machen
Das Skript ausführbar machen


   # chmod +x /etc/tinc/rheinland/tinc-up
   # chmod +x /etc/tinc/rheinland/tinc-up


Public/private key pair erzeugen. Wir nehmen die Standardlänge von 2048 bit und den vorgeschlagenen Pfad zu den Dateien (/etc/tinc/rsa_key.priv und /etc/tinc/rsa_key.pub).
Ein Paar aus öffentlichem und privaten Schlüssel erzeugen. Wir nehmen die Standardlänge von 2048 bit und den vorgeschlagenen Pfad zu den Dateien (/etc/tinc/rsa_key.priv und /etc/tinc/rsa_key.pub).


   # tincd -K
   # tincd -K


Tincd starten. (per Init, Systemd,...)
Der öffentliche Schlüssel soll auf der Wiki-Seite der Super-Node dokumentiert und den Admins der Router mitgeteilt werden.
 
Wenn die Admins den Schlüssel eingetragen haben, tincd aktivieren und starten.
 
  # systemctl enable tincd@rheinland
  # systemctl start tincd@rheinland


== Adressierung der Supernodes im Backbone ==
== Adressierung der Supernodes im Backbone ==

Version vom 14. März 2014, 16:17 Uhr

Dieser Artikel erläutert, wie eine Super-Node an den Backbone des Freifunk Rheinland angeschlossen werden kann.

tinc

Die Super-Nodes und die Router bilden ein vermaschtes VPN (Layer 2) per tinc.

Zuerst das Paket tinc installieren.

 # pacman -S tinc

Das Verzeichnis für die Backbone-Konfiguration und die Schlüssel anlegen. Der Name dieser Instanz lautet: rheinland.

 mkdir -p /etc/tinc/rheinland

Die tinc-Konfiguration für tinc ablegen. Hier die provider-zugewiesene IPv4-Adresse des Servers unter $ADRESSE und den Hostnamen unter $HOSTNAME eintragen.

 # < /etc/tinc/rheinland/tinc.conf
 AddressFamily ipv4
 BindToInterface $ADRESSE
 Broadcast direct
 DeviceType tap
 DirectOnly yes
 Forwarding off
 HostNames no
 Interface bb0
 Mode switch
 Name $HOSTNAME
 PingInterval 15
 PingTimeout 5
 PrivateKeyFile /etc/tinc/rsa_key.priv
 ConnectTo = rheinland0
 ConnectTo = rheinland1
 Debug 3

Dann eine Datei mit Adresse und Schlüssel des einen Routers anlegen.

 # < /etc/tinc/rheinland/hosts/rheinland0
 Address=78.47.35.141
 -----BEGIN RSA PUBLIC KEY-----
 MIIBCgKCAQEAxaewx1cZPPjeRLomoO2z0GN/Lioc0bwEoM9cB++lzqfhfEbNLDbU
 hMkn2Q/2uR51h2ZJ5tgUcU1wCa2lrPXVO8e8oZo7RTJi+rYJyDtosC2W693GtLxK
 GYDQOyPmrcc55X4j0UeyFNP2dKH8qmRH2cs2VM1sJslKOGheJVSXxo2xBQy2EiQw
 AMITubAW6NaG/tB5hwehyvcp11B/EXuWl1UByEi3R8TCQPPyyuyhmVswnSUZzbsU
 UMkazbrbaK322DmuHT8txn4DK6/DLSz0MzPwe0AGB8ReQA5wKS2JgnRmZ0HKLJ9K
 awnBNLV2ate25FZuvjHkD6yyjQcCsoryMwIDAQAB
 -----END RSA PUBLIC KEY-----

Und noch eine Datei mit Adresse und Schlüssel des anderen Routers.

 # < /etc/tinc/rheinland/hosts/rheinland1
 Address=78.47.35.139
 -----BEGIN RSA PUBLIC KEY-----
 MIIBCgKCAQEA2xz9NGY9XUkrsciIZ5AucrtGnlXcD257/jYDyyCVLDNuS16cA3vF
 bsH5Br3zjYRsN+AZjvgUbfCyrM4qxWBoSTmcFOH5uQLt0RD+p8dpq/p/9B0vRMI2
 eGLK6C+2EylLEui9lrwpXF27530uIlXxORsjEgGjgJMegkTQoU/yFpt8kXr0N+Zg
 sCdLyVByzS6FqmZOuFJiNTC/IggkRHqqKLoj9Kp4L/qqdTCeszWVtkNQpljXhiEq
 4OR9nreH+icns+GrvWAqhMUyVTJrOr1nPDgFT5FytGjmudN/tSpp7PE4OZbvpIg/
 ZxMfmKM7Qs/+xPLry7SB7NJzJSJVOR6fDQIDAQAB
 -----END RSA PUBLIC KEY-----

Ein Skript zum Setzen der Adressen beim Start des VPN anlegen.. Bitte $SUFFIX durch das Suffix der Super-Node ersetzen (z.B. 13 für Rheinufer).

 # < /etc/tinc/rheinland/tinc-up
 #/bin/sh
 
 ip link set up dev $INTERFACE
 ip -4 addr add 10.78.0.$SUFFIX/22 dev $INTERFACE
 ip -6 addr add 2001:470:72da::$SUFFIX/64 dev $INTERFACE 
 ip -6 addr add 2001:470:7861::$SUFFIX/64 dev $INTERFACE

Das Skript ausführbar machen

 # chmod +x /etc/tinc/rheinland/tinc-up

Ein Paar aus öffentlichem und privaten Schlüssel erzeugen. Wir nehmen die Standardlänge von 2048 bit und den vorgeschlagenen Pfad zu den Dateien (/etc/tinc/rsa_key.priv und /etc/tinc/rsa_key.pub).

 # tincd -K

Der öffentliche Schlüssel soll auf der Wiki-Seite der Super-Node dokumentiert und den Admins der Router mitgeteilt werden.

Wenn die Admins den Schlüssel eingetragen haben, tincd aktivieren und starten.

 # systemctl enable tincd@rheinland
 # systemctl start tincd@rheinland

Adressierung der Supernodes im Backbone

IPv6

SLAAC ist zu verwenden.

Legacy IP (IPv4)

Der Adressbereich 10.78.0.0/22 ist für den Backbone reserviert. Adressen sind hier zu verwalten.

Konfiguration von dynamischem Routing

Innerhalb des Backbones des Freifunk Rheinland wird das Routingprotokoll OSPF verwendet. Als Routing Software kommt derzeit Quagga zum Einsatz. Quagga ist in den Paketsammlungen der üblichen Linux Distributionen bereits enthalten. Die Konfigurationen für IPv4 und IPv6 finden getrennt statt.

Konfiguration Zebra

Zebra ist ein Dienst aus dem Quagga Paket welches von den verschiedenen Routing Daemonen Routen annimmt und im Kernel installiert. Eine einfache Konfiguration kann wie folgt aussehen:

# > /etc/quagga/zebra.conf
!
! Zebra configuration saved from vty
!   2014/01/27 23:38:55
!
hostname <hostname>-zebra
password zebra
!
ip forwarding
ipv6 forwarding
!
!
line vty
!

<hostname> ist zu ersetzen.

Es wird lediglich ein Hostname sowie ein Passwort für die Zebra Shell gesetzt und IP Forwarding aktiviert. Mittels telnet 127.0.0.1 2601 kann Zebra auch interaktiv konfiguriert werden. Die Konfiguration ähnelt der von Routern mit Cisco IOS.

Konfiguration OSPF für IPv6

OSPF für IPv6 wird in Quagga durch den Dienst ospf6d bereitgestellt. Dieser teilt Zebra die Routinginformationen mit welche in die Kernel Routingtabelle installiert werden sollen. Eine einfache Konfiguratuion wie folgt aussehen:

# > /etc/quagga/ospf6d.conf
!
! Zebra configuration saved from vty
!   2014/01/05 12:17:57
!
hostname <hostname>-ospf6d
password ospf6d
!
interface bb0
 ipv6 ospf6 hello-interval 1
 ipv6 ospf6 dead-interval 4
!
router ospf6
 redistribute connected route-map bat0
 interface bb0 area 0.0.0.0
!
route-map bat0 permit 10
 match interface bat0
!
line vty
!

<hostname> ist zu ersetzen.

Konfiguration OSPF für legacy IP (IPv4)

OSPF für IPv4 wird in Quagga durch den Dienst ospfd bereitgestellt. Dieser teilt Zebra die Routinginformationen mit welche in die Kernel Routingtabelle installiert werden sollen. Eine einfache Konfiguration wie folgt aussehen:

# > /etc/quagga/ospfd.conf 
!
! Zebra configuration saved from vty
!   2013/12/19 21:59:29
!
hostname <hostname>-ospf
password ospfd
!
!
interface bb0
 ip ospf hello-interval 1
 ip ospf dead-interval 4
!
router ospf
 auto-cost reference-bandwidth 100000
 passive-interface default
 no passive-interface bb0
 network 10.78.0.0/22 area 0.0.0.0
 network <IP-Range of Domain> area 0.0.0.0
!
line vty

Die Konfiguration aktiviert OSPF auf der Schnittstelle zum Backbone und auf der Schnittstelle zur Domäne. Durch passive-interface default wird in Richtung batman jedoch kein OSPF gesprochen, das Netz aber in Richtung Backbone angekündigt.