Калі лічыць 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 апісвае мяжу і мадэль прылады.

Падобныя артыкулы