L2TP, GRE vai IPsec: minkä kerroksen pitäisi kuljettaa istunto?
L2TP kuljettaa PPP-istuntoja, GRE reititettyjä paketteja, IPsec suojaa valitun liikenteen. Anna jokaiselle kerrokselle yksi tehtävä ja tarkista jokainen erikseen.
Kaksi kysymystä sotkeutuvat aina, kun L2TP, GRE ja IPsec päätyvät samaan suunnittelumuistioon: mitä istuntoa kuljetan ja mikä kerros suojaa sitä? Jos ensimmäinen menee väärin, kaikki alavirrassa pysyy sisäisesti johdonmukaisena samalla kun ratkaistaan väärää ongelmaa — reititetty päällekkäisverkko rakennetaan sinne, missä käyttäjien piti soittaa sisään, tai sisäänsoittokeskitin korvaa sivustojen välisen yhdyskäytävän. Alla oleva työarkki pakottaa tämän erottelun ennen kuin kukaan kirjautuu laitteeseen. Täytä se järjestyksessä, ja jokaisesta rivistä tulee jotain, mitä voit testata erikseen.
Aloita istunnosta, älä protokollaluettelosta
PPP-istuntoa pitävä etäkäyttäjä ja kahden yhdyskäytävän välinen reititetty päällekkäisverkko ovat erilaisia verkkosuhteita, vaikka molemmat lopulta kääritään IPsecin sisään. Ensimmäinen päättää käyttäjäkohtaisen linkin ja tarvitsee osoitteiden jakamisen, henkilön tai laitteen todennuksen ja käytännön, joka nimeää ne sisäverkot, joihin käyttäjä saa päästä. Jälkimmäinen välittää paketteja sivustojen välillä, joihin kukaan ei soita sisään.
Kirjoita yksi lause, joka nimeää, kumman kahdesta rakennat, ja lue se sitten ikään kuin olisit henkilö, jonka on ylläpidettävä sitä. Jos lause tarvitsee sanan ”ja”, rakennat molempia, ja työarkki tarvitsee kaksi saraketta yhden kompromissisarakkeen sijaan, joka palvelee kumpaakin puoliksi. Jos se nimeää käyttäjän mutta ei osoitepoolia, tai etuliitteen mutta ei välityskäytäntöä, lause on yhä vaillinainen. Sanamuoto kuulostaa byrokraattiselta, mutta se on halvin paikka napata suunnitelma, jonka muuten löytäisi tukipalvelun tiketti.
Anna jokaiselle kerrokselle täsmälleen yksi tehtävä
L2TPv2 kuljettaa PPP-istuntoja kahden päätepisteensä välillä. PPP hoitaa linkkineuvottelun ja, kun se neuvotellaan, käyttäjän todennuksen; L2TP ei lisää mitään salausta, joten pelkkä L2TP-taustaohjelma ei toteuta mitään osaa IPsec-turvasuhteesta ja kuuluu vain sellaisen linkin sisään, johon jo luotat.
GRE on kahden osoitteen välinen kapselointi. Se kuljettaa verkkokerroksen paketteja loogisen päällekkäisverkon yli eikä sinällään tarjoa luottamuksellisuutta eikä todennettua vertaisidentiteettiä. Se ei ole vika: otsikko suunniteltiin yksinkertaiseksi, jotta se pysyy halpana käsitellä välityslaitteistolla. Seuraus on, että GRE vastaa kysymykseen ”miten siirrän tämän paketin kahden osoitteen välillä” eikä mihinkään muuhun — juuri siihen kysymykseen, joka sille pitää esittää.
Niinpä IPsec jää kerrokseksi, joka valitsee liikenteen, todentaa vertaiset ja salaa sen, mitä sen käskettiin suojata. Se, mitä liikennettä se suojaa, on kokoonpanopäätös, jonka on vastattava kapselointia, jonka päätepisteet todella tuottavat, koska GRE:n ulkoiselle osoitteelle kirjoitettu käytäntö käyttäytyy eri tavalla kuin sisäisille etuliitteille kirjoitettu. GRE-määritys pitää hyötykuorman, GRE-otsikon ja ulkoisen toimitusprotokollan näkyvästi erillään, ja käytäntösi tarvitsee saman erottelun.
| Layer | Its one job | What it never does |
|---|---|---|
| PPP | Link negotiation, optional user authentication, address assignment | Protect traffic between gateways |
| L2TPv2 | Carry the PPP session between two endpoints | Encrypt or authenticate peers |
| GRE | Encapsulate network-layer packets between two addresses | Hide or authenticate the payload |
| IPsec | Authenticate peers and encrypt selected traffic | Carry a dial-in user session by itself |
Kirjoita paketin polku ennen kokoonpanoa
Ota yksi paketti ja luettele jokainen lisättävä otsikko siinä järjestyksessä, jossa se lisätään, ja nimeä laite, joka sen lisää. Sisäänsoittajalle se on yleensä PPP L2TP:n sisällä ja se IPsecin sisällä; sivuston päällekkäisverkossa sisempi IP-paketti GRE:n sisällä ja GRE IPsecin sisällä. Jos kaksi laitetta lisää saman otsikon, sinulla on silmukka tai kahdennettu tunneli, eikä mikään käytännön muokkaus korjaa sitä.
Sama luettelo ratkaisee MTU:n, koska käyttökelpoinen sisempi koko on mitattu polun MTU miinus juuri luettelemasi otsikot eikä mitään muuta. Älä kopioi lukua foorumiviestistä: laske yhteen ulkoisen IP:n, UDP:n ja ESP:n ylikuorma, sitten GRE tai L2TP, sitten PPP missä se pätee, ja vähennä se polun MTU:sta, jonka todella mittasit. Vain suurilla siirroilla ilmenevät oireet tai istunnot, jotka muodostuvat ja kuolevat ensimmäiseen suureen vastaukseen, johtuvat yleensä siitä, että tämä yhteenlasku tehtiin arvaamalla.
Tarkista jokainen kerros erikseen, ulkoa sisään
Suorita tarkistukset järjestyksessä ja pysähdy ensimmäiseen, joka epäonnistuu. Jokainen rivi vastaa eri kysymykseen, joten vika osoittaa työarkin sarakkeeseen sen sijaan, että se kertoisi tunnelin olevan rikki.
ip xfrm state # is the IPsec SA up?
ip -s link show gre1 # does the overlay interface carry packets?
ip route get 10.20.0.5 # does the inner prefix route where you think?
ss -lun | grep -E "1701|4500" # are the L2TP and NAT-T listeners bound?
Cisco-laatikossa vastaava riippuu roolista, ja tarkka syntaksi riippuu alustasta ja versiosta: show crypto session IPsec-vertaisille, liitäntälaskurit GRE- tai tunneliliitännälle ja VPDN- tai PPP-tarkistus sisäänsoittoroolille. PPP:n lopettava komentosarja ei todista mitään GRE-tuesta, eikä toimiva GRE-liitäntä todista mitään PPP-palvelusta, joten tarkista rooli, jonka todella määritit, et kaaviossa olevaa.
Kirjaa jokainen tuloste sen työarkkirivin viereen, johon se kuuluu. Vian ollessa päällä tehdyt muistiinpanot ovat arvokkaampia kuin topologia, joka piirretään jälkeenpäin muistista.
Järjestä purku ja tarkista sitten uudelleen
Purku etenee käänteisessä järjestyksessä syystä: poista suojattu liikenne IPsec-käytännöstä ennen kuin poistat kapseloinnin, jota varten käytäntö kirjoitettiin, muuten käytäntö osoittaa yhä liitäntään, jota ei enää ole, ja seuraava kokoonpanon lataus epäonnistuu jossain, mikä näyttää liittymättömältä. Linuxissa se tarkoittaa tila- ja käytäntömerkintöjen poistamista ennen tunneliliitäntää; reitittimessä crypto map- tai profile-merkinnän poistamista ennen tunnelia.
Uudelleenrakennuksen jälkeen toista neljä hyväksyntähavaintoa yksi kerrallaan: ulkoinen tavoitettavuus, muodostettu IPsec-yhteys, muodostettu PPP-istunto silloin kun suunnitelma sisältää sellaisen, ja sisäinen välitys todelliseen kohdeosoitteeseen. Yksi vihreä valo ei ole todiste kolmesta muusta, ja tuo aukko on tuotannossa pisimpään elävä vika — tunneli, joka on ylhäällä, salattu eikä välitä mitään, koska sisäistä reittiä ei koskaan lisätty.
Pidä täytetty työarkki laitteen kokoonpanon vieressä. Jokainen sarake, jota et voi täyttää, on kerros, jolle ei ole annettu tehtävää, ja kerros ilman tehtävää on yleensä kerros, jonka ei pitäisi olla pinossa.