Да се третират 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 описва границата и модела на устройството.

Подобни статии