Namjera je razumna: poslati sve za jednu domenu kompanije kroz tunel, a ostalo ostaviti na miru. Direktiva koja se uređuje instalira rute, a ruta nema nikakav pojam imena hosta s kojim bi se poklopila. Svaki pokušaj da se u nju upiše wildcard daje ili grešku parsiranja ili, što je gore, rutu koja danas slučajno radi jer se ime razriješilo u jednu adresu. Dva različita mehanizma se mole da rade posao jedan drugome.

Šta ruta instalira i šta nikada ne čita

Unos rute kaže da je prefiks odredišta dostupan kroz interfejs. Jezgro upoređuje pakete s tim prefiksima, pa su jedini uključeni identifikatori adrese i maske. Ime hosta se nikada ne pojavljuje u odluci o prosljeđivanju, i zato se uzorak tu ne može poklopiti.

OpenVPN može prihvatiti ime koje se može razriješiti u nekim parametrima rute, a ta tolerancija je izvor zabune. Ime se razrješava dok se konfiguracija primjenjuje, stvarajući jednu ili više adresa koje postaju obične rute. Nakon toga, ime potpuno nestaje sa slike.

Dakle, ruta izgrađena od imena je snimak, a ne pravilo. Pokriva ono u što se to ime razriješilo u trenutku pokretanja tunela, a to je upravo ponašanje koje ne želite za porodicu hostova koja se mijenja. Zapis koji se sutra premjesti ostavlja rutu kako pokazuje na juče.

Kada odredište zaista jeste prefiks

Ako je cilj poznata privatna mreža, napišite prefiks. Za primjer iz prostora dokumentacije, jedan host i jedna podmreža izgledaju ovako:

route 10.60.4.20 255.255.255.255
route 10.60.0.0 255.255.0.0

Oba unosa imenuju adrese i maske, i oba preživljavaju promjene DNS-a jer ništa u njima ne zavisi od imena. To je cijela prednost: ruta je izjava o topologiji, a ne o pretrazi koja se dogodila jednom.

Ne izvodite veliki prefiks iz jednog DNS odgovora. Jedno ime hosta koje se razrješava u jednu adresu ne govori vam ništa o veličini mreže iza njega, a nagađani prefiks je način na koji tunel počne hvatati saobraćaj koji niko nije namjeravao poslati kroz njega. Pitajte vlasnika mreže za stvarni prefiks umjesto da ga zaključujete iz pretrage.

Kada je jedinica rada ime hosta

Biranje po domeni zahtijeva nešto što čita domenu, što znači komponentu aplikacijskog sloja. Uobičajen odgovor je HTTP proxy koji živi s druge strane tunela, a klijent bira koje zahtjeve mu šalje.

Konfiguracijska datoteka proxyja može izraziti taj izbor. Ilustrativna pravila ispod šalju jednu domenu i njene poddomene na proxy, a sve ostalo direktno:

function FindProxyForURL(url, host) {
    var h = host.toLowerCase();
    if (h === "corp.example" || dnsDomainIs(h, ".corp.example")) {
        return "PROXY 10.60.0.12:3128";
    }
    return "DIRECT";
}

Poređenje tačnog imena pokriva samu domenu, a poređenje sufiksa pokriva njenu djecu bez poklapanja imena koje se samo završava sličnim znakovima. Oba su potrebna, a izostavljanje jednog daje pravilo koje izgleda ispravno i preskače vrh ili prevaranta.

Ova pravila biraju proxy; ne stvaraju ga i ne mijenjaju nijednu rutu operativnog sistema. Adresa proxyja još uvijek treba svoj put kroz tunel, a zahtjevi označeni kao direktni i dalje slijede onu politiku rutiranja koju mašina već ima.

Šta opcija proxyja ne pokriva

Programi koji ignorišu konfiguraciju proxyja u pregledniku neće biti pogođeni ničim od ovoga. Alati iz komandne linije, programi za ažuriranje i aplikacije s vlastitim mrežnim stekom uzimaju tablicu ruta, a ne PAC datoteku, pa ti slučajevi traže podržani mehanizam za pojedinačnu aplikaciju ili drugačiji dizajn. Popišite klijente koji su važni prije nego što obećate da pravilo preglednika pokriva tok rada.

Vraćanje direktno takođe nije izlaz u nuždi. Ako politika rutiranja mašine već šalje sve u tunel, zahtjev označen kao direktan ostaje unutar njega, jer su izbor proxyja i tablica ruta različite odluke donesene na različitim slojevima.

Razrješavanje imena je treće odvojeno pitanje. Biranje koji zahtjevi idu na proxy ne govori ništa o tome koji razrješivač na njih odgovara, a tretiranje to dvoje kao jedne postavke stvara curenja koja su nevidljiva dok neko ne testira spolja. Odlučite gdje se odgovara na svaki upit i zapišite tu odluku pored pravila proxyja. Razrješivač koji se promijeni jer se tunel podigao tiho će premjestiti odgovor.

Testiranje oba puta, ne samo sretnog

Testirajte ime hosta koje bi trebalo da se poklopi, ime hosta koje ne bi trebalo, i vrh domene, jer se vrh najčešće propušta pravilom samo sa sufiksom. Zatim potvrdite koji je put svaki zahtjev zaista prešao, umjesto da to zaključujete iz toga da li se stranica učitala.

Na kraju, testirajte granu kvara. Proxy koji je nedostupan treba da padne na način koji ste unaprijed odlučili, umjesto da se tiho vrati na direktnu vezu. Referenca za mrežne opcije precizno dokumentuje parametre rute; domenski dio ovog dizajna živi potpuno izvan nje.

Povezani članci