Портативен VPN клиент без администраторски права: какво все още се чупи
Портативният VPN клиент може да прескочи инсталатора и пак да се нуждае от тунелно устройство, маршрут и запис в резолвера. Изпълнете тези проверки, преди да му се доверите.
„Портативен“ описва инсталатора, не ядрото. Клиентът може да пристигне като един изпълним файл на USB флашка и пак да се нуждае от тунелно устройство, запис в маршрутната таблица и запис в резолвера, преди първият пакет да се движи. Кое от тези три целевата машина ще ви позволи да пипате, решава дали тази сборка изобщо работи там. Проверките по-долу отговарят на въпроса в реда, в който клиентът ще ги срещне.
Портативността покрива три различни обещания и само едно е безплатно
Без инсталатор означава, че доставчикът не е регистрирал услуга, не е доставил деинсталатор и не е добавил елемент в менюто. Без администратор означава, че обикновен акаунт може да стартира клиента и да завърши връзка. Без промяна на хоста означава, че машината изглежда идентична, след като излезете. Страниците за изтегляне, които казват „портативен“, обикновено обещават само първото от тези, а другите две са мястото, където внедряванията се провалят. Една сборка може да е портативна и в тесния смисъл, че работи от медия само за четене без никакви записи на точкови файлове, което пак не казва нищо за мрежовия стек.
Скъпите обещания са второто и третото. Един изпълним файл, който се нуждае от адаптер, маршрут или запис в резолвера, иска от операционната система правомощия, които етикетът „портативен“ никога не е покривал.
Намерете привилегирования помощник, който клиентът ще извика
Почти никой VPN клиент не движи пакети сам. В Windows пътят на данните минава през WFP филтри и Base Filtering Engine, в macOS през доставчик NetworkExtension, който потребителят одобрява в Системни настройки, а в Linux през tun устройство плюс стека за маршрутизиране. Копираният от вас двоичен файл е повърхност за управление на тези компоненти, а не тяхна замяна. Попитайте кой компонент очаква клиентът, после потвърдете, че е инсталиран, работи и е използваем от вашия акаунт.
Linux е най-лесното място да докажете това, защото проверката е едно системно извикване. Отварянето на /dev/net/tun и искането на устройство от ядрото изисква CAP_NET_ADMIN, а документацията на ядрото за TUN/TAP посочва както правилото за собственост, така и способността. Изпълнете проверката от акаунта, който ще стартира клиента, не от root.
ls -l /dev/net/tun
ip tuntap add dev vpntest mode tun
ip link delete vpntest
Грешка в правата на средния ред е отговорът, който търсехте: този акаунт не може да създаде тунелен интерфейс, така че всеки клиент в потребителското пространство, който се нуждае от такъв, се проваля при свързване, а не при изтегляне. Последният ред премахва тестовото устройство и не отпечатва нищо, когато работи. Ако и двата реда успеят, хостът не е променил нищо трайно.
Тествайте промените по маршрута и резолвера преди първата връзка
Разделеното тунелиране превръща връзката в маршрутно решение, докато пълният тунел я превръща в замяна на маршрута по подразбиране. И двете са записи в мрежовия стек на хоста и двете се провалят за непривилегирован акаунт, дори когато самият клиент стартира чисто. Резолверът е третият запис и на хостове със systemd обикновено е този, който се чупи последен. Този ред е важен, когато решавате къде да похарчите инсталация с повишени права.
Проверката на маршрут се нуждае от дестинация, която наистина ви интересува, затова заменете подмрежа от собствения си профил вместо заместителя по-долу. Името на устройството трябва да съществува, за да може маршрутът да се прикачи към нещо.
ip route add 10.20.0.0/16 dev vpntest
ip route del 10.20.0.0/16
resolvectl query intranet.example.internal
Първият ред, който връща RTNETLINK answers: Operation not permitted, означава, че акаунтът не може да инсталира частния маршрут, който профилът изисква. Вторият ред доказва същото право в обратна посока, което е важно, защото клиент, който може да добавя маршрути, но не да ги премахва, оставя след себе си счупена таблица. Заявката към резолвера после показва дали частните имена се разрешават през тунела или изтичат към какъвто резолвер хостът вече вярва.
Изпълнете и трите, докато тестовото устройство още съществува, после го изтрийте. Маршрут, сочещ към изчезнало устройство, е най-честата причина лаптоп да загуби свързаност след неуспешно свързване.
Решете какво трябва да оцелее след сесията
Изтриването на папката не е план за почистване. Адаптерите, маршрутите, настройките на резолвера, доверените сертификати и запазените идентификационни данни могат всеки да надживее процеса, а услуга при зареждане може да възстанови някои от тях, без да пита. Запишете какво е разрешено на клиента да остави след себе си, преди да го стартирате, а не след първото неуспешно прекъсване.
Практичното правило е да снимате трите повърхности, които ще промените, и да ги сравните после. Запишете интерфейсите, основната маршрутна таблица и състоянието на резолвера преди първата връзка, после повторете същите три четения, след като клиентът излезе.
ip -brief addr show
ip route show table main
resolvectl status
Всичко, което присъства във второто снемане и липсва в първото, се нуждае от собственик. Или клиентът го премахва при изход, или вие го премахвате със същите команди, които са го създали, и това премахване принадлежи в бележките за внедряване, а не в нечия памет за това какво се е случило. В Windows еквивалентните четения са Get-NetAdapter, Get-NetRoute и Get-DnsClientServerAddress, които не се нуждаят от повишаване на права, но показват същите остатъци.