Третирање tun0 и VPN протокола као једне ствари шаље људе на погрешан дневник. Интерфејс је локална граница на којој програм из корисничког простора размењује IP пакете са кернелом. Протокол је оно што тај програм ради са пакетима када их добије: транспорт, аутентикација, шифровање и партнер. Прављење уређаја не бира ништа од тога.

Две компоненте, једна путања пакета

Кернел уписује IP пакет у уређај, а програм га чита из датотечног дескриптора. У супротном смеру програм уписује пакет назад и кернел га рутира као да је стигао на прави интерфејс. TUN преноси IP, док TAP преноси Ethernet оквире. Читање пакета на тој граници показује уоквиравање, и уређај управо за то служи.

Све иза те границе ствар је програма. Два програма могу користити исти концепт интерфејса и радити потпуно различите ствари са пакетима. Сам уређај нема мишљење о томе шта се даље дешава. Датотечни дескриптор је једина ручка коју програм има на страни кернела.

Направите уређај, па гледајте границу

Направите уређај намерно када тестирате границу. Трајни уређај преживи процес који га је направио, што је корисно за експерименте и чест извор забуне касније. Проверите заставице и власника пре него што окривите VPN.

sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9

Детаљи везе показују тип уређаја и придруженог власника. Ако га ниједан процес не држи отвореним, пакети уписани у њега не иду никамо. Уређај без придруженог процеса може изгледати здраво на листи веза док ништа не пропушта.

Шта име интерфејса не може да обећа

Име интерфејса не говори ништа о шифровању ни аутентикацији. Програм може умотати пакете у TLS, у сопствени протокол, у IPsec или у ништа. Бирање TUN уместо TAP мења уоквиравање на граници, а не безбедносни дизајн. Избор уоквиравања је стваран и много мањи од безбедносног питања.

Откривање ради на исти начин: посматрач види спољни протокол на жици, а не ознаку која каже који га је локални уређај произвео. Тунел који изгледа као нешто друго то чини због свог спољног протокола, а не због имена интерфејса. Посматрач не може да види који је локални уређај произвео пакет, само како пакет изгледа. Држите та два питања одвојено када поредите производе, јер један одговор никада не подразумева други.

Ускладите поправку са фазом која пада

Раздвојите фазе квара када се нешто поквари. Уређај који недостаје, грешка у дозволама и одбијена пријава дају различите доказе и различите поправке. Прво прочитајте локално стање, затим сопствени дневник програма, па поглед партнера. Прочитајте сва три пре него што било шта промените.

ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'

Ако уређај постоји и процес га држи, локална граница ради и проблем је даље. Ако уређај недостаје, ниједна провера акредитива неће помоћи. Фаза коју можете да именујете је фаза коју можете да тестирате. Документација за TUN/TAP описује границу и модел уређаја.

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