Du aukštynkanaliai, vieni vartai ir WireGuard partneris, kurio srautas nuolat pasirodo atsarginėje linijoje. Rankos paspaudimas visą laiką išlieka sveikas. Todėl simptomą lengva neteisingai perskaityti kaip WireGuard gedimą, o ne kaip maršrutizavimo gedimą.

Atlikite toliau pateiktus patikrinimus iš eilės. Kiekvienas turi sustabdymo sąlygą, o užbėgimas į priekį paprastai duoda užtikrintą neteisingą atsakymą.

Atskirkite rankos paspaudimą nuo persiųsto srauto

Užšifruotas partnerio mainas turi galinio taško maršrutą į serverio viešąjį adresą. Persiųstas kliento srautas turi kitą paskirties vietą ir gali būti parenkamas žymėmis arba politikos taisyklėmis. Tai du maršrutizavimo sprendimai, bendrai naudojantys vieną sąsają. Vieną laikyti kito įrodymu yra pirmoji klaida.

Sustokite vos pastebėję, kad samprotaujate iš rankos paspaudimo. Tai įrodymas tik apie galinio taško kelią.

Skaitykite politikos taisyklę, o ne numatytąją lentelę

Numatytoji lentelė rodo, kas nutinka, kai jokia politikos taisyklė neatitinka. Vartuose, kurie maršrutizuoja pagal šaltinį, žymę ar paskirties vietą, sprendžianti taisyklė gyvena kitur. Paprasta lentelė gali atrodyti visiškai pagrįsta, nors tikrasis pasirinkimas daromas virš jos.

ip rule show
ip route show table main
ip -4 route get 203.0.113.9 from 10.30.8.2

Skaitykite politikos taisykles ir lenteles, į kurias jos nurodo. Tada patvirtinkite, kuri taisyklė atitinka jūsų bandomąjį srautą. Taisyklė, kuri nurodo sąsają, kuri nebeperduoda numatyto aukštynkanalio, yra radinys, o ne smulkmena. Maršruto paieška pabaigoje parodo atsakymą daug greičiau nei lentelės skaitymas ir spėjimas.

Patikrinkite žymę ir vertimą kartu

Politikos maršrutizavimas remiasi paketo žyme, uždėta anksčiau grandinėje. Jei žymėjimo taisyklė praleidžia jūsų srautą, srautas nukrenta į pagrindinę lentelę ir išeina per tai, kas ten numatyta. Persiųsti paketai dažnai praleidžia grandines, parašytas vietoje sugeneruotam srautui.

nft list chain inet filter prerouting
conntrack -L -s 10.30.8.2 2>/dev/null | head
ip -s link show dev eth1

Vertimas turi atitikti aukštynkanalį, kuris perduoda srautą. Taisyklė, kuri verčia į pagrindinį adresą, kai paketas išeina per atsarginę liniją, sukuria atsakymus, adresuotus sąsajai, kurios srautas niekada nenaudojo. Patikrinkite pačios vertimo taisyklės sąsajos sąlygą. Besąlyginė taisyklė veikia tol, kol nenaudojamas antrasis aukštynkanalis, o paskui nepavyksta taip, kad atrodo protarpiais.

Stebėkite, kuri sąsaja perduoda atsakymą

Fiksuokite abiejuose aukštynkanaliuose, kol vyksta viena užklausa. Pažymėkite, kuri sąsaja perduoda užklausą, o kuri atsakymą. Asimetriškus kelius daug lengviau pamatyti nei numatyti.

Jei atsakymas ateina per netinkamą aukštynkanalį, problema persikėlė nuo WireGuard prie ryšių sekimo ar vertimo. Joks partnerio konfigūracijos pakeitimas to nepataisys.

Pakeiskite vieną dalyką su keliu atgal

Prieš redaguodami politikos taisykles vartuose, pasilikite konsolės arba už juostos ribų prieigą. Atlikite vieną pakeitimą, išbandykite tą pačią leistiną paskirties vietą, tada prisijunkite iš naujo ir patvirtinkite, kad rankos paspaudimas vis dar naudoja numatytą galinio taško kelią. Pridėkite skaitmeninį testą antrajai adresų šeimai, nes politika, taikoma tik v4, palieka tą pačią klaidą prieinamą.

Užrašykite, kurį aukštynkanalį naudojo kiekvienas srautas. Tas įrašas paverčia kitą ataskaitą dviejų minučių patikrinimu, o ne visu popiete. WireGuard pastabos apie vardų erdves ir maršrutizavimą aprašo, kaip sąmoningai atskirti galinio taško kelią nuo tuneliuoto srauto, o tai paprastai švariau nei kopijuoti apėjimą su numatytuoju maršrutu.

Susiję straipsniai