Miksi jokerimerkki OpenVPN:n route-direktiivissä ei voi toimia
reitti asentaa osoiteprefiksejä, joten isäntänimen kuvauksella ei ole mitään sovitettavaa. Käytä prefiksiä verkoille ja välityspalvelinta tai PAC-tiedostoa, kun verkkotunnusten on päätettävä.
Aie on järkevä: lähettää kaikki yhden yritysverkkotunnuksen asiat tunnelin läpi ja jättää muu rauhaan. Muokattava direktiivi asentaa reittejä, eikä reitillä ole mitään käsitystä isäntänimestä, jota vasten sovittaa. Jokainen yritys kirjoittaa siihen jokerimerkki tuottaa joko jäsennysvirheen tai, mikä on pahempaa, reitin, joka sattumalta toimii tänään, koska nimi ratkesi yhdeksi osoitteeksi. Kahta eri mekanismia pyydetään tekemään toistensa työ.
Mitä reitti asentaa ja mitä se ei koskaan lue
Reittimerkintä sanoo, että kohdeprefiksi on tavoitettavissa rajapinnan kautta. Ydin sovittaa paketit näihin prefikseihin, joten ainoat mukana olevat tunnisteet ovat osoitteet ja peitteet. Isäntänimi ei koskaan esiinny edelleenlähetyspäätöksessä, ja siksi siinä ei voi sovittaa kuviota.
OpenVPN voi hyväksyä ratkaistavan nimen joissakin reittiparametreissa, ja tämä sallivuus on sekaannuksen lähde. Nimi ratkaistaan konfiguraation käyttöönoton aikana, jolloin syntyy yksi tai useampi osoite, joista tulee tavallisia reittejä. Sen jälkeen nimi on kadonnut kuvasta kokonaan.
Nimestä rakennettu reitti on siis tilannekuva, ei sääntö. Se kattaa sen, mihin nimi ratkesi sillä hetkellä, kun tunneli käynnistyi, ja juuri sitä käyttäytymistä et halua muuttuvalle isäntäperheelle. Kirjaus, joka siirtyy huomenna, jättää reitin osoittamaan eiliseen.
Kun kohde todella on prefiksi
Jos kohde on tunnettu yksityisverkko, kirjoita prefiksi. Dokumentaatioavaruuden esimerkissä yksi isäntä ja yksi aliverkko näyttävät tältä:
route 10.60.4.20 255.255.255.255
route 10.60.0.0 255.255.0.0
Molemmat merkinnät nimeävät osoitteet ja peitteet, ja molemmat kestävät DNS-muutokset, koska mikään niissä ei riipu nimestä. Siinä on koko etu: reitti on väite topologiasta, ei kerran tapahtuneesta hausta.
Älä johda suurta prefiksiä yhdestä DNS-vastauksesta. Yksi osoitteeksi ratkeava isäntänimi ei kerro sinulle mitään sen takana olevan verkon koosta, ja arvattu prefiksi on tapa, jolla tunneli alkaa kaapata liikennettä, jota kukaan ei aikonut sen läpi lähettää. Kysy verkon omistajalta todellinen prefiksi sen sijaan, että päättelet sen hausta.
Kun työn yksikkö on isäntänimi
Verkkotunnuksen mukaan valitseminen vaatii jotain, joka lukee verkkotunnuksen, eli sovelluskerroksen komponentin. Tavallinen vastaus on HTTP-välityspalvelin, joka sijaitsee tunnelin toisella puolella, ja asiakas valitsee, mitkä pyynnöt sille lähetetään.
Välityspalvelimen asetustiedosto voi ilmaista tämän valinnan. Alla olevat havainnollistavat säännöt lähettävät yhden verkkotunnuksen ja sen aliverkkotunnukset välityspalvelimelle ja kaiken muun suoraan:
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";
}
Tarkan nimen vertailu kattaa verkkotunnuksen itsensä, ja päätteen vertailu kattaa sen lapset osumatta nimeen, joka vain päättyy samankaltaisiin merkkeihin. Molempia tarvitaan, ja toisen pois jättäminen tuottaa säännön, joka näyttää oikealta ja ohittaa huipun tai huijarin.
Nämä säännöt valitsevat välityspalvelimen; ne eivät luo sellaista eivätkä muuta yhtään käyttöjärjestelmän reittiä. Välityspalvelimen osoite tarvitsee yhä oman polkunsa tunnelin läpi, ja suoriksi merkityt pyynnöt seuraavat edelleen sitä reitityskäytäntöä, joka koneella jo on.
Mitä välityspalvelinvalinta ei kata
Ohjelmat, jotka jättävät selaimen välityspalvelinasetukset huomiotta, eivät kärsi tästä mitään. Komentorivityökalut, päivittäjät ja omalla verkkopinollaan toimivat sovellukset ottavat reittitaulun, eivät PAC-tiedostoa, joten ne tapaukset tarvitsevat tuetun sovelluskohtaisen mekanismin tai erilaisen suunnittelun. Luettele asiakkaat, joilla on merkitystä, ennen kuin lupaat, että selainsääntö kattaa työnkulun.
Suoraan palaaminen ei ole pakotie sekään. Jos koneen reitityskäytäntö lähettää jo kaiken tunneliin, suoraksi merkitty pyyntö pysyy sen sisällä, koska välityspalvelinvalinta ja reittitaulu ovat eri kerroksissa tehtyjä eri päätöksiä.
Nimien ratkaiseminen on kolmas erillinen kysymys. Valinta siitä, mitkä pyynnöt menevät välityspalvelimelle, ei kerro mitään siitä, mikä ratkaisija niihin vastaa, ja näiden kahden käsitteleminen yhtenä asetuksena tuottaa vuotoja, jotka ovat näkymättömiä, kunnes joku testaa ulkopuolelta. Päätä, missä kukin kysely vastataan, ja kirjoita päätös välityspalvelinsäännön viereen. Ratkaisija, joka muuttuu tunnelin noustua, siirtää vastausta hiljaa.
Molempien polkujen testaaminen, ei vain onnellisen
Testaa isäntänimi, jonka pitäisi täsmätä, isäntänimi, jonka ei pitäisi, ja verkkotunnuksen huippu, koska huippu on tapaus, joka useimmin jää pelkän päätteen säännöltä huomaamatta. Vahvista sitten, minkä polun kukin pyyntö todella kulki, sen sijaan että päättelet sen sivun latautumisesta.
Testaa lopuksi virhehaara. Välityspalvelimen, johon ei saada yhteyttä, pitäisi epäonnistua tavalla, jonka olet päättänyt etukäteen, sen sijaan että se hiljaa palaisi suoraan yhteyteen. Verkkoasetusten viite dokumentoi reittiparametrit tarkasti; tämän suunnittelun verkkotunnuspuoli elää kokonaan sen ulkopuolella.