Një dump i tabelës së rrugëzimit është diagnostiku më pak i dobishëm në zgjidhjen e problemeve të VPN dhe më i ngjitur. Dyzet rreshta prefiksesh ju tregojnë çfarë mund të bënte makina, jo çfarë bëri për kërkesën që dështoi. Mekanizmi që ju vërtet dëshironi është kërkimi: duke pasur këtë burim dhe këtë destinacion, cila rregull përputhej, cila tabelë u konsultua dhe cili ndërfaqe dhe hapi tjetër dolën. Filloni nga një destinacion dhe një burim, më pas lexoni tabelën me atë pyetje në dorë, dhe i njëjti output bëhet provë në vend të zhurmës.

Një tabelë është një grup kandidatësh, jo një vendim

Çdo hyrje përshkruan një prefiks dhe çfarë të bëhet me trafikun që përputhet me të: dërgoje në një ndërfaqe, dorëzoje te një hap tjetër, ose hidhe poshtë. Asgjë në atë listë nuk është renditur sipas qëllimit, dhe hyrja që i duket njeriut më specifike nuk është gjithmonë ajo që zgjedh kernel-i, sepse zgjedhja ndjek përputhjen e prefiksit më të gjatë dhe, midis prefikseve të barabarta, metrikën.

Pra hapi i parë është të pyesësh kernel-in në vend që të lexosh listën. Komanda e kërkimit përgjigjet për një destinacion, dhe me një argument burimi përgjigjet për çiftin e saktë që do të përdorte një lidhje e përcjellë ose e lidhur:

ip route get 198.51.100.10
ip route get 198.51.100.10 from 10.80.0.25
ip -6 route get 2001:db8:10::40

Çdo adresë më sipër është një shembull dokumentacioni. Çështja është forma e përgjigjes: ndërfaqja, adresa e burimit e zgjedhur, porta dhe tabela nga e cila erdhi hyrja. Nëse ai output nuk përputhet me ndërfaqen që prisnit, e keni lokalizuar problemin me një komandë të vetme, dhe asnjë sasi leximi i tabelës së plotë nuk do t'ju kishte thënë cili kandidat fitoi.

Kërkimi kalon fillimisht nëpër rregulla, pastaj nëpër tabela

Në Linux vendimi është në dy faza. Rregullat e politikës vlerësohen sipas rendit të përparësisë, dhe rregulli i parë që përputhet emërton një tabelë për t'u konsultuar; ajo tabelë më pas bën përputhjen e prefiksit më të gjatë. Një rregull mund të përputhet sipas burimit, destinacionit, shenjës së firewall-it, ndërfaqes ose një kombinimi, prandaj një dump i tabelës kryesore mund të jetë plotësisht i saktë dhe plotësisht i parëndësishëm për paketën që po hetoni.

ip rule show
ip route show table all | head -40
ip route show table 100

Nëse një rregull dërgon trafik nga pishina juaj VPN në tabelën 100, atëherë tabela 100 është ajo që ka rëndësi, dhe tabela kryesore është një karrem. Ky është gjithashtu mekanizmi pas rrugëzimit të bazuar në burim në një router: i njëjti destinacion mund të ketë dy përgjigje të ndryshme në varësi të vendit nga erdhi paketa, dhe vetëm kërkimi me një argument burimi zbulon cila zbatohet.

IPv6 ka rregullat dhe tabelat e veta. Një dizajn që ekzekuton të dyja familjet ka nevojë për të dyja kërkimet, dhe një përgjigje IPv4 që funksionon nuk thotë asgjë për rrugën v6 që një klient me dy stack-e mund të preferojë.

Çfarë instalon klienti VPN

Klientët zakonisht nuk zëvendësojnë rrugën e paracaktuar, sepse kjo do të prishte rrugën e vet të jashtme të tunelit. Ata instalojnë diçka më specifike që fiton sipas gjatësisë së prefiksit: një çift gjysmë-paracaktuarish që mbulojnë 0.0.0.0/1 dhe 128.0.0.0/1 është truku klasik, pasi të dy janë prefikse më të gjatë se 0.0.0.0/0 dhe së bashku mbulojnë të gjithë hapësirën. Të tjerë instalojnë prefikse private specifike plus një rregull politike, dhe disa shtojnë një shenjë që të kapet vetëm trafiku i zgjedhur.

