WireGuard se twee halwe roetes teenoor 0.0.0.0/0 in wg-quick
Twee /1-reekse dek dieselfde adresse as /0, maar wg-quick roeteer hulle anders. Kontroleer beleidsreëls, merke en die eindpuntpad voordat jy iets wysig.
Twee /1-voorvoegsels dek presies dieselfde IPv4-adresse as 'n enkele /0, en daardie gelykheid geld net binne die eweknie se lys van toegelate voorvoegsels. Dit hou op geld sodra die opstelprogram besluit hoe om te roeteer, want Linux wg-quick hanteer 'n verstekvoorvoegsel as 'n spesiale geval eerder as as rekenkunde. Die spesiale tak installeer 'n toegewyde tabel, twee beleidsreëls, 'n sokmerk en omgekeerdepad-instellings wat 'n paar halwe roetes nooit kry nie. Wanneer 'n proxy of 'n blaaier dus ná die wysiging ophou werk, is die voorvoegsels die minste interessante deel van die verandering.
Die voorvoegsellys is nie die hele konfigurasie nie
AllowedIPs doen twee take gelyk, en net een daarvan gaan oor dekking. Vir WireGuard self is die lys kriptosleutelroetering: dit bepaal na watter bestemmings versleutel word na 'n eweknie en watter bronadresse daardie eweknie mag gebruik. Vir wg-quick dien dieselfde lys ook as 'n roetespesifikasie, en die roete wat dit lewer, hang af van watter tak die lys toevallig pas. Identiese dekking oor twee verskillende lysvorms sê dus niks oor identiese gasheertoestand nie.
Die verstekkonfigurasie neem daardie besluit uit jou hande, want Table is outomaties by verstek en die program kies waar die roetes beland. 'n Ander netwerkbestuurder, 'n verspreidingsomhulsel of 'n pasgemaakte Table-waarde verander die uitkoms weer, en daarom kan raad wat vir een gasheer geskryf is, op die volgende verkeerd lyk.
Wat die verstektak bo 'n roete byvoeg
'n /0-inskrywing stuur wg-quick in sy verstekroetepad in: 'n aparte roetertabel ontvang die verstek, een beleidsreël stuur ongemerkte verkeer daarheen, 'n tweede reël hou meer spesifieke hooftabelroetes gesaghebbend, en die koppelvlak kry 'n firewallmerk op sy eie sok. Daardie merk is die luswag. Die versleutelde datagramme wat tonnelverkeer dra, vertrek met die merk gestel, sodat die reël wat alles anders in die tonnel instuur nie die tonnel se eie vervoerpakkette insluk nie.
'n Paar /1-inskrywings neem eerder die gewone roetepad. Twee roetes beland in die gekonfigureerde tabel, en niks van die omliggende masjinerie verskyn nie, nie omdat dit onnodig is nie, maar omdat daardie kodepad nooit betree is nie.
Waar die twee reëlings uiteengaan
Die uiteengaan wys eerste as rekursie. Met die halwe roetes in die hoof tabel, val die eweknie se eie vervoeradres binne 'n tonnelvoorvoegsel, so die pakket wat die tonnel moet dra, pas by 'n roete wat in die tonnel in wys. Iets moet dit vrystel: 'n gasheerroete vir die huidige eindpunt, 'n merk wat met die hand toegepas word, of 'n koppelvlakspesifieke reël. 'n Gasheerroete werk totdat die eindpuntadres verander, wat gebeur met DNS-gebaseerde eindpunte, swerwende kliënte en veellidige konfigurasies.
Tweedens verander enigiets wat oor merke redeneer, die gedrag. 'n Deursigtige proxy wat verbindings plaaslik herlei, skep nuwe soks waarvan die merke en bronne van die oorspronklike kliëntvloei verskil, en die beleidsreëls wat deur die verstektak gegenereer is, was deel van wat daardie vloei uitgepluis het. Om die proxy se eie uitgaande verbinding te lees, is 'n ander oefening as om te toets of die oorspronklike bestemming bereikbaar is.
Lees die reëls en merke voor jy wysig
Neem die huidige toestand op terwyl die tonnel gesond is, en weer ná die verandering, en vergelyk die twee dumps eerder as om uit die konfigurasielêer te redeneer. Sluit die beleidsreëls, elke tabel, die koppelvlak se merk en die aangetekende eindpunte in.
ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints
As die eerste uitvoerlyn die reël vir ongemerkte verkeer verloor het en die toegewyde tabel leeg is, loop die verstektak nie en geen hoeveelheid voorvoegselrekenkunde sal die effekte daarvan herstel nie. 'n Merk van nul op 'n koppelvlak wat voorheen een gedra het, is dieselfde teken, sigbaar in 'n enkele waarde.
Oefen tonnelverlies voordat jy dit uitrol
As die halwe-roete-uitleg die doelbewuste keuse is, moet dit die ontbrekende stukke eksplisiet verskaf: 'n eindpuntpad wat adresveranderings oorleef, die beoogde gedrag wanneer die tonnel val, en die ekwivalente behandeling vir IPv6. Skryf dit as vereistes neer eerder as om dit tydens 'n onderbreking te ontdek. Oefen dan die faling, want 'n volle tonnel wat stilweg na die fisiese opstuur val, is erger as een wat ophou werk.
sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1
Die roetesoektog moet die eindpunt uit die fisiese koppelvlak oplos sonder om die tonnel te deurkruis, en om die koppelvlak af te bring moet die gasheer in die toestand laat wat die ontwerp belowe het. 'n Proxy wat ná die vervanging werk, bewys dat die gegenereerde gasheertoestand saak gemaak het; dit bewys nie dat lusvoorkoming en gedrag in die af-toestand die wysiging oorleef het nie.