IC-VPN
Ü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
- vim in der lxc-shell macht schmerzen. Auf dem Host verwenden!
- bird braucht nicht mehr die table 66 zu verwenden.
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