Kjo është arsyeja pse "VPN nuk më ndryshoi rrugën e paracaktuar" nuk është provë dështimi. Kontrolloni çfarë shtoi vërtet, dhe nëse destinacioni në fjalë bie brenda atyre prefikseve:

ip route show | grep -E 'tun|wg|ppp|ipsec'
ip route get 10.20.30.40 from 10.80.0.25

Dy gjysmë-rruga janë të lehta për t'u anashkaluar në një dump sepse nuk duken si e paracaktuar. Një konfigurim split-tunnel që harroi të përfshijë një prefiks prodhon pikërisht simptomën që po ndiqni: aplikacioni që duhej të përdorte tunelin zgjidh dhe lidhet lokalisht në vend të tij. Krahasoni prefikset e instaluara me destinacionet që përdoruesi ka vërtet nevojë, jo me adresat që keni testuar rastësisht. Një listë split-tunnel që mbulon serverin e skedarëve por jo zgjidhësin e tij prodhon një lidhje që zgjidhet në një adresë publike dhe më pas dështon në autentikim, e cila duket si problem fjalëkalimi dhe është problem rruge.

Rruga e jashtme duhet gjithashtu të mbijetojë

Tuneli është vetë trafik. Paketat që mbajnë ngarkesën e inkapsuluar shkojnë në adresën e partnerit përmes ndërfaqes fizike, dhe ajo rrugë nuk duhet të rrugëzohet përsëri në tunel. Kur kjo ndodh, ju merrni dështimin karakteristik ku tuneli vendoset dhe më pas ndalon kalimin e trafikut, sepse transporti për tunelin është tani brenda tunelit.

Kontrolloni adresën e partnerit ashtu siç kontrolluat destinacionin e brendshëm, dhe konfirmoni që zgjidhet në ndërfaqen fizike dhe jo në tunel:

ip route get 203.0.113.10
traceroute -n -m 5 203.0.113.10

Një rrugë rekursive, një rregull politike që kap partnerin, ose një e paracaktuar e zëvendësuar nga një klient tuneli i plotë janë tre shkaqet e zakonshme. Të tre janë të dukshëm në kërkimin e jashtëm, dhe asnjëri nuk është i dukshëm në një dump të tabelës kryesore të marrë pas faktit.

Çfarë nuk mund t'ju thotë output-i i rrugëzimit

Një kërkim i saktë do të thotë që kernel-i do ta dërgonte paketën diku të arsyeshme. Nuk do të thotë që firewall-i e lejon, politika IPsec e mbulon, rregulli NAT e përkthen, ose pala e largët ka një rrugë kthimi. Secili prej tyre është një fazë e mëvonshme, dhe shënimet e strongSwan për përcjelljen përshkruajnë zinxhirin që një paketë duhet të kalojë në të dy skajet.

Nuk merr parasysh as lidhjen në nivel aplikacioni. Një proces mund të lidhet me një ndërfaqe, të vendosë një shenjë ose të përdorë zgjidhësin e vet dhe të lidhet me një emër që zgjidhet ndryshe nga ai që keni testuar. Kur kërkimi është i saktë dhe lidhja ende dështon, pyetja tjetër është cili proces po e bën dhe nëse ai proces sheh të njëjtën tabelë si ju.

Prandaj mbajeni diagnozën të renditur: emërtoni destinacionin dhe burimin, ekzekutoni kërkimin, lexoni vetëm tabelën dhe rregullin që emërtoi kërkimi, më pas provoni fazën tjetër. Ai sekuencë e mban një hetim rrugëzimi në minuta dhe lë një regjistrim që dikush tjetër mund ta ndjekë, gjë që një tabelë e ngjitur nuk e bën kurrë.

Artikuj të ngjashëm