Cron käynnistää täysin terveen VPN:n uudelleen joka kymmenes minuutti, ja sama työ jättää kuolleen VPN:n käyntiin viikoksi. Molemmat viat tulevat siitä, että «pystyssä» kohdellaan yhtenä tosiasiana, vaikka se on vähintään neljä. Laite voi olla hallinnollisesti käytössä, oikein reititetty, täysin salattu ja silti kuljettaa mitään hyödyllistä. Erottele havainnot ensin, ja tarkistus kirjoittaa itsensä melkein.

Linkin liput kuvaavat laitetta, eivät polkua

Tarkistus, jonka kaikki kopioivat, etsii laitteisto-osoitetta, joka koostuu pelkistä nollista. Temppu erottaa joissakin ajureissa aidon rajapinnan paikkamerkistä ja muissa ei todista mitään, koska tun-laitteella ei ole lainkaan MAC-osoitetta raportoitavaksi. ip -brief link show tun0 antaa sen sijaan liput: UP tarkoittaa, että järjestelmänvalvoja otti laitteen käyttöön, ja LOWER_UP tarkoittaa, että ajuri pitää linkkiä käyttökelpoisena. Yhdessä luettuina ne kertovat, että laite on olemassa eikä ole hallinnollisesti suljettu. Kumpikaan ei kerro, että paketilla olisi minne mennä.

OpenVPN luo tun-laitteensa ennen kuin reitit asennetaan, joten liput voivat näyttää täydellisiltä, vaikka mitään ei ole reititetty. Kohtele niitä edellytyksenä, älä koskaan vastauksena.

Kysy, minne paketti menisi

Reittihaku vastaa kysymykseen, johon liput eivät pysty. ip route get 10.8.0.1 from 10.8.0.2 nimeää rajapinnan, lähdeosoitteen ja taulukon, jota ydin käyttäisi, ja se on täsmälleen se, mitä vasten jaettua tunnelia on tarkistettava. Ilman lähdeosoitetta kysyt jotain muuta, ja käytäntöperusteisessa reitityksessä vastaus voi vaihdella lähteen mukaan. Tämä on halvin rehellinen testi, koska se tarkistaa samat säännöt, joita liikenteesi käyttää.

WireGuardissa lisää kättely. wg show tulostaa viimeisimmän kättelyn aikaleiman joka vertaiselle, ja aikaleima, joka on lakannut etenemästä, tarkoittaa, että vertainen on kadonnut, mitä rajapinnan liput sanovatkin. Määritetty rajapinta ilman tuoretta kättelyä on yksi tavallisimmista virheellisistä hälytyksistä kotitekoisessa valvonnassa.

Taulukko 220 kertoo IPsecin tarinan

strongSwan asentaa neuvoteltujen valitsimien reitit taulukkoon 220, kun reittien asennus on käytössä. ip route list table 220 erottaa siis neuvotellun reititetystä: tyhjä taulukko ladatun yhteyden vieressä tarkoittaa, että IKE- ja CHILD-SA:t nousivat, mutta mitään liikennettä ei ohjata niihin. Tarkista ip xfrm state sen vierestä, sillä se luettelee asennetut turva-assosiaatiot ja niiden päätepisteet.

Anssipolitiikka on tapaus, jota kannattaa varoa. Se odottaa kiinnostavaa liikennettä sen sijaan, että reitittäisi sitä, joten taulukko pysyy tyhjänä, kunnes jokin laukaisee tunnelin.

Hallinnan tila ja daemonin tila ovat eri listoja

NetworkManager luettelee vain omistamansa yhteydet. nmcli -t -f NAME,TYPE connection show --active ei palauta mitään tunnelille, jonka käynnisti suoraan wg-quick tai OpenVPN-daemon.

Tämä ero on tärkeä, kun skriptin on päätettävä, kummaltako kahdelta hallinnalta kysyä. Valitse se, joka todella omistaa tunnelin tällä koneella, ja jätä toisen hiljaisuus huomiotta. Jos molemmat ovat olemassa, päätä kumpi on valtuutettu ja poista toinen käytöstä, sillä kaksi hallintaa, jotka kirjoittavat reittejä uudelleen yhdellä rajapinnalla, tuottavat vikoja, joita kukaan ei voi toistaa. Puuttuva merkintä on tietoa hallinnasta, ei tunnelista.

Tee seuraavasta vaiheesta riippuvainen tarkistuksesta, jonka se tarvitsee

UDP-portin kysely ei todista mitään valmiudesta, koska UDP:llä ei ole kättelyä ja nc -u onnistuu heti, kun paketti lähtee. Tutki, mitä seuraava vaihe todella kuluttaa: TCP-yhteys edelleenohjattuun porttiin, pyyntö tunnelin sisäiseen koneeseen, nimi, joka ratkeaa vain siellä. Rajaa odotus aikakatkaisulla ja yritysten määrällä, ja epäonnistu äänekkäästi, kun se loppuu.

Koukut ovat kyselyä parempia, kun asiakas tarjoaa niitä. --up ja --down skriptit OpenVPN:stä ajetaan, kun rajapinta vaihtaa tilaa, mikä poistaa kilpajuoksun kokonaan, mutta ne ajetaan oikeuksilla, jotka daemon on säilyttänyt. Jos OpenVPN on pudonnut ei-juurelliseen tilille user ja group kautta, koukku ajetaan kyseisenä tilinä. Järjestelmäpalvelun uudelleenkäynnistys vaatii silloin sudon, joka sallii täsmälleen sen komennon. Anna uudelleenyritys palvelunhallinnalle cron-silmukan sijaan: rajoitettu uudelleenkäynnistyskäytäntö käynnistysrajalla paljastaa rikkinäisen tunnelin, kun taas rajaton silmukka piilottaa sen loputtomasti.

Aiheeseen liittyvät artikkelit