Першы запуск выходзіць з памылкай пра /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 звычайна стварае вузел прылады. Праверце, што ён з'явіўся, затым зрабіце загрузку пастаяннай праз канфігурацыю модуляў дыстрыбутыва, а не спадзявайцеся на каманду, набраную адзін раз. Вузел, які знікае пасля перазагрузкі, ператвараецца ў тую ж заяўку наступным месяцам.

Праверце таксама, ці мае ядро, якое вы загрузілі, модуль наогул. Урэзанае ядро пастаўшчыка можа яго не мець.

Калі вузел існуе, але адкрыццё ўсё яшчэ не ўдаецца, наступныя падазраваныя — правы і нумары major/minor прылады. Гэта лакальныя выпраўленні, а не запыты да правайдэра.

У кантэйнеры прыладай валодае хост

У кантэйнеры прылада і магчымасць — дзве асобныя патрабаванні. Runtime павінен прапускаць /dev/net/tun, а кантэйнеру патрэбна магчымасць сеткі, каб стварыць інтэрфейс. Rootless runtime, які не дае ні таго, ні іншага, будзе выдаваць тую ж памылку адкрыцця, як бы ні быў напісаны профіль. Многія хасты OpenVZ паказваюць пераключальнік TUN/TAP у панэлі кліента, і ўключэнне яго разам з перазапускам часта і ёсць усё рашэнне.

Спытайце ў правайдэра два дакладныя пытанні: ці загружаны модуль tun на хосце і ці даступная прылада ўнутры гэтай інстанцыі? Расплывістая заяўка атрымлівае расплывісты адказ.

Чаму перазборка модуля рэдка дапамагае

Зборка модуля ўнутры госця рэдка дапамагае. Кампіляцыі патрэбна канфігурацыя менавіта працуючага ядра, а /proc/config.gz неабавязковы і часта адсутнічае на мінімальных вобразах. Нават працоўны модуль нельга ўставіць у ядро, якім кантэйнер не валодае.

Пасля з'яўлення прылады перазапусціце службу і пацвердзіце інтэрфейс, перш чым тэставаць трафік. Бачанне tun0 паказвае, што дэман адкрыў прыладу. Гэта пакуль нічога не кажа пра перанакіраванне, правілы firewall або маршруты, якія атрымліваюць кліенты.

Гэта асобныя пытанні з асобнымі доказамі. Адсутная прылада — папярэдняя ўмова не выканана; тунэль, які існуе, але нічога не нясе, — гэта правал палітыкі.

Падобныя артыкулы