OpenVPN na VPS: žádné zařízení /dev/net/tun k otevření
Konfigurace je obvykle v pořádku: host nevidí zařízení tun. Rozlište VM od kontejneru se sdíleným jádrem a pak opravte vrstvu, která jádro vlastní.
První spuštění selže se zprávou o /dev/net/tun nebo zařízení TUN/TAP, které nelze otevřít. Certifikáty ještě nebyly přečteny, takže nic v profilu není podezřelé. Démon žádá jádro o objekt, který tento host nemá.
Tím objektem je znakové zařízení podporované modulem tun. Zda ho můžete vytvořit, závisí na tom, kdo vlastní jádro.
Co démon žádá od jádra
OpenVPN otevře /dev/net/tun a požádá ovladač o rozhraní. Ovladačem je modul tun a uzel zařízení je rukojeť, kterou uživatelský prostor používá, aby se k němu dostal. Pokud modul není zaveden, uzel může chybět nebo otevření může selhat. Ani jeden z těchto stavů se neopraví úpravou server.conf.
Čtěte chybu nejprve jako otázku platformy. Chyba konfigurace se objeví po otevření zařízení, ne před ním.
VM nebo host se sdíleným jádrem
Na KVM, Xen nebo jiném plném virtuálním stroji jádro ovládáte vy. Můžete zavádět moduly a vytvořit uzel. Na OpenVZ, Virtuozzo nebo kontejneru ve stylu LXC host sdílí jádro fyzického serveru, takže root uvnitř nemůže zavést modul, který hostitel nezavedl.
Stejná chyba má tedy dva velmi různé vlastníky. V prvním případě ji můžete opravit zevnitř instance. Ve druhém žádáte hostitele nebo poskytovatele, aby něco zpřístupnil.
Spusťte ls -l /dev/net/tun, lsmod | grep tun a ip -brief link show, než se rozhodnete, ve kterém případě jste.
Na VM zavádějte modul při startu
Na virtuálním stroji modprobe tun obvykle vytvoří uzel zařízení. Zkontrolujte, že se objeví, a pak zaveďte modul trvale pomocí konfigurace modulů distribuce, místo abyste spoléhali na příkaz zadaný jednou. Uzel, který po restartu zmizí, se příští měsíc stane stejným tiketem.
Zkontrolujte také, zda jádro, které jste zavedli, modul vůbec obsahuje. Odlehčené jádro od dodavatele ho může postrádat.
Pokud uzel existuje, ale otevření stále selhává, dalšími podezřelými jsou oprávnění a čísla major/minor zařízení. To jsou místní opravy, ne žádosti poskytovateli.
V kontejneru zařízení vlastní hostitel
V kontejneru jsou zařízení a schopnost dva oddělené požadavky. Runtime musí propustit /dev/net/tun a kontejner potřebuje síťovou schopnost k vytvoření rozhraní. Bezrootový runtime, který nedá ani jedno, bude produkovat stejnou chybu otevření, ať je profil napsán jakkoli. Mnoho hostitelů OpenVZ nabízí v zákaznickém panelu přepínač TUN/TAP a jeho zapnutí plus restart je často celé řešení.
Zeptejte se poskytovatele na dvě přesné otázky: je modul tun zavedený na hostiteli a je zařízení dostupné uvnitř této instance? Nejasný tiket dostane nejasnou odpověď.
Proč přestavba modulu málokdy pomůže
Sestavení modulu uvnitř hosta málokdy pomůže. Kompilace potřebuje konfiguraci přesně běžícího jádra a /proc/config.gz je volitelný a na minimálních obrazech často chybí. Ani funkční modul nelze vložit do jádra, které kontejner nevlastní.
Až se zařízení objeví, restartujte službu a potvrďte rozhraní, než otestujete provoz. Pohled na tun0 ukazuje, že démon zařízení otevřel. O přesměrování, pravidlech firewallu nebo trasách, které klienti dostávají, to zatím nic neříká.
To jsou oddělené otázky s oddělenými důkazy. Chybějící zařízení je nesplněný předpoklad; tunel, který existuje, ale nic nenese, je selhání politiky.