WireGuard v LXC ali VM na Proxmoxu: kje naj teče?
WireGuard lahko teče na gostitelju Proxmox, v vsebniku ali v VM. Odločilni dejavniki so lastništvo jedra, nadzor nad vmesnikom in obnovitev.
WireGuard potrebuje natanko eno jedro, ki ima v lasti njegov vmesnik, in to dejstvo razreši večino razprave o namestitvi na Proxmoxu, preden zmogljivost sploh pride v pogovor. Vsebnik LXC je pogled imenskega prostora gostiteljevega jedra, medtem ko VM zažene svoje. Zato uporabno vprašanje ni, katera možnost je lažja, ampak katero jedro ste pripravljeni spreminjati in s katero potjo obnovitve lahko živite. Odgovorite na to in izbira med gostiteljem, vsebnikom ali VM se običajno naredi sama.
Gost LXC dela znotraj gostiteljevega jedra
Namestitev wireguard-tools v vsebniku vam da krmilni program, ne zasebnega jedra. Vmesnik wg0, ki ga ustvarite, se registrira v omrežnem skladu gostitelja in se pojavi na njegovem seznamu modulov. Zato lahko vsebnik prestane vse preverbe paketov in vseeno ne uspe pri prvem ukazu wg, ko gostiteljevemu jedru manjka modul. In referenca Proxmoxovih vsebnikov dokumentira ta model deljenega jedra skupaj z mejami imenskega prostora in pravic, znotraj katerih delate.
Pooblastilo je druga omejitev. Dvigniti vmesnik in nanj pritrditi naslove zahteva pravice omrežne administracije znotraj imenskega prostora, ki ga ima v lasti, neprivilegirani vsebnik pa te pravice preslika skozi svoj uporabniški imenski prostor, namesto da bi jih imel neposredno. Nikoli ne segajte po polnih pravicah kot prvem odgovoru; poglejte, kaj se od vsebnika dejansko zahteva, in to podelite.
Gostiteljevo jedro je tudi deljena odvisnost. Posodobitev jedra Proxmox spremeni izvedbo WireGuarda pod vsakim vsebnikom hkrati, kar je priročno, dokler se posodobitev in pričakovanja vsebnika ne razhajajo.
Gostitelj, vsebnik, VM: kaj vsaka namestitev dejansko ima
Namestitev na gostitelju postavi VPN v lastno omrežje hipervizorja. Poti, pravila požarnega zidu in tunel postanejo del obnovitve gostitelja, napaka tam pa lahko odnese tudi vmesnik za upravljanje. To je sprejemljivo za infrastrukturno usmerjanje na gostitelju, do katerega pridete prek konzole, in boleče na oddaljenem stroju brez dostopa zunaj pasu.
Vsebnik drži storitev zapakirano in znova zagnano, medtem ko si še izposoja gostiteljevo jedro. Ustreza namerno skupni storitvi z deljenim jedrom in vam da majhno enoto za ponovno gradnjo. Ne da vam neodvisnega jedra, zato vse, kar potrebuje določeno gradnjo modula, kaže stran od te možnosti.
| Placement | Kernel owner | Typical failure mode |
|---|---|---|
| Proxmox host | Hypervisor | A routing change breaks host management access |
| LXC container | Host kernel, container namespace | Missing capability or missing module at wg0 creation |
| Virtual machine | Guest kernel | Extra maintenance and a second patch cycle |
VM stane več pomnilnika in še en sistem za popravljanje, v zameno pa tunel dobi svoje jedro, svojo usmerjevalno tabelo in mejo posnetka. Ko je VPN tisto, kar po slabi spremembi vrnete nazaj, je ta posnetek vreden dodatne obremenitve.
Trije pogoji, ki izberejo namesto vas
Če tunel potrebuje različico jedra ali funkcijo WireGuarda, ki je gostitelj Proxmox ne ponuja, se ustavite tukaj in uporabite VM. Novejšega jedra v vsebnik ni mogoče namestiti in jedra hipervizorja ne bi smeli zamenjati zaradi enega gosta.
Če je tunel prehodno mesto spletnega mesta za prave predpone LAN, vprašajte, kdo že ima povratno pot. Vsebnik lahko usmerja promet, vendar njegovi vmesniki sedijo v skladu gostitelja, zato gostitelj na koncu nosi del konfiguracije, ne glede na to, ali ste to načrtovali. Namestitev na gostitelju je pri tem poštena; namestitev v vsebniku pogosto ni.
Nato pretehtajte polmer vpliva napake. Ponovni zagon vsebnika je poceni, obnovitev posnetka VM je predvidljiva, popravilo gostiteljevega omrežja pa lahko zahteva fizični ali konzolni dostop. Prava izbira je tista, katere najslabši primer lahko resnično obnovite v uri, ko se zgodi.
Četrto vprašanje je redko odločilno, a vredno povedati: mora še kaj na gostitelju videti vmesnik tunela? Če da, namestitev na gostitelju ali v vsebniku ohrani to vidnost lokalno, medtem ko vas VM prisili v usmerjanje med gostom in gostiteljem.
Dokažite namestitev, preden po njej usmerite promet
Po namestitvi potrdite, katero jedro dejansko streže vmesniku in ali je vsebnik dobil dovolj pooblastil, da ga obdrži:
$ pct config 101 | grep -E 'unprivileged|features'
unprivileged: 1
$ pct exec 101 -- wg show
interface: wg0
listening port: 51820
$ pct exec 101 -- ip -4 addr show wg0
inet 10.60.0.2/24 scope global wg0
Nato preverite stran posredovanja z gostitelja, ker samo rokovanje dokazuje le, da tunel stoji. Uporabite ip route get za naslov odjemalca in potrdite, da se naslednji skok in vmesnik ujemata z zasnovo ter da povratna pot obstaja na drugi strani.
Pustite uvedbo z zapisanim lastnikom: katero jedro nosi izvedbo, kateri imenski prostor drži vmesnik in katere predpone sme prehod posredovati. Ta stavek prepreči več incidentov kot katera koli primerjava treh namestitev po merilih.