Неко је унапред створио 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. Потпуно заустављање је место где се спољни управљач открива: ако веза или њене адресе преживе заустављање, поседује их неко други, и то је или стање које сте документовали или грешка коју сте управо нашли. Запишите оба запажања поред профила, да би следећа измена почела од доказа, а не од дијаграма.

Повезани чланци