Freifunk-Gateway aufsetzen/VPN/vxlan: Unterschied zwischen den Versionen

Aus Freifunk Franken
Wechseln zu:Navigation, Suche
K (Rola verschob die Seite Vxlan-vpn nach Freifunk-Gateway aufsetzen/VPN/vxlan)
 
(30 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==vxlan vpn auf dem Gateway einrichten ==
== Funktion ==
als erstes die vxlan interfaces in /etc/network/interfaces../... anlegen:
Layer2 Tunnel zwischen node und Gateway.
 
== Installation ==
Keine weitere Installaton notwendig.
 
== Konfiguation ==
 
===vxlan===
Als erstes die vxlan interfaces in /etc/network/interfaces../... anlegen:
<pre>
<pre>
auto vxbat0
auto vxbat0
iface vxbat0 inet manual
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 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
pre-up ip l s dev $IFACE mtu 1422
post-up batctl -m bat0 if add $IFACE
post-up batctl meshif bat0 if add $IFACE


pre-down batctl -m bat0 if del $IFACE
pre-down batctl -m bat0 if del $IFACE
post-down ip l d dev $IFACE
post-down ip l d dev $IFACE
 
###
auto vxbat1
auto vxbat1
iface vxbat1 inet manual
iface vxbat1 inet manual
Zeile 16: Zeile 24:
</pre>
</pre>


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


Jetzt braucht man noch das vxmon.sh Skript von hier:
'''id = hoodid'''
https://gist.github.com/lemmi/efec483cb3c0dcfb8162bd016c48f61b
 
Jetzt braucht man noch das vxmon.sh Skript
 
Nach /usr/local/sbin/vxmon.sh


<pre>
<pre>
Zeile 71: Zeile 82:
done
done
</pre>
</pre>
Executable Bit setzen: <pre>chmod 755 /usr/local/sbin/vxmon.sh</pre>


Zum Starten des Skriptes kann man sich eine unit anlegen:  
Zum Starten des Skriptes kann man sich eine unit anlegen:  
<pre>
<pre>
# cat /etc/systemd/system/vxmon.service  
# /etc/systemd/system/vxmon.service  
[Unit]
[Unit]
Description=vxlan monitoring to add peers
Description=vxlan monitoring to add peers
Zeile 88: Zeile 101:
WantedBy=multi-user.target
WantedBy=multi-user.target
</pre>
</pre>
Unit enablen -> systemctl enable vxmon


Wie man sieht, können jetzt die Interfaces in /etc/default/vxmon eingetragen werden:
Wie man sieht, können jetzt die Interfaces in /etc/default/vxmon eingetragen werden:
<pre># cat /etc/default/vxmon  
<pre># /etc/default/vxmon  
# Hier alle vxlan interfaces eintragen. z.B
# Hier alle vxlan interfaces eintragen. z.B
# INTERFACES="vxbat0 vxbat2"
# INTERFACES="vxbat0 vxbat2"
</pre>
</pre>


===Batman===
vxmon starten -> sysemctl start vxmon
Um vxlan zu bevorzugen müssen wir noch was mit batman machen. (kommt noch)
 
===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.
Irgendwo findet man die Zeile, in der das Interface in das bat-device gehängt wird. Ev. in /etc/network/interfaces.... oder hier:
 
<pre>
# /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
</pre>
 
===Eintrag im keyserver===
 
Änderungen am keyserver werden als pullrequest in diesem git gemacht:
https://git.freifunk-franken.de/freifunk-franken/hoods
 
'''Neuer VPN-Eintrag'''
 
'''
        {
            "name": "my_gateway",
            "protocol": "vxlan",
            "address": "url.from.gateway",
            "contact": "mailaddress"
        }
'''

Aktuelle Version vom 22. November 2024, 22:42 Uhr

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

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

Executable Bit setzen:

chmod 755 /usr/local/sbin/vxmon.sh

Zum Starten des Skriptes kann man sich eine unit anlegen:

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

# /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. Irgendwo findet man die Zeile, in der das Interface in das bat-device gehängt wird. Ev. in /etc/network/interfaces.... oder hier:

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

Eintrag im keyserver

Änderungen am keyserver werden als pullrequest in diesem git gemacht: https://git.freifunk-franken.de/freifunk-franken/hoods

Neuer VPN-Eintrag

       {
           "name": "my_gateway",
           "protocol": "vxlan",
           "address": "url.from.gateway",
           "contact": "mailaddress"
       }