WireGuard-Tunnel zu FunkFeuer
WireGuard Tunnel für Nodes | |
---|---|
Starttermin |
05 Jan. 21 |
Status | |
TODO: WireGuard-Tunnel zu FunkFeuer
Falls du Interesse hast, diese Idee zu einem Projekt und hoffentlich zu einem lauffähigen Produkt für die 0xFF-Gemeinschaft zu machen, mach mit und teile deine Ideen und Vorstellungen.
--> https://matrix.to/#/%230xFF-WireGuardTunnel%3Amatrix.org // #0xFF-WireGuardTunnel:matrix.org
Ziel
- Es soll möglich sein, über WireGuard die Funktionalität des jetzigen OpenVPN-Zugangs abzubilden.
- Es soll eine möglichst vollautomatische Konfig über das Frontend machbar sein.
- Es soll IPv4 und IPv6 möglich sein.
- ...
Vorteile
- Verschlüsselung des Tunnels bei niedriger CPU-Last
- Tunnel ist stateless
- Software deutlich kleiner als OpenVPN
- Konfig sehr einfach
MeshMesh
- Knoten könnten auch via Web sich vermeshen --> Redundanz
Nachteile
- für OLSRv1 muss eine Layer2-Tunneltechnik durch den Tunnel gebaut werden, da WireGuard nur Layer3 macht
Link-Sammlung
- EdgeRouter WireGuard - https://github.com/WireGuard/wireguard-vyatta-ubnt
- MTU Calc - https://baturin.org/tools/encapcalc/
- OLSR Debian - https://repos.freiesnetz.at/
Variante 1 - WG mit VXLAN
Info
Remote Node kann via Wireguard verbinden und via SiteLocal ipv6 fd00 Adresse ein VXLAN aufbauen, dieses steckt in der bridge auf der OLSR läuft.
(SiteLocal könnte mit echter 0xFF IPv6 ersetzt werden, mir fällt jedoch kein Nutzen ein - atadxart)
- Wireguard Verbindung Node Public Key --> im Frontend hinterlegbar.
- SiteLocal IPv6 lässt sich zb aus NODE ID und Device ID aus dem Frontend errechnen.
- Wireguard ist zur Laufzeit konfigurierbar ohne laufende Tunnel zu stören.
- VXLAN ebenfalls zur Laufzeit konfigurierbar.
- IPv4 Sparsamkeit da nur eine IPv4 für alle Remote Nodes nötig
- Der IPv?/UDP-Wireguard/IPv6-VXLAN/IPv4 Stack ist recht dick doch da Wireguard multithread fähig ist darf mehr Durchsatz erwartet werden.
(ggü OpenVPN)
- Security - Daten Verschlüsselung, und durch Public/Private Key ist auch eine Authentifizierung gegenseitig gegeben.
--> Automatisierung somit vollständig möglich ohne Admin Eingriff am Tunnel-Server
TODO
Getestet ist es noch nicht, grundsätzlich müsste ein redundantes Tunnelserver Setup machbar sein.
atadxart - (werde ich noch nachliefern)
Netzaufbau
#------------<Tunnelserver> ----------OLSR---------- <Node1> [WG/VXLAN/OLSR] | | | [WG/VXLAN/OLSR] | [Mikrotik] | | <Remote Node> -----------OLSR----------#
MTU
Ausgehend von 1500 nutzbarer MTU
(PPPoE da leider oft bei den DSL Verbindungen nötig)
https://baturin.org/tools/encapcalc/?protocols=PPPoE,IPv4,WireGuard,IPv6,VXLAN,Ethernet
20 bytes bleiben da über aber es könnte ja IPv6 native vorm Wireguard sein dann kommt es auf
https://baturin.org/tools/encapcalc/?protocols=PPPoE,IPv6,WireGuard,IPv6,VXLAN,Ethernet
somit max MTU 1342
Tunnelserver
- Debian 11
- OLSR von https://repos.freiesnetz.at/
- wireguard
- ifupdown2
/etc/network/interfaces
auto lo iface lo inet loopback #VIRTUAL Wireless link to Node 1 # OLSR interface auto enp1s0 iface enp1s0 address 10.1.0.1/32 #INTERNET auto enp2s0 iface enp2s0 inet dhcp #Bridge für VXLANS #OLSR Interface auto br0 iface br0 pre-up /usr/bin/ip link add br0 type bridge address 10.1.1.1/32 post-up /usr/bin/ip link set br0 mtu 1342 #WIREGUARD #für alle Clients auto wg-olsr iface wg-olsr pre-up /usr/bin/ip link add wg-olsr type wireguard pre-up /usr/bin/wg setconf wg-olsr /etc/wireguard/wg-olsr.conf post-up /usr/bin/ip link set wg-olsr mtu 1420 #dieser part muss für jeden remote client ausgeführt werden #Remote Node Config post-up /usr/bin/ip addr add fd00:00ff:0001:abba::1/64 dev wg-olsr post-up /usr/bin/ip link add vxlan1 type vxlan id 1 remote fd00:00ff:0001:abba::2 dstport 4789 dev wg-olsr post-up /usr/bin/ip link set vxlan1 up post-up /usr/bin/ip link set vxlan1 mtu 1342 post-up /usr/bin/ip link set vxlan1 master br0
/etc/olsrd/olsrd.conf
Hier nur die zusätzlichen Settings
Interface "enp1s0" { AutoDetectChanges yes LinkQualityMult default 1.0 Weight 0 } Interface "br0" { AutoDetectChanges yes LinkQualityMult default 1.0 Weight 0 }
/etc/wireguard/wg-olsr.conf
[Interface] ListenPort = 51820 PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXX ##Remote Node [Peer] PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXX AllowedIPs = fc00:ff:1:abba::2 PersistentKeepalive = 25
Remote Node
- Debian 11
- OLSR von https://repos.freiesnetz.at/
- wireguard
- ifupdown2
/etc/network/interfaces
auto enp1s0 iface enp1s0 inet dhcp auto enp7s0 iface enp7s0 address 10.3.0.1/32 auto br0 iface br0 pre-up /usr/bin/ip link add br0 type bridge address 10.3.1.1/32 post-up /usr/bin/ip link set br0 mtu 1342 auto wg-olsr iface wg-olsr pre-up /usr/bin/ip link add wg-olsr type wireguard pre-up /usr/bin/wg setconf wg-olsr /etc/wireguard/wg-olsr.conf address fd00:00ff:0001:abba::2/64 post-up /usr/bin/ip link set wg-olsr mtu 1420 post-up /usr/bin/ip link add vxlan1 type vxlan id 1 remote fd00:00ff:0001:abba::1 dstport 4789 dev wg-olsr post-up /usr/bin/ip link set vxlan1 up post-up /usr/bin/ip link set vxlan1 mtu 1342 post-up /usr/bin/ip link set vxlan1 master br0
/etc/olsrd/olsrd.conf
Interface "enp7s0" { AutoDetectChanges yes LinkQualityMulti default 1.0 Weight 0 } Interface "br0" { AutoDetectChanges yes LinkQualityMulti default 1.0 Weight 0 }
/etc/wireguard/wg-olsr.conf
[Interface] ListenPort = 51820 PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX #tunnel server [Peer] Endpoint = tunnelserver:51820 PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX AllowedIPs = fd00:ff:1:abba::1 PersistentKeepalive = 25
Mikrotik
WireGuard und VXLAN laufen --> Docker OLSR
Was geht nicht:
- IPv6 VXLAN, Mikrotik support fehlt, Workaround ZeroConf Ipv4
# RouterOS 7.1.1 # model = RB960PGS /interface wireguard add listen-port=13231 mtu=1420 name=wg-olsr /interface vxlan add mtu=1342 name=vxlan-olsr port=4789 vni=2 /interface vxlan vteps add interface=vxlan-olsr remote-ip=169.254.0.1 /interface wireguard peers add allowed-address=169.254.0.1/32 endpoint-address=\ TUNNELIP endpoint-port=51820 interface=wg-olsr persistent-keepalive=\ 25s public-key="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=" /ip address add address=169.254.2.1/16 interface=wg-olsr network=169.254.0.0 /ip dhcp-client add interface=sfp1