Tarvitseeko jokainen OpenVPN-vertaiskone remote-rivin? Ei aivan
remote kertoo, minne ensimmäinen paketti menee; se ei valitse asiakkaan, palvelimen tai TLS:n roolia. Lue järjestely ennen kuin kopioit sen molemmille puolille.
Kahta vertaiskonfiguraatiota verrataan rinnakkain, toisessa on remote-rivi ja toisessa ei, ja johtopäätös on, että toinen niistä on rikki. Tämä päätelmä on riittävän usein väärä, että se kannattaa purkaa. Direktiivi kuvaa, minne ensimmäinen paketti pitäisi lähettää. Se ei valitse, toimiiko prosessi aloittavana asiakkaana vai odottavana yhdyskäytävänä, eikä se päätä, kumpi puoli todistaa identiteettinsä toiselle.
Mitä remote oikeastaan määrittää
remote-merkintä nimeää isäntäkoneen, valinnaisesti portin ja kuljetuksen sekä valinnaisesti useita tällaisia merkintöjä, joita kokeillaan järjestyksessä.
Sen puuttumisella on määritelty eikä määrittelemätön merkitys: prosessi odottaa eikä käsittele paketteja osoitteesta, ellei kyseinen vertaiskone autentikoidu. Liikkuvia käyttäjiä palvelevalla yhdyskäytävällä ei siis ole syytä nimetä ketään heistä etukäteen.
Lue merkintä osoitesuhteena. Sen, onko toinen pää luotettu, vastaavat varmenteet ja vahvistusasetukset, eikä se, että osoite on kirjoitettu muistiin.
Kolme järjestelyä ratkaisee vastauksen
Liikkuva asiakas tarvitsee kohteen, koska sen on aloitettava eikä se tiedä, missä yhdyskäytävä on, ilman sitä. Monen asiakkaan yhdyskäytävä ei tarvitse kohdetta käyttäjää kohti, koska asiakkaat saapuvat ja autentikoituvat. Tarkoituksellinen kahden vertaiskoneen linkki, jolla on tunnetut päätepisteet, voi sisältää kohteen toisella puolella, molemmilla puolilla tai ei kummallakaan, riippuen siitä, kumpi puoli aloittaa.
Kiinteän asiakasosoitteen liittäminen yleiseen yhdyskäytävään on virhe, joka seuraa näiden luokkien huomiotta jättämisestä. Se toimii sille ainoalle vertaiskoneelle, jonka osoite kirjattiin, ja johtaa kaikki muut harhaan.
Mikään direktiivissä ei tee konfiguraatiosta monen asiakkaan palvelinta, eikä mikään sen läsnäolossa estä palvelinroolia. OpenVPN 2.6 -viite dokumentoi valinnaiset argumentit ja käyttäytymisen ilman remotea erikseen, mikä on vihje siitä, kuinka riippumattomia ne ovat.
| Arrangement | Needs a destination |
|---|---|
| Roaming client | Yes, which gateway to contact |
| Multi-client gateway | No, peers authenticate on arrival |
| Two known peers | Depends on which side initiates |
Kuljetusroolit ovat toinen akseli
TCP:ssä toinen puoli odottaa ja toinen soittaa. Ne ovat kohteesta erillisiä direktiivejä, ja niiden sekoittaminen tuottaa parin, jossa molemmat odottavat tai molemmat soittavat.
On myös TCP-lähdesuodattimen rooli, minkä vuoksi väite, ettei palvelin saa koskaan sisältää remotea, on väärä.
UDP:ssä ei ole yhteyttä muodostettavana, joten molemmat päät käyttävät vastaavaa UDP-kuljetusta ja direktiivi kertoo vain, mihin tähdätä. Autentikoidun vertaiskoneen osoitteenmuutokset hoitaa oma käyttäytyminen eikä uusien merkintöjen lisääminen. Kuljetuksen oikein saaminen on edellytys sille, että kohde merkitsee jotain, ja näiden kahden sekoittaminen tuottaa konfiguraatioita, jotka näyttävät uskottavilta eivätkä koskaan suorita kättelyä loppuun.
Miksi puuttuva remote ei ole avoin ovi
Prosessi ilman kohdetta silti hylkii liikennettä vertaiskoneilta, jotka eivät autentikoidu, ja juuri se osa jää huomaamatta, kun puuttuva rivi luetaan kaikille avoimena kuuntelijana.
Autentikointi ja kohde ovat riippumattomia, ja ensimmäinen on se, jolla on merkitystä luottamukselle.
Käänteinen virhe on vaarallisempi. Kiinteä lähdeosoite voi tuntua pääsynvalvonnalta, koska se on täsmällinen ja helppo tarkistaa, mutta se ei todista mitään siitä, kuka on toisessa päässä. Pidä varmenteiden vahvistus ja identiteettitarkistukset, jotka sitovat varmenteen sen rooliin. Niiden korvaaminen osoiteosumalla vaihtaa todellisen valvonnan sen näköisyyteen.
Kirjoita muistiin, mitä konfiguraatio olettaa
Kirjaa kummallekin puolelle kolme asiaa: miten ensimmäinen paketti saavuttaa vertaiskoneen, kumpi puoli voi hyväksyä kuljetuksen ja mitä kumpikin puoli vahvistaa toisesta.
Ne oletukset ovat suunnitelma. Direktiivit ovat vain niiden kirjoitusasu.
Jos kaksi tiedostoa eroavat, tarkista ilmaisevatko ne eri oletuksia sen sijaan, että olettaisit toisen olevan väärin. Symmetrinen tiedostopari ei ole toimivalle tunnelille välttämätön eikä riittävä, ja epäsymmetria on usein se osa, joka saa topologian toimimaan.