Sperând că acesta este locul potrivit - inițial am postat pe Network Engineering, dar s-a închis și am fost indicat către Server Fault.
În prezent, încerc să configurez o punte L2 între două site-uri folosind VXLAN pentru a oferi conectivitate L2 și Wireguard ca transport/L3. Am făcut anterior un pod Layer 2 ca acesta folosind GRE peste Wireguard și a fost solid, dar acum încerc să înțeleg mai bine VXLAN și caut să înlocuiesc tunelul GRE cu VXLAN.
Am încercat să folosesc ambele informații Aici și Aici dar pentru viața mea nu pot face ca traficul să treacă peste IP-urile non-wireguard între site-uri.
Am două mașini Debian cu bridge-utils instalat. De asemenea, rulează nftables cu reguli pentru a renunța la tot traficul DHCP, deoarece atunci când am configurat pentru prima dată tunelul GRE, am ajuns să primesc mașinile IP-uri atribuite de la rețeaua de la distanță. Dar orice altceva este setat să permită și este expus doar extern prin portul Wireguard
Gazda A este configurată cu:
Wireguard wg0 - 172.30.100.1/24
Pod br0 - 10.0.0.160/24
Gazda B este configurată cu:
Wireguard wg0 - 172.30.100.2/24
Pod br0 - 10.1.0.160/24
The IP-uri permise
în configurațiile Wireguard este doar pentru subrețeaua Wireguard 172.30.100.0/24
. Aceasta a funcționat cu configurația GRE și aș presupune că va funcționa și cu VXLAN, deoarece traficul VXLAN este încapsulat în tunelul Wireguard.
Gazdele pot ping și ssh reciproc pe IP-urile lor Wireguard, astfel încât acel bit funcționează bine.
Ambele poduri au port ens18
, bridge-vlan-aware da
și bridge-vids 1-4096
în /etc/network/interfaces
Am un script bazat pe „Rețeta 2” de la primul link pe care l-am postat mai sus, adică un singur tunel cu mai multe VNI-uri. Ideea este că scriptul adaugă interfața VXLAN vx0
la br0
, care așteaptă până după wg0
este activ (folosind un serviciu systemd), apoi face bucle pentru a face maparea VLAN/VNI.
#!/bin/bash
# Obține adresa IP a interfeței Wireguard.
wgip=`ip a s wg0 | egrep -o 'inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3 }' | tăiați -d' '-f2`
link ip adăugați vx0 tip vxlan dstport 4789 extern local $wgip dev wg0 # creează vxlan cu wg0 IP ca local
#Iată unde s-ar putea să greșesc, dar am încercat diverse combinații ^^^
somn 1
ip link set dev vx0 master br0 # Adaugă vxlan la bridge
bridge link set dev vx0 vlan_tunnel on # Activează tunelul vlan pe vxlan
# Mapează fiecare VLAN la VNI-uri din tunel.
pentru vlan in 10 20 30; do
bridge vlan add vid $vlan dev vx0
bridge vlan add vid $vlan dev ens18
bridge vlan add dev vx0 vid $vlan tunnel_info id $vlan
# Crezi că pot elimina linia de mai jos dacă trec la BGP-EVPN pentru a învăța mai târziu?
bridge fdb append 00:00:00:00:00:00 dev vx0 vni $vlan dst 10.1.0.160
Terminat
linkul ip setați dev vx0
S-ar putea să fiu complet pe drumul greșit aici, dar dacă există ceva care arată în mod neregulat în cele de mai sus, orice îndrumare în direcția corectă ar fi foarte apreciată!
(S-ar putea chiar să fie doar de la rutare, mai degrabă decât de configurare. Configurația Wireguard este setată la Table=off, ceea ce am făcut în configurația GRE/WG)
ACTUALIZAȚI
Arata ca extern
steag în vx0
linia de configurare provoacă drame.
Dacă îl schimb în cele de mai jos și, de asemenea, schimb intrarea FDB statică la telecomandă wg0
IP mai degrabă decât telecomanda ens18
IP, pot da ping de la gazdă la gazdă:
link ip adăugați vx0 tip vxlan dstport 4789 vni 1000 local $wgip dev wg0
Apoi, se pare că traficul neetichetat trece prin VNI 1000, iar VID-urile 10, 20 și 30 sunt mapate la VNI-urile lor respective.
Ce face extern
flag, asta ar împiedica configurația originală să funcționeze? Este lipsa cartografierii explicite a VID 1?