Freifunk-Gateway aufsetzen/VPN/vxlan

Aus Freifunk Franken
Wechseln zu:Navigation, Suche
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

VPN via vxlan befindet sich noch in der Testphase. Es ist mit der aktuellen Firmware verfügbar

Funktion

Layer2 Tunnel zwischen node und Gateway.

Installation

Keine weitere Installaton notwendig.

Konfiguation

vxlan

Als erstes die vxlan interfaces in /etc/network/interfaces../... anlegen:

auto vxbat0
iface vxbat0 inet manual
pre-up ip l a dev $IFACE type vxlan id 7 dstport 8472 srcport 8472 8473 local ipv6:vom:gate:way
pre-up ip l s dev $IFACE mtu 1422
post-up batctl meshif bat0 if add $IFACE

pre-down batctl -m bat0 if del $IFACE
post-down ip l d dev $IFACE

auto vxbat1
iface vxbat1 inet manual
.... usw.

Achtung! port ist immer 8472. Nur id, local und die Interfaces anpassen.

id = hoodid

Jetzt braucht man noch das vxmon.sh Skript von hier: https://gist.github.com/lemmi/efec483cb3c0dcfb8162bd016c48f61b

Nach /usr/local/sbin/vxmon.sh

Variable DEVS ändern!! DEVS=$@

#!/bin/bash

DEVS=$@

handle_add() {
        mac="${1:?}"
        dev="${2:?}"
        dst="${3:?}"

        echo "bridge fdb append 00:00:00:00:00:00 dst $dst dev $dev"
        bridge fdb append 00:00:00:00:00:00 dst "$dst" dev "$dev"
}

handle_cleanup() {
        mac="${1:?}"
        dev="${2:?}"
        dst="${3:?}"

        if ! bridge fdb show dev "$dev" | grep -v 00:00:00:00:00:00 | grep "$dst"; then
                bridge fdb del 00:00:00:00:00:00 dst "$dst" dev "$dev"
        fi
}

handle_entry() {
        cmd=handle_add

        if [ "$1" = "Deleted" ]; then
                shift
                cmd=handle_cleanup
        fi

        mac="${1:?}"
        dev="${3:?}"

        grep -w "$dev" <<<"$DEVS" || return

        if [ "$mac" = "00:00:00:00:00:00" ]; then
                echo "skipping" "$@"
                return
        fi

        $cmd "$mac" "$3" "$5"
}


bridge monitor fdb | while read args; do
        handle_entry $args
done

Zum Starten des Skriptes kann man sich eine unit anlegen:

# cat /etc/systemd/system/vxmon.service 
[Unit]
Description=vxlan monitoring to add peers
Before=networking.service

[Service]
Type=simple
EnvironmentFile=/etc/default/vxmon
ExecStart=/usr/local/sbin/vxmon.sh $INTERFACES
Restart=on-abort

[Install]
WantedBy=multi-user.target

Unit enablen -> systemctl enable vxmon

Wie man sieht, können jetzt die Interfaces in /etc/default/vxmon eingetragen werden:

# cat /etc/default/vxmon 
# Hier alle vxlan interfaces eintragen. z.B
# INTERFACES="vxbat0 vxbat2"

vxmon starten -> sysemctl start vxmon

vxlan bevorzugen

Mit einem neuern batman-adv (batman-adv: 2020.3) kann man eine hop_penalty pro hardif einstellen. Default ist 30 per hop. Wenn wir für fastd eine hop_penalty von 30 einstellen, wird fastd einen hop teurer.

/etc/fastd/fff-xxx/up.sh

#!/bin/bash
ip l s dev $INTERFACE up
batctl meshif bat0 if add $INTERFACE
batctl hardif $INTERFACE hp 30

Jetzt noch dieses vxlan-peer im Keyserver für diese Hood eintragen.

Testen

Die hoods Schweinfurt, Hassfurt, Ebern, Coburg, Gerolzhofen können zum Testen verwendet werden. Zum Testen http://rl-fff1.fff.community/v2/ als keyserver eintragen. Man findet den Eintrag in der Datei

/usr/lib/functions/fff/hoodfile