Tunelis ir pacelts, handshake notiek ik pēc divām minūtēm, un tieši viena adrese otrā pusē atbild. Pingi uz vienaudža tuneļa adresi strādā; nekas aiz tās nestrādā. Kāds izlasa saskarnes konfigurāciju, ierauga resdatora prefiksu un secina, ka maska ir nepareiza. Paplašināšana līdz /24 uz brīdi izlabo ping un pēc tam salauž kaut ko citu. Prefikss nekad nebija vaina, un trūkstošais maršruts nav tas, ko kontrolē maska.

Ko saskarnes prefikss faktiski rada

Linux sistēmā adreses piešķiršana saskarnei rada savienotu maršrutu šim prefiksam. Ja piešķirat resdatora prefiksu, savienotais maršruts aptver vienu adresi. Ja piešķirat /24, tas aptver 256, un katra no tām tagad tiek uzskatīta par sasniedzamu šajā saitē.

ip -4 addr show dev wg0
ip -4 route show dev wg0
ip route get 10.80.7.1

Resdatora prefikss ir pilnīgi normāla izvēle punktuzpunkta tunelim, jo otrā galā ir tieši viens vienaudzis. Trešā komanda ir tā, kas atbild uz lietotāja jautājumu: tā norāda, kuru saskarni kodols izmantotu šim galamērķim, un neparādīs neko noderīgu, ja neviens maršruts neatbilst.

Tas ir viss simptoma izskaidrojums. Viena adrese atbild tāpēc, ka tai ir savienots maršruts, vai tāpēc, ka vienaudža atļauto sarakstā tā nejauši ir iekļauta. Visam pārējam nav maršruta, un tas tiek izmests, pirms WireGuard vispār iesaistās. Tunelis visu laiku ir veselīgs, tāpēc handshake skaitītājs joprojām izskatās nomierinošs.

AllowedIPs ir divi noteikumi zem viena nosaukuma

WireGuard atļauto saraksts katram vienaudzim veic divus darbus vienlaikus, un konfigurācijas sintakse liek tiem izskatīties kā vienam. Ienākošajā virzienā tas atļauj, kādas avota adreses vienaudzis drīkst uzrādīt. Izejošajā virzienā tas izvēlas, kuram vienaudzim pakete tiek nosūtīta, atrodot visprecīzāko atbilstību.

Neviens no šiem darbiem nav maršrutēšana. Kodolam joprojām jāizlemj, ka pakete pieder tuneļa saskarnei, pirms WireGuard to apskata, un šis lēmums nāk no maršrutēšanas tabulas. Vienaudža ieraksts ar plašu atļauto sarakstu pats neinstalē maršrutu.

Tāpēc konfigurācija var izskatīties pilnīga un uzvesties asimetriski. Klients sūta uz otru pusi, jo maršruts pastāv, un atbildes nekad nenāk, jo otras puses atļauto saraksts neļauj klienta avotu, vai tāpēc, ka otrai pusei nav atgriešanās ceļa. Abi virzieni ir atsevišķi lēmumi ar atsevišķiem atteices režīmiem. Pierakstīt, kuru no tiem pārbaudāt, ir puse diagnozes.

No kurienes nāk maršruts

Ja izmantojat wg-quick, maršruti tiek ģenerēti jums no katra vienaudža atļauto saraksta, ja vien neesat iestatījis Table = off un pats pārņēmis kontroli. Tā ir rīka dokumentētā uzvedība, un tas ir iemesls, kāpēc konfigurācija bez skaidrām maršruta direktīvām joprojām darbojas.

sudo wg show wg0 allowed-ips
ip route show | grep wg0
sudo wg-quick strip wg0

Salīdziniet atļauto sarakstu ar maršrutiem, kas faktiski pastāv. Vienaudzis, kas atļauj visu apakštīklu, bet izveidoja tikai resdatora maršrutu, nozīmē, ka palīgs nekad nav palaists, vai arī saskarni pārvaldāt tieši ar wg un ip, un tādā gadījumā nekas jums neģenerē maršrutus.

Kad pārvaldāt to ar roku, maršruts ir viena rinda un tā forma ir skaidra: galamērķis caur saskarni, bez vārtejas, jo saite ir punktuzpunkts. Tā pievienošana nav apvedceļš sliktam prefiksam; tas ir trūkstošā puse dizainam, kas apzināti uzņēmies maršrutēšanu pats.

Plašāks prefikss nepievieno vienaudža ierakstu

Kārdinošais labojums ir nomainīt adresi uz /24, lai savienotais maršruts aptvertu servera lokālo tīklu. Šķiet, ka tas strādā, un iemesls, kāpēc šķiet, ka tas strādā, ir tas, ka savienotais maršruts tagad atbilst, nevis tas, ka WireGuard būtu iemācījies ko jaunu.

Tas, ko arī izdarījāt, ir pieprasījāt visu diapazonu kā tieši sasniedzamu šajā saitē, tostarp adreses, kas pieder citiem vienaudžiem vai lokālajam tīklam, kas patiesībā atrodas aiz servera. Trafiks uz šīm adresēm tagad nonāk tunelī, un vai tas iznāks otrā pusē, ir atkarīgs no paša servera maršrutēšanas un atļautajiem sarakstiem.

Kriptogrāfiskā puse nekādā gadījumā netiek skarta. WireGuard joprojām ir vajadzīgs atļauto saraksta ieraksts, kas aptver galamērķi, lai izvēlētos vienaudzi, un otrai pusei joprojām ir vajadzīgs ieraksts, kas aptver jūsu avotu, lai to pieņemtu. Plašāks saskarnes prefikss nevar nodrošināt nevienu no tiem.

Apstipriniet abus virzienus, pirms kaut ko maināt

Apstrādājiet abus galus atsevišķi un pierakstiet, ko katrs saka. Klientā maršruts un vienaudža ieraksts; serverī spoguļattēls plus tā paša atgriešanās ceļš:

ip route get 192.168.70.20
sudo wg show wg0 allowed-ips
sudo wg show wg0 latest-handshakes
sudo tcpdump -ni wg0 -c 10

Uztveršana ir tas, kas izšķir strīdus par virzienu. Ja izejošās paketes parādās tuneļa saskarnē un serveris neko neieraksta žurnālā, tālais gals tās noraida, parasti tāpēc, ka jūsu avots ir ārpus tā atļautā saraksta. Ja nekas neparādās vispār, maršruts trūkst vai norāda citur.

Pēc tam salabojiet šaurāko galu. Ieraksts atļauto sarakstā servera pusē jūsu klienta adresei un ieraksts klienta pusē mērķa apakštīklam ir parastā forma, un tā atstāj saskarnes prefiksu mierā. Paplašiniet prefiksu tikai tad, ja adrešu plāns patiešām vēlas kopīgu apakštīklu šajā saitē, un dariet to kā plāna izmaiņu, nevis atkļūdošanas soli.

Saistītie raksti