Партатыўны 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, яны не патрабуюць павышэння правоў, але паказваюць тыя ж рэшткі.