Эхний асаалт /dev/net/tun эсвэл нээгдэхгүй TUN/TAP төхөөрөмжийн тухай мессежтэй бүтэлгүйтдэг. Гэрчилгээг хараахан уншаагүй тул профайлд ямар ч буруу байхгүй. Демон цөмөөс энэ зочинд байхгүй объектыг гуйж байна.

Тэр объект нь tun модулиар хангагддаг тэмдэгт төхөөрөмж юм. Та үүнийг үүсгэж чадах эсэх нь цөмийг хэн эзэмшиж байгаагаас хамаарна.

Демон цөмөөс юу гуйдаг вэ

OpenVPN нь /dev/net/tun нээж, драйверээс интерфэйс гуйдаг. Драйвер нь tun модуль, төхөөрөмжийн зангилаа нь хэрэглэгчийн орон зай түүнд хүрэх бариул юм. Модуль ачаалагдаагүй бол зангилаа байхгүй эсвэл нээх үйлдэл бүтэлгүйтэж болно. Хоёр тохиолдлыг ч server.conf засварлаж засахгүй.

Энэ алдааг эхлээд платформын тухай асуулт гэж уншаарай. Тохиргооны алдаа төхөөрөмж нээгдсэний дараа гардаг, урьд нь биш.

VM эсвэл цөмийг хуваалцсан зочин

KVM, Xen эсвэл өөр бүрэн виртуал машинд цөмийг та өөрөө удирдана. Модуль ачаалж, зангилаа үүсгэж болно. OpenVZ, Virtuozzo эсвэл LXC хэв маягийн контейнерт зочин хостын цөмийг хуваалцдаг тул доторх root нь хост ачаалаагүй модулийг ачаалж чадахгүй.

Тиймээс ижил алдаа нь хоёр тэс өөр эзэнтэй. Эхний тохиолдолд та үүнийг инстансын дотроос засаж болно. Хоёр дахьд нь хост эсвэл үйлчилгээ үзүүлэгчээс ямар нэг зүйлийг ил гаргахыг гуйж байна.

Аль тохиолдолд байгаагаа шийдэхийн өмнө ls -l /dev/net/tun, lsmod | grep tun, ip -brief link show ажиллуулаарай.

VM дээр модулийг ачаалах үед ачаалаарай

Виртуал машин дээр modprobe tun ихэвчлэн төхөөрөмжийн зангилаа үүсгэдэг. Түүний гарч ирснийг шалгаад, дараа нь нэг удаа бичсэн команд дээр найдaхгүйгээр түгээлтийн модулийн тохиргоогоор ачааллыг байнгын болгоорой. Дахин ачаалсны дараа алга болдог зангилаа дараа сард мөн ижил тикет болдог.

Мөн таны ачаалсан цөмд энэ модуль ерөнхийдөө байгаа эсэхийг шалгаарай. Таслагдсан нийлүүлэгчийн цөмд энэ байхгүй байж болно.

Зангилаа байгаа боловч нээх үйлдэл бүтэлгүйтсээр байвал дараагийн сэжиглэл нь зөвшөөрөл болон төхөөрөмжийн major/minor дугаар юм. Эдгээр нь локал засвар, үйлчилгээ үзүүлэгчид тавих хүсэлт биш.

Контейнерт төхөөрөмж нь хостын эзэмшилд

Контейнерт төхөөрөмж ба боломж нь хоёр тусдаа шаардлага. Runtime нь /dev/net/tun дамжуулах ёстой, контейнерт интерфэйс үүсгэхийн тулд сүлжээний боломж хэрэгтэй. Хоёуланг нь өгөхгүй rootless runtime профайлыг хэрхэн бичсэн ч ижил нээх алдааг гаргасаар байна. Олон OpenVZ хост хэрэглэгчийн панелд TUN/TAP унтраалга санал болгодог бөгөөд түүнийг асааж дахин ачаалах нь ихэвчлэн бүх шийдэл болдог.

Үйлчилгээ үзүүлэгчээс хоёр тодорхой асуулт асуугаарай: хост дээр tun модуль ачаалагдсан уу, энэ инстансын дотор төхөөрөмж боломжтой юу? Бүрхэг тикет бүрхэг хариулт авдаг.

Модулийг дахин бүтээх нь яагаад ховор тусалдаг вэ

Зочны дотор модуль бүтээх нь ховор тусалдаг. Компайл хийхэд яг ажиллаж буй цөмийн тохиргоо хэрэгтэй бөгөөд /proc/config.gz нь заавал биш бөгөөд хамгийн бага образд ихэвчлэн байдаггүй. Ажиллаж буй модулийг ч контейнер эзэмшдэггүй цөмд оруулж болохгүй.

Төхөөрөмж гарч ирсний дараа үйлчилгээг дахин ачаалж, трафик туршихаас өмнө интерфэйсийг баталгаажуулаарай. tun0 харагдах нь демон төхөөрөмжийг нээснийг харуулна. Энэ нь дамжуулалт, галт ханын дүрэм эсвэл клиентүүдийн авах маршрутын тухай хараахан юу ч хэлэхгүй.

Эдгээр нь тус тусын нотолгоотой тусдаа асуултууд юм. Төхөөрөмж байхгүй байх нь урьдчилсан нөхцөлийн алдаа; байгаа ч юу ч зөөдөггүй туннель нь бодлогын алдаа.

Холбоотой нийтлэлүүд