LXD weist dem Container en Zeechenapparat vum Host, andeem en en Apparatknuet bäisetzt, an net andeem en dem Gaascht bäibréngt, een zeerschafen. Wann de Container keen /dev/net/tun huet, kann den Host den Apparat hunn an de Gaascht en trotzdem net opmaachen. Den unix-char-Andrag ass d'Verwalterssäit vun dësem Wee, an en ass bewosst méi schmuel wéi en privilegiéierte Container. Dofir verdéngen den Hostknuet an de Containerknuet getrennte Kontrollen.

De Mechanismus ass kuerz genuch fir en am Bléck ze halen: LXD léist en Hostwee op, schaaft en entspriechende Knuet an der Instanz an setzt den Apparat an d'Apparat-cgroup vum Container. Duerno brauch de Gaaschtprozess seng eege Erlaabnes a Fäegkeet, fir de Knuet fir eppes ze benotzen.

Wat den unix-char-Andrag wierklech ännert

En unix-char-Apparat seet LXD, een Zeechenapparat vum Host op engem gewielte Wee am Container ze weisen. Den Andrag huet dräi wichtege Deeler: d'Apparatetiquette vum Verwalter, de Wee source um Host an de path, deen de Gaascht gesäit. Nëmmen déi lescht zwou beschreiwen den Apparat selwer. En Tippfehler an engem vun deenen zwee produzéiert e Knuet op enger Plaz, déi de Client ni opmécht.

Um Host ass den Apparat normalerweis /dev/net/tun. Am Container kënnt Dir dee selwechte Wee halen oder en aneren auswielen, awer de Wee muss zum VPN-Client sengen Erwaardunge passen. /dev/net/tun ze halen vermeit en zweete Konfiguratiounsproblem, well déi meescht Cliente sou ee Wee ouni ze froen opmaachen.

De Verwalter setzt den Andrag ëm, wann d'Instanz start oder wann den Apparat waarm ugeschloss gëtt. En kopéiert keen Treiber an de Gaascht an et mécht keng Tunnel-Interface. En mécht de Knuet sichtbar an erlaabt den Zougang iwwer dem Container seng Apparatekontrollgrupp.

Deklareiert den Apparat op der Instanz, net am Gaascht

Setzt den Andrag aus dem LXD-Verwaltungskontext bäi, mat der Instanz an enger Etiquette, déi Dir spéider erkennt. Fir en Container mam Numm vpnbox ass de Befehl:

lxc config device add vpnbox tun unix-char source=/dev/net/tun path=/dev/net/tun
lxc config device show vpnbox

D'Etiquette tun ass lokal fir d'Konfiguratioun vun der Instanz. Et ass keen Interface-Numm an et muss zu näischt am Gaascht passen. Wann e Profil schonn deen selwechten Apparat liwwert, schaaft en zweete Andrag e Konflikt an net eng Redundanz, dofir kuckt iech d'effektiv Konfiguratioun fir d'éischt un.

Fichieren am Container z'änneren ass déi falsch Schicht. En mknod an engem Startskript kann op engem privilegiéierte Container schaffen a schlussendlech bei der Neiopbau verschwannen oder op engem manner privilegiéierte scheeteren. De Verwalter besëtzt den Apparateset vun der Instanz; loosst en och de Knuet besëtzen.

Passt Proprietéit a Modus un de Gaaschtprozess un

Den unix-char-Andrag kann uid, gid an mode fir de Knuet am Container setzen. Benotzt se, fir zum Kont ze passen, dee de VPN-Client lafe léisst, amplaz den Apparat fir all Benotzer opzemaachen oder de Container an de privilegiéierte Modus ze schalt.

Sichtbarkeet ass net datselwecht wéi Erlaabnes. E Knuet am Besëtz vu root mam Modus 600 ass sichtbar fir de Service, dee als net-privilegiéierte Benotzer leeft, an ass trotzdem net vun him opzemaachen. Kuckt fir d'éischt de Gaaschtkont, setzt dann d'Proprietéit op dee Kont an hält de Modus net méi breet wéi de Client en brauch.

De Prozess brauch och d'Fäegkeet, eng Tunnel-Interface ze konfiguréieren, typesch CAP_NET_ADMIN am Netzwierknummraum vum Container. Den Apparat duerchzeginn gëtt déi Fäegkeet net, an d'Fäegkeet ze ginn liwwert den Apparat net; dat sinn onofhängeg Fuerderungen.

Wësst wat den Andrag net gëtt

En sichtbare Knuet ass keng VPN déi funktionéiert. De Clientpak muss nach installéiert ginn, de Profil muss nach gülteg sinn an de Service muss nach starten. Authentifikatioun, Routen an DNS bleiwen dem Client seng Aarbecht, an e Feeler do ass keng Beweis datt den Apparat-Andrag falsch ass.

systemd kann eng weider Aschränkung bäisetzen. Eng Eenheet mat DeviceAllow oder enger gehäerter Apparatepolitik kann den Zougang zu engem Knuet verweigeren, deen de Containervalwter geliwwert huet. Kuckt d'Apparatepolitik vun der Eenheet, wann de Knuet existéiert awer de Service e Berechtegungsfeeler mellt, a ännert déi Politik amplaz de Container ze vergréisseren.

Waarm Uschloss ass optional an ausdrécklech. En Andrag mat required=false brauch e Quellwee a kann erschéngen oder verschwannen, wéi sech den Hostapparat ännert. Dee Liewenszyklus passt zu Hardware déi kënnt an geet; fir en TUN-Apparat deen d'VPN beim Start brauch, kann en optionale Andrag de Service starten loossen ier seng Viraussetzung existéiert.

Iwwerpréift Sichtbarkeet, Opmaachen an Interface an deem Uerdnung

Bestätegt fir d'éischt de Knuet am virgesinnene Container. De Wee, d'Haapt- an d'Niwenennummer an d'Proprietéit solle mam Hostapparat an dem Andrag passen, deen Dir bäigesat hutt. E fehlende Knuet heescht, datt de Verwalter den Andrag net ëmgesat huet oder en op eng aner Instanz ëmgesat huet.

lxc exec vpnbox -- ls -l /dev/net/tun
lxc exec vpnbox -- sh -c 'test -c /dev/net/tun && echo char-device-ok'

Bestätegt duerno, datt de Servicekont en opmaache kann. En kuerzen Test als dee Kont trennt e Proprietéitsproblem vun engem Serviceproblem. Start schlussendlech de Client a bestätegt, datt eng Tunnel-Interface erschéngt; nëmmen deen drëtte Schrëtt beweist de ganze Wee, well déi éischt zwee kënnen duerchgoen, während de Clientprofil oder d'Fäegkeet nach falsch ass.

Notéiert d'Instanz, d'Apparatetiquette, d'Hostquell, de Gaaschtwee an de Besetzerkont, wann d'Ännerung guttgeheescht gëtt. Déi fënnef Wäerter sinn dat, wat eng spéider Neiopbau, Migratioun oder Profilännerung musse behalen, an se si vill méi einfach ze vergläiche wéi e Berechtegungsfeeler ouni Kontext.

Ähnlech Artikelen