WireGuard: divi pusceļi pret 0.0.0.0/0 wg-quick
Divi /1 diapazoni aptver tās pašas adreses kā /0, taču wg-quick tos maršrutē citādi. Pirms rediģēšanas pārbaudiet politikas noteikumus, atzīmes un galapunkta ceļu.
Divi /1 prefiksi aptver tieši tās pašas IPv4 adreses kā viens /0, un šī vienlīdzība ir spēkā tikai partnera atļauto prefiksu saraksta iekšienē. Tā pārstāj būt spēkā tajā brīdī, kad iestatīšanas rīks izlemj, kā maršrutēt, jo Linux wg-quick noklusēto prefiksu apstrādā kā īpašu gadījumu, nevis kā aritmētiku. Īpašais zars ievieš atsevišķu tabulu, divus politikas noteikumus, ligzdas atzīmi un apgrieztā ceļa iestatījumus, ko pusceļu pāris nekad nesaņem. Tāpēc, kad pēc rediģēšanas pārstāj darboties starpniekserveris vai pārlūks, prefiksi ir vismazāk interesantā izmaiņu daļa.
Prefiksu saraksts nav visa konfigurācija
AllowedIPs veic divus darbus vienlaikus, un tikai viens no tiem attiecas uz pārklājumu. Pašam WireGuard saraksts ir šifrēšanas atslēgu maršrutēšana: tas nosaka, kuri galamērķi tiek šifrēti pretī partnerim un kādas avota adreses šis partneris drīkst izmantot. wg-quick gadījumā tas pats saraksts kalpo arī kā maršrutu specifikācija, un izveidotais maršruts ir atkarīgs no tā, kurai zarai saraksts nejauši atbilst. Tāpēc identisks pārklājums divās dažādās saraksta formās neko neizsaka par identisku resursdatora stāvokli.
Noklusējuma konfigurācija atņem šo lēmumu no jūsu rokām, jo Table pēc noklusējuma ir automātisks un rīks pats izvēlas, kur nolaižas maršruti. Cits tīkla pārvaldnieks, distribūcijas ietvars vai pielāgota Table vērtība atkal maina rezultātu, tāpēc vienam resursdatoram rakstīts padoms nākamajā var izskatīties nepareizs.
Ko noklusējuma zars pievieno papildus maršrutam
/0 ieraksts nosūta wg-quick uz tā noklusējuma maršruta ceļu: atsevišķa maršrutēšanas tabula saņem noklusējumu, viens politikas noteikums sūta tur neatzīmētu satiksmi, otrs noteikums uztur konkrētākus galvenās tabulas maršrutus kā noteicošus, un saskarne saņem ugunsmūra atzīmi savā ligzdā. Šī atzīme ir cilpas sargs. Šifrētās datagrammas, kas pārvadā tuneļa satiksmi, iziet ar iestatītu atzīmi, tāpēc noteikums, kas visu pārējo virza tunelī, neaprij paša tuneļa transporta paketes.
Tā vietā /1 ierakstu pāris izvēlas parasto maršruta ceļu. Konfigurētajā tabulā nokļūst divi maršruti, un neviena no apkārtējās mehānikas neparādās, ne tāpēc, ka tā būtu lieka, bet tāpēc, ka šajā koda ceļā nekad nav ieiets.
Kur abi izkārtojumi atšķiras
Atšķirība vispirms parādās kā rekursija. Ja pusceļi ir galvenajā tabulā, partnera paša transporta adrese iekrīt tuneļa prefiksā, tāpēc pakete, kurai būtu jānes tunelis, atbilst maršrutam, kas rāda tuneļa iekšienē. Kaut kam tā ir jāizslēdz: resursdatora maršruts pašreizējam galapunktam, ar roku uzlikta atzīme vai saskarnei specifisks noteikums. Resursdatora maršruts darbojas, līdz mainās galapunkta adrese, kas notiek ar DNS balstītiem galapunktiem, klejojošiem klientiem un konfigurācijām ar vairākiem partneriem.
Otrkārt, viss, kas spriež par atzīmēm, maina uzvedību. Caurspīdīgs starpniekserveris, kas pārvirza savienojumus lokāli, izveido jaunas ligzdas, kuru atzīmes un avoti atšķiras no sākotnējās klienta plūsmas, un politikas noteikumi, ko ģenerē noklusējuma zars, bija daļa no tā, kas šīs plūsmas sakārtoja. Starpniekservera paša izejošā savienojuma lasīšana ir cits vingrinājums nekā pārbaude, vai sākotnējais galamērķis ir sasniedzams.
Pirms rediģēšanas izlasiet noteikumus un atzīmes
Fiksējiet pašreizējo stāvokli, kamēr tunelis ir vesels, pēc tam vēlreiz pēc izmaiņām, un salīdziniet abas izdrukas, nevis spriediet no konfigurācijas faila. Iekļaujiet politikas noteikumus, katru tabulu, saskarnes atzīmi un reģistrētos galapunktus.
ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints
Ja izvades pirmā rinda ir zaudējusi neatzīmētās satiksmes noteikumu un atsevišķā tabula ir tukša, noklusējuma zars nedarbojas, un nekāda prefiksu aritmētika neatjaunos tā iedarbību. Nulles atzīme saskarnē, kurai iepriekš bija atzīme, ir tas pats signāls, redzams vienā vērtībā.
Pirms izlaišanas izmēģiniet tuneļa zudumu
Ja pusceļu izkārtojums ir apzināta izvēle, tam skaidri jānodrošina trūkstošās daļas: galapunkta ceļš, kas pārdzīvo adrešu izmaiņas, paredzētā uzvedība, kad tunelis nokrīt, un līdzvērtīga apstrāde IPv6. Pierakstiet tos kā prasības, nevis atklājiet tos pārtraukuma laikā. Pēc tam izmēģiniet kļūmi, jo pilns tunelis, kas klusi atkrīt uz fizisko augšupceļu, ir sliktāks par to, kas pārstāj darboties.
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
Maršruta meklēšanai vajadzētu atrisināt galapunktu no fiziskās saskarnes, nešķērsojot tuneli, un saskarnes izslēgšanai vajadzētu atstāt resursdatoru tādā stāvoklī, kādu solīja dizains. Starpniekserveris, kas darbojas pēc nomaiņas, pierāda, ka ģenerētajam resursdatora stāvoklim bija nozīme; tas nepierāda, ka cilpas novēršana un uzvedība izslēgtā stāvoklī pārdzīvoja rediģēšanu.