IPv6-Policy-Routing wann zwou Uplinks fe80::1 deelen
Zwou Uplinks kënnen deeselwechten nächsten Hop fe80::1 op verschiddenen Links weisen. Wielt eng Tabell pro Policy, administréiert d'Liewensdauer a verifizéiert mat enger Route-Enquête.
Du hues zwou Uplinks, an ip -6 route show weist deeselwechten nächsten Hop op béiden: default via fe80::1 dev uplink0 an default via fe80::1 dev uplink1. Dat ass kee Konflikt mat duebelen Adressen, an de bloeßen nächsten Hop fe80::1 an eng Policy-Tabell ze kopéieren, seet dem Kernel net, wéi en Link du gemengt hues. Déi richteg Fro ass enger wéi d'Symptom et suggeréiert: brauch déi zweet Tabell ee Link oder béid, a wat hält déi Routen no engem Neistart lieweg. Dräi Konditiounen, der Rei no gepréift, entscheeden dat meescht.
Deeselwechte fe80::1 sinn zwou verschidde Nopere
Link-local-Adressen sinn op een eenzege Link beschränkt, also fe80::1 ass net eng Adress, déi zweemol gedréckt gëtt; et sinn zwou Nopere mat zoufälleg deemselwechte Suffix. Den Zone-Index ass wéi en Host seet, wéi eng hien mengt, also fe80::1%uplink0 an fe80::1%uplink1 sinn verschidde Bestëmmunge fir de Kernel, an dee Suffix reest ni op en externe Router. RFC 4007 beschreift de Zone-Modell heihannert, an dofir muss eng Policy-Tabell bei all link-local nächsten Hop en Apparat matdroen.
E VPN-Konfiguratiounsgenerator, deen eng numeresch Zone-ID vun engem Host an eng Schabloun kopéiert, behandelt lokal Kontext wéi wann en Deel vun der Adress wier, an d'Datei, déi hie schreift, ass falsch op all Maschinn, där hire Interface-Nimm oder Indizen sech ënnerscheeden. Eng Policy-Tabell fusionéiert och net zwee Links zu engem: eng geroutete VPN gëtt Paketen tëscht Netzwierker weider, awer se dréit d'link-local-Identitéit vun engem externe Ethernet-Noper net duerch den Tunnel, sou datt link-local-Verkeier op sengem eegene Link bleift.
Entfern den Apparat an d'Route gëtt onschreifbar. ip -6 route add default via fe80::1 table 200 kann de Gateway net opléisen, an iproute2 refuséiert et mat Error: Nexthop has invalid gateway. Füüg dev uplink0 derbäi an de Kommando geléngt, well den Apparat den nächsten Hop un eng vun deenen zwou Nopere festhält. Wat den Apparat dir net soe kann, ass ob uplink0 de richtege Link fir dës Tabell ass, an eng Route, déi vun engem aneren Host kopéiert gouf, bréngt d'Interface-Nimm vun deem Host mat, an dohier kommen déi richteg Feeler.
Konditioun eent: ee Link oder zwee an der Tabell
Fänk domat un, fir wat den zweeten Uplink do ass. Wann béid Links dee selwechte Verkeier droen an een en Standby ass, soll déi alternativ Tabell béid Gateways mat ënnerschiddleche Metriken halen: déiselwecht Bestëmmungen, ee bevorzugte Wee, eng evident zweet Wiel. Wann d'Uplinks existéieren, well verschiddene Verkeier iwwer verschidde Provider muss eraus, oder well dëst en Split Tunnel ass, bei deem en Deel vum Verkeier d'VPN ëmgeet, während de Rescht banne bleift, gehéieren déi zwou Links guer net an eng Tabell. Si gehéieren an zwou Tabellen, gewielt duerch eng Regel, an d'Regel wielt d'Tabell, net den Tunnel: Verkeier, deen ëmgeet, gëtt markéiert ier en geroutet gëtt, an d'Markéierung ass et, wat en an déi zweet Tabell schéckt.
An deem zweeten Fall entscheet d'Regel, wéini eng Tabell consultéiert gëtt, an d'Route entscheet, wou de Paket hiegeet, soubal dat geschitt:
ip -6 rule add fwmark 0x2 table 201
ip -6 route add default via fe80::1 dev uplink1 metric 100 table 201
ip -6 route add 2001:db8:100::/48 dev uplink1 metric 100 table 201
ip -6 route show table 201Keen vun den zwee Objeten ersetzt deen aneren, an eng Tabell mat nëmmen enger Default kann nach ëmmer de Gateway net opléisen. Wann en Add refuséiert gëtt, oder d'Route existéiert awer ass onbrauchbar, setz de connected Prefix fir deen Interface an déiselwecht Tabell, oder markéier den Hop onlink wann dee Prefix soss aneschters geroutet gëtt. Am Block hei uewen steet 2001:db8:100::/48 fir dee connected Prefix op uplink1, net fir eng arbiträr Bestëmmung. D'fwmark-Regel verbraucht nëmmen eng Markéierung, déi eppes anescht muss setzen, aus enger nftables- oder iptables-Regel um Weederleeungspad oder aus SO_MARK um Socket, also en Block, dee ouni Markéierungsquell kopéiert gouf, passt op näischt.
Konditioun zwee: Metriken entdecken keen doudege Provider
Eng Metrik ass eng Preferenz tëscht Routen, déi existéieren, keen Gesondheetscheck. Wann den Träger fällt, entfernt de Kernel d'Routen op deem Apparat an den zweeten Default iwwerhëlt. Wann de Kabel leie bleift an de Provider dohannert stierft, ännert sech näischt an der Tabell: déi bevorzugt Route ass installéiert, den Noper ass op Layer 2 erreechbar, an d'Paketen verschwannen an en schwaarzt Lach. Wann deen Ënnerscheed fir däin Opbau wichteg ass, muss Failover vun eppes kommen, wat de Wee sondéiert an d'Route entfernt, sief et en Routing-Daemon oder e klengt Skript, dat den Entrée läscht an nei installéiert.
Verifizéier d'Wiel nodeems d'Tabell gebaut ass, a verifizéier se sou wéi de Kernel se gesi wäert. ip -6 route get 2001:db8:100::1 dréckt d'Route aus, déi benotzt géif ginn, inklusiv den Apparat an déi gewielte Quelladress, an et respektéiert Policy-Regelen. Eng Quelladress, déi zum falschen Uplink gehéiert, ass dat gewinnt Zeeche, datt eng Regel méi fréi gematcht huet wéi du erwaart hues.
Konditioun dräi: entscheed, wien d'Persistenz besëtzt
Eng Route, déi mat ip -6 route add derbäigesat gouf, iwwerlieft bis zum Neistart oder bis eppes se läscht. En Default, dee vun Router-Annnoncen geléiert gouf, huet eng Liewensdauer a kann vum Router zeréckgezu ginn, während en manuell derbäigesaten Default ni vun sech aus ofleeft. Déi zwee an enger Tabell ze mëschen ass wéi eng verouderte permanent Route eng frësch annoncéiert Route iwwerstëmmt, laang nodeems den Uplink, deen se beschriwwen huet, opgehalen huet ze existéieren.
Wielt een Eegentümer pro Tabell. Wann en Netzwierkmanager oder Routing-Daemon den Interface schonn administréiert, beschreif d'Policy-Route do an loos de Kernel a Rou. Wann s du et skripts, maach d'Skript idempotent a schreif den Teardown zur selwechter Zäit, well s du en bei der éischter schlëmmer Ännerung brauchs:
ip -6 route flush table 201
ip -6 rule del fwmark 0x2 table 201Op engem Router, dee fir aner Hosts weiderleet, préif net.ipv6.conf.all.forwarding ier s du d'Tabell beschëllegs. Mat Weiderleeung aus ginn Paketen, déi un en anert Netzwierk adresséiert sinn, verworf, egal wéi korrekt Tabell 201 ass.
Dokumentéier den Design, sou datt déi nächst Persoun en audit kann
En Inventar, deen nëmmen fe80::1 späichert, geheit d'Felder fort, déi zielen. Dokumentéier d'Bestëmmung, den nächsten Hop, den Apparat, d'Tabell an d'Metrik zesummen, plus wou all Route hierkënnt, ob se annoncéiert, vum Manager generéiert oder statesch ass. Wann een duerno freet, ob den zweeten Uplink tatsächlech Verkeier dréit, beäntwert dee Rekord d'Fro ouni Rotschléi.
Ier s du d'Tabell fäerdeg nenns, bestäteg den Noper mat ip -6 neigh show dev uplink0, liest ip -6 rule show nach eng Kéier fir Uerdnungsfeeler, an test mat Verkeier, deen op d'Regel passt, amplaz vun engem Ping, deen den Defaultroute hëlt. Hu dann engem Uplink bewosst erof a kuck, op wéi eng Route de Kernel zréckfällt; d'Äntwert sollt mat deem iwwereneestëmmen, wat s du opgeschriwwen hues.