IC-VPN

Aus Freifunk Köln, Bonn und Umgebung
Zur Navigation springen Zur Suche springen


Überblick

Das InterCity-VPN verbindet die einzelnen Städte/Freifunk-Communities in Deutschland untereinander. Es ermöglicht den Zugriff auf netzinterne Dienste aller verbundenen Communities.

Mit tinc werden Tunnel aufgebaut, auf denen BGP (Border Gateway Protocol) gesprochen wird. Einige Communities betreiben eigene TLDs (Top Level Domains). Diese DNS-Zonen sind (in Zukunft) auch im KBU-Netz bekannt.

Die Koordinierung des Netzes erfolgt über das (globale) Freifunk-Wiki und einige Github-Repositorys (icvpn-meta und icvpn).

Umsetzung

Zur Zeit haben einzelne Supernodes (siehe Infrastruktur ) Zugang zum IC-VPN. Alle Nodes mit einer Verbindungen zu einem dieser Supernodes steht das IC-VPN bisher zur Verfügung.

netzinterne Dienste

Im IC-VPN gibt es einige netzinterne Dienste. Ein Beispiel aus Hamburg ist "start.ffhh".

ICVPN-Router installieren

Benötigte Dienste:

  • Tinc (VPN)
  • Babel (für BGP)

Notizblock

  • Trennung über lxc (application container). Wichtig: Policy-Router vermeidung - wird fies!
  • Host (für VPN-Interfaces, z.B. eine VM) wie normal aufsetzen. Tinc einrichten + Verbindung testen: https://github.com/freifunk/icvpn
  • Network Namespaces kann Debian nicht wirklich - damit würde das recht hakish. LXC FTW - docker der, der will.
  • Wichtig: Alle benötigten Dienste nicht auf dem Host starten
  • Kein lxc-start. Kommandos: lxc-execute (initial), dann lxc-attach
root@icvpn:~# systemctl disable bird.service
root@icvpn:~# systemctl disable bird6.service
root@icvpn:~# systemctl disable babeld.service
  • Wenn VPN, lxc konfigurieren - Idee: Gleiches rootfs verwenden (wg. cronjobs, auf dem Host, etc.) aber nur die notwendigen Interfaces durchreichen!
# /var/lib/lxc/router/config
lxc.rootfs = /
lxc.utsname = router

lxc.tty = 4
lxc.pts = 1024
lxc.arch = amd64


lxc.network.type = phys
lxc.network.flags = up
lxc.network.link = icvpn
lxc.network.name = icvpn
lxc.network.hwaddr = A2:FF:FF:FF:02:01
lxc.network.ipv4 = 10.207.0.42/16
lxc.network.ipv6 = fec0::a:cf:0:2a/96

lxc.network.type = phys
lxc.network.flags = up
lxc.network.link = backbone
lxc.network.name = backbone

lxc.network.type = phys
lxc.network.flags = up
lxc.network.link = backbone-fastd
lxc.network.name = backbone-fastd