IPv6 tëschent zwou Standorte iwwer eng bestoend VPN leeden
En WAN mat nëmmen IPv4 kann nach ëmmer bannenzeg IPv6 droen. Folleg d’Selektoren, d’Kernelrouten, d’Weiderleedung an de Retourprefix, dee Äntwerten stëll fale léisst.
Wann Dir engem Site-zu-Site-Tunnel e IPv6-Prefix bäifüügt, reest de Pak net sou wéi den Diagramm et suggeréiert. D’lokal Gateway hëlt de ganzen IPv6-Pak, verschlësselt en a setzt e baussenzege IP-Header virun, deem seng Adressfamill vun den Endpunktadressen entscheet gëtt, net vun deem wat bannen ass. D’wäit Gateway sträift dee baussenzege Header of a leet de originelle Pak op seng LAN weider, wou en nees en normale IPv6-Pak ass. Baussenzegen Tunnel a bannenzegen Traffic sinn zwee getrennte Gespréich, déi en Schlëssel, en Endpunktpaar an näischt anescht deelen.
Zwee Headeren, zwou Adressfamillen
Am IPsec-Tunnelmodus gëtt de bannenzegen IPv6-Pak d’Ladung hannert engem ESP-Header. De baussenzege Header, deen dee ESP-Pak dréit, ka IPv4 oder IPv6 sinn, an hie follegt local_addrs an remote_addrs. WireGuard mécht datselwecht mat manner Zeremonie: de bannenzegen Pak ass d’Ladung vun engem UDP-Datagramm zum Endpunkt vum Peer. Béid loossen de bannenzegen Header onberéiert, an dofir kann déi aner Säit en no der Dekapsulatioun leeden.
De Wee tëschent de Standorte gesäit nëmmen UDP 4500, wann IPsec NAT-Traversal benotzt, oder UDP 51820 fir e Standard-WireGuard-Lauschterer. All Router ënnerwee kann nëmmen IPv4 sinn an den IPv6-Traffic geet nach ëmmer duerch, well en op deem Wee ni als IPv6-Pak erschéngt. Dat gëtt eng propper éischt Trennung: tcpdump -ni eth0 udp port 51820 weist de verschlësselten Wee, tcpdump -ni wg0 ip6 weist de bannenzegen Traffic. Eng bëlleg baussenzeg Opnam mat enger stëller bannenzeg heescht, datt de Kernel keen IPv6 an den Tunnel leet; dat ass Routing oder Politik, net Linkzoustand.
D’Gateway dekrementéiert och de bannenzegen Hop Limit beim Weiderleeden, sou datt d’Endpunkten als Router um IPv6-Wee zielen. Baussenzeg Hopzuel a bannenzegen Hop Limit beweegen sech onofhängeg, an e Pak, deen um wäite Gateway stierft, ass an der Weiderleedung gestuerwen, net an der Verschlësselung.
D’Selektoren an AllowedIPs sinn d’Bemächtegungslescht
IKEv2 verhandelt, wéi eng bannenzeg Prefixen eng child-SA droe kann. Op strongSwan 5.9 a méi spéit gesäit et esou aus, wann een se an swanctl.conf ausschreift:
children {
net6 {
local_ts = 2001:db8:aa::/48
remote_ts = 2001:db8:bb::/48
mode = tunnel
esp_proposals = aes256gcm16-prfsha384-ecp384
start_action = trap
}
}
Loosse local_ts an remote_ts ewech an strongSwan leet se aus den Subnetzer vum Interface of, deen et wielt. Op engem Dual-Stack-Host ergëtt dee Schrëtt dacks e Paar mat nëmmen IPv4: d’SA kënnt erop an IPv6 gëtt refuséiert, ier et den ESP-Code erreecht. Béid Prefixen ausschreiwen mécht d’SA fäeg, se ze droen, an start_action = trap bréngt se beim éischte passende Pak erop.
WireGuard huet eng eenzeg Lëscht mat zwou Aufgabe. Am Peer-Block ass AllowedIPs = 2001:db8:bb::/48, fd00:bb::/48 souwuel d’Route, déi beim Senden installéiert gëtt, wéi och de Filter, deen beim Empfank ugewannt gëtt: e entschlësselte Pak, deem seng bannenzeg Quell baussent der Lëscht vun deem Peer fällt, gëtt stëll vergeworf. wg-quick setzt eng Route pro Andro fir, dofir brauch de Peer-Block hei drënner keen eegene ip -6 route-Befehl.
[Interface]
Address = 2001:db8:aa:ff::1/64, fd00:aa:ff::1/64
ListenPort = 51820
[Peer]
PublicKey = <site-b-public-key>
Endpoint = 203.0.113.20:51820
AllowedIPs = 2001:db8:bb::/48, fd00:bb::/48
Béid Lëschten mussen gespigelt sinn: Standort B akzeptéiert de Prefix vum Standort A als wäite Selektor a leet en zréck, an den Tunnel fonctionéiert nëmmen, wann déi zwou Richtungen iwwerenee stëmmen. Eng asymmetresch Lëscht gëtt d’Symptom, dat am meeschten Zäit kascht — en gesonden Handshake, Zähler, déi op enger Säit lafen, an e Ping vun A op B, deen geléngt, während näischt vun B den A erreecht.
Weiderleedung, Routen an de Retourprefix
Linux leet IPv6 net weider, bis Dir et him sot, an d’Astellung gëllt pro Namespace an net pro Interface:
sysctl -w net.ipv6.conf.all.forwarding=1
ip -6 route add 2001:db8:bb::/48 dev wg0
ip -6 route get 2001:db8:bb::10 from 2001:db8:aa::10
Déi zweet Linn ass déi, déi een a routebaséierten Designen vergësst. Politikbaséiert IPsec installéiert eng XFRM-Politik, déi op d’Prefixen passt, awer eng routebaséiert Opstellung mat vti6 oder WireGuard brauch eng richteg IPv6-Route, déi op dat Gerät weist. Maacht de sysctl ënner /etc/sysctl.d/ dauerhaft; soss setzt e Neistart d’Weiderleedung stëll nees op aus.
D’Weiderleedung huet en Nieweeffekt, deen et wäert ass ze wëssen: de Kernel ignoréiert dann Router Advertisements, ausser net.ipv6.conf.<wan>.accept_ra ass 2, sou datt eng Gateway, där hir WAN-Adress iwwer SLAAC ukomm, hir Standardroute verléiere kann, soubal Dir d’Weiderleedung aktivéiert. Setzt accept_ra = 2 op deem Interface an der selwechter Datei an d’Route iwwerlieft. De Kär vu Standort B muss och 2001:db8:aa::/48 vun der Tunnelgateway léieren, duerch eng statesch Route oder e Routingprotokoll iwwer den Tunnel, soss stierft d’Äntwert bannen an B sengem eegene Netz.
Eng Véier-Schrëtt-Kontroll, déi de Broch lokaliséiert
Schafft an dëser Reihenfolg a stoppt beim éischte Schrëtt, deen feelt, well all weideren Schrëtt vun de viregen ofhänkt.
- Selektoren:
swanctl --list-sassollt d’IPv6-Prefixpaar op der child-SA weisen, oderwg show wg0 allowed-ipsde wäite Prefix mat engem rezentenlatest-handshakes. - Kernelroute:
ip -6 route get 2001:db8:bb::10muss mam Tunnelgerät äntweren, net mat der WAN-Interface. - Bannenzeg Opnam:
tcpdump -ni wg0 ip6während Dir tëschent echte LAN-Hoste pingt. Paken, déi erausgoen, awer keng déi zréckkommen, weisen op d’Route oder d’Firewall vu B; guer keng Pake weisen zréck op Schrëtt 1 oder 2. - Destinatioun: um B-Host bestätegt
ss -6 -ltn, datt den Déngscht op IPv6 lauschtert, an d’lokal Firewall-Zähler weisen, ob de Pak akzeptéiert oder verworfen gouf.
D’MTU gehéiert an déi selwecht Passage. IPv6-Router fragmentéieren net, dofir gëtt en iwwergrousse Pak verworfen an Packet Too Big kënnt zréck zum Sender. Wann Handshakes a kleng Pings fonctionéieren, awer en Dateitransfer stockt, verklengert d’Ladung, bis en duerchkënnt: ping -6 -s 1400 -c 3 2001:db8:bb::10. WireGuard-Interfaceen hunn standardméisseg 1420 Bytes MTU an IPsec iwwer IPv4 zitt méi of, dofir ass d’bannenzeg MTU ze setzen besser wéi op Path-MTU-Entdeckung duerch eng Firewall ze hoffen, déi ICMPv6 verwerft.
Feelmodi, déi wéi Firewallproblemer ausgesinn
Dee meeschten ass guer keng Firewall: den Déngscht bindet un 0.0.0.0 amplaz ::, den AAAA-Record existéiert, an de Client kritt eng séier Refus iwwer IPv6, déi en Dual-Stack-Browser verstoppt, andeem en op IPv4 zréckfällt. Wann nëmmen e puer Applikatiounen feelen, kontrolléiert d’lauschterend Famill, ier Dir eng Reegelsammlung ufaasst.
Den zweete ass ICMPv6-Filterung. Neighbor Discovery a Packet Too Big gehéieren zum normale Betrib, net zur Diagnostik, an eng Politik, déi all ICMPv6 verwerft, produzéiert en Tunnel, dee sech verbënnt, sech authentifizéiert an dann op allem stockt, wat méi grouss ass wéi e klengen Pak. Erlaabt d’Typen, vun deenen de Wee ofhänkt, a loosst d’Zähler un, sou datt e Verwerf sichtbar ass.
Den drëtten ass e Prefix, deen an den Tunnel bäigesat gëtt, awer ni an den Adressplang vum Standort, deen en besëtzt, sou datt keen Router en ugekënnegt an keen Host vun do aus äntwere kann. Fänkt mat engem Prefix an engem Hostpaar un, beweist déi zwou Richtungen mat de véier Schrëtt a füügt duerno de Rescht bäi; e kaputte Prefix bleift eng Linn an enger Konfiguratioun amplaz vun enger Ëmgestaltung. Déi eenzeg offiziell Referenz, déi et wäert ass opzemaachen, ass RFC 8200, déi den Header definéiert, deen den Tunnel dréit.