Freifunk-Gateway aufsetzen/VPN/vxlan

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

Achtung!! VPN via vxlan befindet sich in Etwicklung. Es ist nicht mit der aktuellen Firmware verfügbar

vxlan ist im masterbranch.

Funktion

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 -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.

id = hoodid

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

Nach /usr/local/sbin/vxmon.sh

#!/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 KeyXchange für diese Hood eintragen.