Однапред создаден tun во OpenVPN: споредба на двата модели на сопственост
Однапред создадениот tun интерфејс може повторно да се користи, но само една компонента треба да ги поседува неговите адреси и маршрути. Споредете ги двата модели пред да додадете ifconfig-noexec.
Некој однапред создал tun1, профилот вели dev tun1, а врската сѐ уште не се приклучува. Постоењето на името на домаќинот речиси ништо не кажува, бидејќи приклучувањето зависи од именскиот простор, типот на уредот, од тоа кој ја поседува врската и што му е дозволено на демонот. Повторното користење на уред, исто така, наметнува одлука што стандардната конфигурација ја крие: која компонента ги пишува адресите и маршрутите. Начините на откажување на двата распореди се разликуваат многу повеќе од конфигурациските редови, затоа одлучете пред да уредувате профил.
Името не е приклучување
dev tun1 бара од OpenVPN тој именуван интерфејс, а традиционалните градби во корисничкиот простор ќе се обидат да го отворат. Ако името не го следи вообичаениот образец tun или tap, на профилот му треба и соодветен dev-type, бидејќи типот никогаш не се изведува од низа знаци. Уредот TAP не е уред TUN со друга ознака: приклучувањето на погрешниот или веднаш не успева, или создава врска што пренесува рамки што никој не ги очекува. Проверете го типот пред сѐ друго, бидејќи секоја подоцнежна проверка претпоставува дека двете страни се согласни за него. Потоа потврдете дека процесот навистина може да го отвори уредот, а не само да го види.
dev tun1
dev-type tun
Мрежниот интерфејс и /dev/net/tun се различни објекти: едниот е врска во именскиот простор, другиот е знаковниот уред што програмата во корисничкиот простор го користи за приклучување. Документацијата за Linux TUN/TAP го опишува тој пат на приклучување и правилата за сопственост на постојаните уреди. Root школка што може да изврши ip link докажува само дека школката има привилегии, а не дека ги има демонот. Сопственоста на јазолот на уредот, множеството можности на услугата и корисникот под кој работи — сѐ мора да се совпадне за отворањето да успее.
Уред што постои и не се отвора е проблем на сопственост, а не на рутирање. Третирајте го така при отстранување грешки, инаку попладнето ќе отиде на читање рутирачки табели што никогаш не биле проблем.
Кој ја конфигурира врската: два модели на сопственост
Во првиот модел OpenVPN ги конфигурира адресите и маршрутите како дел од подигнувањето на врската. Тоа е стандардното однесување и најлесното за размислување, бидејќи една компонента ја создава состојбата и потоа повторно ја отстранува. Во вториот модел интерфејсот го поседува надворешен управувач, а ifconfig-noexec го спречува OpenVPN да ги извршува своите команди за конфигурација на адреси и ги предава параметрите на скрипти. Тогаш управувачот мора сам да ја примени точната локална и партнерска конфигурација, што е повеќе работа отколку што сугерира името на опцијата. Изборот меѓу двете е прашање за тоа кој смее да ја менува врската додека таа е подигната.
ifconfig-noexec опфаќа само адреси: рутирачката табела останува недопрена, а конфигурацијата на маршрути му припаѓа на route-noexec. Третирајте ги двете директиви како одделни контроли со одделни сопственици, бидејќи поставување на едната и претпоставување на другата е чест извор на половично конфигурирани врски. Изберете точно еден сопственик по слој: адреси на едно место и маршрути на едно место. Мрежен управувач и VPN помошник што и двајцата пишуваат адреси е начинот на кој прекинот ја брише состојбата од која другата страна сѐ уште зависи.
Прегледајте го уредот од именскиот простор што е важен
Прегледајте го уредот од именскиот простор во кој работи VPN процесот, а не од оној во кој случајно се наоѓа вашата школка. Двете команди подолу одговараат на различни прашања, а разликата се појавува кога домаќинот гледа интерфејс што контејнерот не го гледа. Извршете ги по дадениот редослед, бидејќи втората има смисла само откако ќе знаете дали врската воопшто постои.
ip -details link show dev tun1
ip tuntap show
Првата команда ја печати врската онака како што ја гледа јадрото, вклучително знаменцата и типот на интерфејсот, и така потврдувате дека ова е уредот што го мислевте. Втората ги наведува постојаните tun/tap записи, кои постојат без ниту еден процес да ги држи. Интерфејс што го чека својот предвиден сопственик е друга состојба од жив тунел приклучен на друг VPN, и само втората објаснува зошто вашето сопствено приклучување не успева. Најдете го процесот што го држи уредот пред да промените нешто, бидејќи постојан запис и зафатен интерфејс имаат различни решенија.
Поддршката за повеќе редици е конкретен распоред на управувачкиот програм со свои барања, а не дозвола за неповрзани процеси да делат еден интерфејс. Жива сесија на друг сопственик е проблем на координација, и ниту едно уредување на профил не го решава.
Два вида постојаност
Постојаноста во јадрото и persist-tun опишуваат животни векови што лесно се мешаат и скапо се погрешуваат. Постојан уред постои независно од кој било процес, па преживува запирање и следното стартување може повторно да го користи. persist-tun ги чува ресурсите низ поддржани меки ресетирања во еден OpenVPN процес, многу пократок хоризонт. Ниту едното не ветува дека запирањето на услугата ги остава маршрутите и адресите на место, а интерфејсот што останува видлив не е доказ за работна шифрирана сесија.
Потврдете го и backend-от, бидејќи однапред создадениот интерфејс не кажува ништо за тоа која имплементација ќе го отвори. Градбите на заедницата што го носат директниот податочен пат ќе се обидат да го искористат, освен ако дизајнот не кажува поинаку. Онаму каде верзијата го поддржува прекинувачот, disable-dco наместо тоа го избира патот во корисничкиот простор; постарите мотори и другите клиенти немаат таква директива, затоа држете го условот за верзија до опцијата, а не претпоставувајте дека се применува.
Што се крши кога се тестира само стартувањето
Спогодбата за сопственост може да го помине првиот тест и да не успее на последниот, што самото стартување го прави слаба проверка. Набљудувајте два премини наместо тоа: меко ресетирање и целосно запирање по кое следи стартување.
systemctl status openvpn-client@lab
ip -details link show dev tun1
Стартувањето е лесниот случај: единицата се подига, врската се појавува и излезот од состојбата го именува вчитаниот профил. Приклучувањето е моментот кога демонот го отвора уредот, затоа извршете ја проверката на врската откако единицата ќе пријави дека е активна, а не пред тоа. Ако врската постои додека состојбата сѐ уште се активира, гледате постојан уред на кој сѐ уште никој не се приклучил, а не работен тунел. Пуштете вистински сообраќај низ врската пред да продолжите, бидејќи приклучен интерфејс без употреблива маршрута е сѐ уште неуспех.
kill -SIGHUP $(pidof openvpn)
journalctl -u openvpn-client@lab -n 40
systemctl stop openvpn-client@lab
ip -details link show dev tun1
Мекото ресетирање треба да ја остави сесијата употреблива и ресурсите недопрени, и токму таа работа ја врши persist-tun. Целосното запирање е местото каде надворешниот управувач се открива: ако врската или нејзините адреси го преживеат запирањето, ги поседува некој друг, и тоа е или состојбата што сте ја документирале или грешката што штотуку ја најдовте. Запишете ги двете набљудувања до профилот, за да започне следната промена од докази, а не од дијаграм.