Какво прави TUN и какво още трябва да прави VPN протоколът
TUN премества IP пакети между ядрото и програма. Транспортът, удостоверяването и шифрирането принадлежат на протокола, на който говори тази програма.
Да се третират 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 описва границата и модела на устройството.