Freifunk-Gateway aufsetzen/VPN/vxlan: Unterschied zwischen den Versionen
Rola (Diskussion | Beiträge) (→vxlan) |
Rola (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Funktion == | == Funktion == | ||
Layer2 Tunnel zwischen node und Gateway. | |||
== Installation == | == Installation == | ||
Zeile 17: | Zeile 14: | ||
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 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 | post-up batctl meshif bat0 if add $IFACE | ||
pre-down batctl -m bat0 if del $IFACE | pre-down batctl -m bat0 if del $IFACE | ||
Zeile 31: | Zeile 28: | ||
'''id = hoodid''' | '''id = hoodid''' | ||
Jetzt braucht man noch das vxmon.sh Skript | Jetzt braucht man noch das vxmon.sh Skript | ||
Nach /usr/local/sbin/vxmon.sh | Nach /usr/local/sbin/vxmon.sh | ||
Zeile 127: | Zeile 123: | ||
</pre> | </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 18. August 2024, 22:20 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
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
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" }