Επέκταση ενός VLAN ανάμεσα σε sites με WireGuard και VXLAN
Πώς επεκτείνετε ένα τμήμα Layer 2 ανάμεσα σε δύο τοποθεσίες με WireGuard και VXLAN σε Linux: η αριθμητική του MTU, η διάταξη των bridges, η προστασία από loops και η σειρά μεταφοράς.

Το πιο ακριβό κομμάτι της αλλαγής παρόχου σπάνια είναι οι servers. Είναι οι διευθύνσεις: κάθε εγγραφή DNS, κανόνας firewall, κλειδί άδειας και λίστα επιτρεπόμενων συνεργάτη που έχει γραμμένες μέσα της τις IP σας. Αν το ίδιο VLAN μπορεί να υπάρχει και στα δύο μέρη όσο μετακινείστε, τίποτα από αυτά δεν χρειάζεται να αλλάξει. Να πώς χτίζεται μια επέκταση Layer 2 από απλά κομμάτια Linux, και τι πρέπει να κάνετε σωστά πριν εμπιστευτείτε πάνω της κίνηση παραγωγής.
Γιατί να επεκτείνετε καν
Η αλλαγή διευθύνσεων επιβάλλει ένα cutover τύπου big bang: όλα μετακινούνται μία νύχτα, ή τίποτα. Ένα επεκταμένο VLAN το μετατρέπει σε πολλά μικρά βήματα. Ένας server που έχει ήδη μετακινηθεί και ένας που δεν έχει ακόμα μοιράζονται subnet και gateway, οπότε μπορείτε να μετακινήσετε έναν host, να τον δοκιμάσετε στο νέο του σπίτι, και να τον γυρίσετε πίσω αν κάτι πάει στραβά. Το κόστος είναι ένα προσωρινό tunnel. Το όφελος είναι εβδομάδες αλλαγής διευθύνσεων και μια νύχτα cutover χωρίς επιστροφή.
Η συνηθισμένη ένσταση είναι ότι το Layer 2 ανάμεσα σε sites είναι εύθραυστο. Είναι, αν χτιστεί ως επίπεδο bridge πάνω από το internet. Χτισμένο ως κρυπτογραφημένο overlay ανά VLAN που προσγειώνεται σε ένα σωστό fabric, είναι ένα πειθαρχημένο εργαλείο μεταφοράς.
Τα δομικά στοιχεία
Τέσσερα κομμάτια, όλα στον mainline Linux kernel:
- WireGuard για την κρυπτογραφημένη διαδρομή σημείο προς σημείο ανάμεσα στα δύο endpoints. Είναι μικρό, γρήγορο και δεν έχει σχεδόν τίποτα να ρυθμίσετε λάθος.
- VXLAN πάνω από το WireGuard, ένα VXLAN interface ανά επεκταμένο VLAN, ώστε κάθε τμήμα να μένει ξεχωριστό μέσα στο tunnel.
- Ένα Linux bridge ανά VLAN, που ενώνει το VXLAN interface με το τοπικό VLAN.
- Ένα VLAN sub-interface στο trunk του endpoint προς το τοπικό switch.
Σε κάθε endpoint, για ένα VLAN, το σχήμα είναι:
# encrypted underlay
ip link add wg0 type wireguard
wg setconf wg0 /etc/wireguard/wg0.conf
ip address add 10.255.0.1/30 dev wg0
ip link set wg0 up
# one VXLAN per stretched VLAN, unicast to the far end over the tunnel
ip link add vx210 type vxlan id 210 local 10.255.0.1 remote 10.255.0.2 dstport 4789
ip link add br210 type bridge
ip link add link eth1 name eth1.210 type vlan id 210
ip link set vx210 master br210
ip link set eth1.210 master br210
ip link set vx210 up; ip link set eth1.210 up; ip link set br210 up
Κάντε το μόνιμο με NetworkManager ή systemd-networkd μόλις δουλέψει. Η μορφή εντολών είναι ο καθαρότερος τρόπος να δείτε τα επίπεδα.
Κάντε πρώτα σωστά το MTU
Σχεδόν κάθε πρόβλημα «κάνει ping αλλά η εφαρμογή κολλάει» σε επεκταμένο VLAN είναι MTU. Κάθε επίπεδο προσθέτει επιβάρυνση:
- Το WireGuard προσθέτει 60 bytes πάνω από IPv4 (80 πάνω από IPv6).
- Το VXLAN προσθέτει 50 bytes (εξωτερικό Ethernet, IP, UDP και η κεφαλίδα VXLAN).
Με μια τυπική διαδρομή 1500 bytes ανάμεσα στα sites, ένα πλήρες frame 1500 bytes από έναν server δεν χωράει. Έχετε δύο τίμιες επιλογές: να ανεβάσετε το MTU της διαδρομής underlay (αν η διαδρομή οπτικής ίνας και τα δύο άκρα υποστηρίζουν jumbo frames, αυτή είναι η καθαρή απάντηση), ή να κατεβάσετε το MTU στο επεκταμένο τμήμα για όσο διαρκεί η μεταφορά. Αυτό που δεν πρέπει να κάνετε είναι να ελπίζετε ότι ο κατακερματισμός θα τα βολέψει. Δοκιμάστε με pings don't-fragment στο μέγεθος που περιμένετε:
ping -M do -s 1472 <host-on-far-side>
Κρατήστε ανέπαφη την προστασία από loops
Ένα επεκταμένο VLAN ενώνει δύο Layer 2 domains, και η δελεαστική λύση για τα παράπονα του spanning tree είναι να κλείσετε το spanning tree στη θύρα. Μην το κάνετε. Φιλτράρετε BPDUs μόνο εκεί που συνδέεται το endpoint της επέκτασης, ώστε οι δύο πλευρές να μη συγχωνεύσουν τα spanning tree domains τους, ενώ κάθε άλλη θύρα κρατά πλήρη προστασία από loops. Και ποτέ μη χτίσετε δύο παράλληλες επεκτάσεις για το ίδιο VLAN εκτός αν κάτι εμποδίζει ρητά να είναι και οι δύο ενεργές ταυτόχρονα.
Προσγειώστε το σε πραγματικό fabric
Στην πλευρά που λαμβάνει, το trunk του endpoint πρέπει να προσγειώνεται σε μια συνηθισμένη θύρα switch του fabric, ώστε το επεκταμένο VLAN να γίνεται κανονικό τμήμα: ίδιο gateway, ίδιο dual-homing, ίδια παρακολούθηση με κάθε εγγενές. Αν οι αριθμοί VLAN σας συγκρούονται με αριθμούς που ήδη χρησιμοποιούνται στον προορισμό, αντιστοιχίστε τους σε ελεύθερο εύρος κατά την είσοδο και κρατήστε γραπτό πίνακα της αντιστοίχισης. Σε ένα fabric EVPN, παραγάγετε το αναγνωριστικό του τμήματος από τον τοπικό αριθμό του προορισμού, ποτέ από της πηγής, ώστε ο κανόνας αρίθμησης του ίδιου του fabric να εξακολουθεί να ισχύει.
Σχεδιάστε για το throughput
Κρυπτογράφηση συν ενθυλάκωση είναι δουλειά CPU, και ένα μεμονωμένο tunnel σε ένα δεδομένο endpoint έχει οροφή throughput που ορίζεται από αυτή τη δουλειά. Είναι υπεραρκετή για τις περισσότερες μεταφορές, αλλά είναι πραγματική οροφή. Μετρήστε την στο hardware του endpoint σας πριν από τη μεταφορά με iperf3 μέσα από το tunnel, καρφώστε τα interrupts και τη δουλειά του tunnel σε έναν αποκλειστικό πυρήνα, και αποφασίστε εκ των προτέρων σε ποιο φορτίο προσθέτετε δεύτερο tunnel σε δεύτερο πυρήνα και μοιράζετε τα VLANs ανάμεσά τους.
Μια σειρά μεταφοράς που δουλεύει
- Χτίστε την επέκταση και δοκιμάστε τη με έναν αναλώσιμο host σε κάθε πλευρά.
- Επαληθεύστε το MTU από άκρη σε άκρη σε πλήρες μέγεθος frame.
- Μετακινήστε πρώτα έναν server χαμηλού ρίσκου. Ελέγξτε προσβασιμότητα gateway, DNS, παρακολούθηση και backups από το νέο του σπίτι.
- Μετακινήστε τους υπόλοιπους σε παρτίδες που ταιριάζουν με τις εξαρτήσεις της εφαρμογής σας (replicas βάσεων δεδομένων πριν από τα primaries, workers πριν από τα front ends).
- Μετακινήστε το gateway τελευταίο, όταν η περισσότερη κίνηση είναι πλέον τοπική στη νέα πλευρά.
- Αφαιρέστε την επέκταση μόνο όταν τίποτα στην παλιά πλευρά δεν απαντά πια στο τμήμα.
Πριν ξεκινήσετε, ελέγξτε
- Είναι το tunnel κρυπτογραφημένο από άκρη σε άκρη, όχι απλώς «σε ιδιωτική γραμμή»;
- Ξέρετε την οροφή MTU της διαδρομής, μετρημένη, όχι υποτιθέμενη;
- Είναι το φιλτράρισμα BPDU περιορισμένο στις θύρες της επέκτασης;
- Υπάρχει γραπτός πίνακας αντιστοίχισης VLAN;
- Έχετε μετρημένη οροφή throughput και σχέδιο για όταν την ξεπεράσετε;
Χτίζουμε τέτοιες επεκτάσεις ανάμεσα στα δικά μας sites και από οποιαδήποτε τοποθεσία μπορούμε να φτάσουμε με οπτική ίνα, ώστε οι πελάτες να έρχονται σε εμάς χωρίς αλλαγή διευθύνσεων. Αν σχεδιάζετε μια μεταφορά και θέλετε οι διευθύνσεις να μείνουν ως έχουν, ευχαρίστως να τη σχεδιάσουμε μαζί σας.
Σχετικά: Μεταφορά σε εμάς χωρίς αλλαγή διευθύνσεων: επέκταση Layer 2 · Fabric του datacenter: EVPN/VXLAN σε Cisco Nexus · Κρυπτογραφημένο backbone πολλών sites: το DMVPN mesh
Δημοσιεύθηκε 1 Σεπτεμβρίου 2026.
Όλες οι σημειώσεις