OpenVPN на VPS-у: нема /dev/net/tun уређаја за отварање
Конфигурација је обично у реду: гост не види tun уређај. Разликујте VM од контејнера са дељеним језгром, па поправите слој који поседује језгро.
Прво покретање пада са поруком о /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 правилима или рутама које клијенти добијају.
То су одвојена питања са одвојеним доказима. Недостајући уређај је неуспех предуслова; тунел који постоји али ништа не преноси је неуспех политике.