Freifunk-Gateway aufsetzen/VPN/vxlan

Aus Freifunk Franken
Version vom 7. August 2020, 02:11 Uhr von Rola (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „==vxlan vpn auf dem Gateway einrichten == als erstes die vxlan interfaces in /etc/network/interfaces../... anlegen: <pre> auto vxbat0 iface vxbat0 inet manual…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

vxlan vpn auf dem Gateway einrichten

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 2a01:4f8:1c0c:70c4::2
pre-up ip l s dev $IFACE mtu 1422
post-up batctl -m 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

Jetzt braucht man noch das vxmon.sh Skript von hier(Link fehlt noch!!!!)

#!/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

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"

Batman

Um vxlan zu bevorzugen müssen wir noch was mit batman machen. (kommt noch)