Dodali ste metriku ruti u profilu, ponovo se povezali, a saobraćaj i dalje izlazi kroz pogrešan interfejs. Broj je retko problem. Metrika samo uređuje kandidate koje operativni sistem već upoređuje, a specifičniji prefiks ili ranija tabela politika odlučuje prije nego što se bilo koja metrika pročita.

Prvo prođite kroz profil, zatim kroz instaliranu tabelu, pa kroz pravila selekcije. Taj redoslijed odgovara načinu na koji klijent gradi rutu i sprečava vas da podešavate vrijednost koja nikada ne ulazi u poređenje.

Čitajte liniju rute po redoslijedu polja

Community OpenVPN 2.6 klijent prihvata četiri polja u IPv4 liniji route: mrežu, masku, gateway i opcionu metriku. Pozicija gateway-a je mjesto gdje ide posebna ključna riječ vpn_gateway. Ona označava sljedeći hop sa VPN strane za ovu konekciju, a ne broj tabele rutiranja i ne vaš fizički ruter. Ako to propustite, ostatak linije se čita sa pogrešnom predstavom o tome šta ona radi. Referenca za mrežne opcije dokumentuje sva četiri polja.

Za privatnu destinaciju linija može izgledati ovako:

route-metric 50
route 172.20.0.0 255.255.0.0 vpn_gateway 30

Eksplicitnih 30 važi za tu rutu, a 50 ostaje podrazumijevana vrijednost za svaku drugu rutu u profilu koja izostavlja broj. Čitanje linije s lijeva na desno dovoljno je da se vidi koja vrijednost gdje važi.

route-metric je podrazumijevana vrijednost, a ne rang

route-metric postavlja rezervnu vrijednost za rute koje ne nose sopstveni broj. Ona ne podiže rutu iznad bilo čega drugog i ne preuređuje rute instalirane sa eksplicitnim metrikama.

Ta razlika je važna kada profil miješa oba oblika. Jedna linija route-metric pri vrhu izgleda autoritativno i lako je okriviti, dok ruta koja stvarno nosi saobraćaj može imati sopstvenu metriku tri linije niže.

Ako želite da jedna ruta preferira putanju, stavite broj na tu rutu. Ako želite dosljednu podrazumijevanu vrijednost u generisanom profilu, koristite route-metric i ostavite pojedinačne linije na miru. Miješanje jednog i drugog bez razloga je način na koji profil završi sa rutom koju niko ne može objasniti.

Provjerite šta je klijent instalirao

Nakon što se ponovno povezivanje završi, pitajte kernel, a ne profil.

ip route show prikazuje rute koje je klijent dodao, a ip route get 172.20.5.10 odgovara na korisnije pitanje: koju bi rutu ova destinacija stvarno koristila i sa koje izvorne adrese. Ako destinacije nema u tabeli, klijent je nije instalirao.

Lokalna direktiva, server push ili drugi mrežni menadžer mogu dodati ili ukloniti isti prefiks, a posljednji koji upiše pobjeđuje. Držite rutu do krajnje tačke na oku dok radite, jer konekciji treba put do udaljenog servera koji ne prolazi kroz tunel koji gradi.

Zašto manja metrika i dalje gubi

Metrike upoređuju rute do iste destinacije. One ne čine široki prefiks specifičnijim. Kada je redirect-gateway def1 u igri, klijent instalira 0.0.0.0/1 i 128.0.0.0/1, a ta dva prefiksa pokrivaju cijeli IPv4 prostor specifičnije od 0.0.0.0/0. Metrika 1 na podrazumijevanoj ruti ih ne nadmašuje.

Ista logika važi za svaki par koji se preklapa. /24 pobjeđuje /16 za adresu unutar njega bez obzira na brojeve koji su prikačeni, jer pretraga prvo bira najspecifičnije poklapanje i tek onda upoređuje metrike među jednakima.

To je dio koji izgleda kao bug u metrici, a nije. Provjerite dužinu prefiksa na oba kandidata prije nego što promijenite bilo koji broj.

Pravila politike rade prije tabele

Na Linuxu ip rule odlučuje koja tabela rutiranja se konsultuje. Pravila se ocjenjuju po prioritetu, pa ranija tabela može vratiti rutu prije nego što se glavna tabela uopšte pročita. Metrika unutar main ne može nadmašiti poklapanje u tabeli koja je konsultovana prva.

Koristite ip rule show, a zatim upitajte konkretnu tabelu, na primjer ip route show table 100, da vidite šta bi to pravilo vratilo. Ako je VPN klijent ili kontejnerski runtime dodao pravilo, odgovor može biti tamo, a ne u tabeli koju ste čitali. Izvorna adresa je takođe važna, jer pravilo može da se poklopi po izvoru i razriješi istu destinaciju drugačije za tunelski i LAN saobraćaj.

Provjerite destinaciju, a ne rangiranje

Test koji završava raspravu je jedan upit ka hostu unutar željene podmreže, plus provjera izvorne adrese koju je kernel odabrao. Ako se taj par poklapa sa projektom, metrika radi svoj posao čak i kada lista ne izgleda kao uredno rangiranje.

Ostavite IPv6 i DNS van ove provjere. Njih konfigurišu druge direktive i razrješavaju drugi mehanizmi, a ispravna IPv4 ruta ne govori ništa ni o jednom. Mijenjajte po jedan sloj i ponovo pokrenite upit.

Povezani članci