Kontti ei avannut tunneliaan, joten etuoikeutettu lippu lisättiin, ja nyt se toimii. Tuo sarja osoitti vain, että vähintään yksi käyttöoikeus puuttui, eikä se kerro mitään siitä mikä. Etuoikeutettu tila antaa joukon kyvykkyyksiä ja laitekäyttöoikeuden, joka on paljon laajempi kuin tunnelirajapinta tarvitsee.

Mitä lippu oikeastaan muuttaa

Etuoikeutettu kontti saa laajat kyvykkyydet ja pääsyn isäntäkoneen laitteisiin, mikä on paljon suurempi myönnytys kuin verkkopolku vaatii. Tarkan joukon dokumentoi suoritusympäristö, ei perimätieto, ja Dockerin dokumentaatio konttien suorittamisesta kuvaa käytettävissä olevat etuoikeusvaihtoehdot. Yksi lukukerta riittää siihen, että näkee tunnelin olevan pieni osa kokonaisuutta.

Kaksi kapeampaa vaatimusta kattaa useimmat VPN-kontit. Rajapinnan määrittäminen vaatii verkonhallintakyvykkyyden, ja tunnelilaitteen avaaminen vaatii pääsyn juuri siihen laitesolmuun. Ne ovat erillisiä myönnytyksiä, ja molemmat yhdessäkin ovat kapeampia kuin yleinen vaihtoehto. Etuoikeutetun joukon lopulla ei ole mitään tekemistä tunnelin kanssa. Se on olemassa työkuormille, jotka todella tarvitsevat pääsyn isäntätasolla, eikä VPN-kontti yleensä ole yksi niistä.

Sovita jokainen virhe yhteen edellytykseen

Virheilmoitus kertoo, mikä edellytys puuttuu, jos luet sen ennen sen tukahduttamista. Ilmoitus laitesolmusta nimeää laitteen, ilmoitus kielletystä toiminnosta nimeää kyvykkyyden ja ilmoitus moduulista tai sysctlistä nimeää ytimen tuen. Jokaisella niistä on eri korjaus, ja vain yksi niistä on kyvykkyys.

Puuttuva asetustiedosto pysyy puuttuvana sen jälkeen, kun jokainen kyvykkyys on myönnetty, minkä vuoksi etuoikeutettu tila ei joskus muuta yhtään mitään. Kontti käynnistyy, tunneli epäonnistuu edelleen, eikä todellinen virhe koskaan liittynyt käyttöoikeuksiin. Ytimen tuki on kolmas tapaus ja helpoimmin väärin luettu. Moduulia, jota ei ole ladattu isäntäkoneelle, ei voi ladata etuoikeudettoman kontin sisältä, eikä useampien kyvykkyyksien myöntäminen kontin sisällä muuta isäntäkoneen tilaa.

Tarkista vaatimus, älä oire

Aloita minimaalisesta kutsusta, jonka image dokumentoi, suorita se ja tallenna tarkka epäonnistumisteksti. Lisää sitten yksi myönnytys kerrallaan ja merkitse muistiin, mikä lisäys muutti tulosta.

ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun image:tag
ip -br link show type tun

Kontti, joka näkee laitteen ja pitää kyvykkyyden mutta epäonnistuu silti, kertoo sinulle ongelman olevan muualla. Se on hyödyllinen tulos, ja etuoikeutettu tila olisi kätkenyt sen.

Tarkista myös laitteen käyttöoikeudet isäntäkoneella, koska oikein myönnetty laitesolmu väärällä ryhmän omistuksella tuottaa saman virheen kuin puuttuva myönnytys.

Kirjaa kapein toimiva myönnytys

Kirjoita ylös jokainen laite ja kyvykkyys, jonka käyttöönotto tarvitsee, sekä virhe, joka sen oikeutti. Juuri tämä kirjaus mahdollistaa seuraavan henkilön poistaa jotain turvallisesti, ja juuri sitä auditoija pyytää, kun kontti raportoidaan etuoikeutetuksi.

Käy läpi myös ympäröivä konteksti, koska isäntäverkko, isännän liitokset ja suoritusympäristön vaihtoehdot voivat kukin laajentaa myönnytyksen vaikutusta. Eristetty laboratoriokutsu, joka yhdistää ne kaikki, ei ole tuotantoasetelma, niin hyvin kuin se toimikin. Testaa sovellus, sen DNS-käyttäytyminen ja tunnelin epäonnistuminen ennen kuin kutsut käyttöönoton valmiiksi. Käyttöoikeus rajapinnan luomiseen ei ole lähtöpolitiikka, ja kontti, joka osaa tunneloida täydellisesti, reitittää silti kaiken, mitä sovellus lähettää.

Aiheeseen liittyvät artikkelit