OpenVPN Connect срещу OpenVPN GUI: къде Windows пази профилите
Два клиента за Windows, два модела на профили: GUI изброява .ovpn файлове от папка, Connect пази хранилище за импорт. След това премахнете или импортирайте правилно.
В Windows въпросът "къде е моят OpenVPN профил" има два различни отговора и грешният избор струва един следобед. Общностният OpenVPN GUI третира директорията като списък с профили: всеки .ovpn файл в настроената папка се появява в менюто на системния трей, а файл, премахнат от тази папка, изчезва. OpenVPN Connect работи от хранилище за импорт, затова запазва профил, който сте изтрили от диска, и игнорира файл, който сте копирали. Сравнението по-долу е това, което използвам, за да реша коя папка да отворя, преди да пипна нещо.
Списък от папка срещу хранилище за импорт
Общностният GUI изброява файловете при стартиране: чете една конфигурационна директория, избрана при инсталирането, и .ovpn файл, който се намира там, е профил. Затворете клиента, копирайте файл в тази папка, стартирайте го отново и записът е в менюто.
Connect вместо това изгражда списъка си от записи, които е записал по време на импорта, така че копиран файл е невидим, докато импортиран профил оцелява след изтриването на оригиналното изтегляне. Тази единствена разлика обяснява повечето съобщения, че двата клиента пазят профили на различни места, защото наистина го правят.
Общностният GUI: коя папка всъщност се използва
Две папки имат значение. Инсталация за отделен потребител чете %USERPROFILE%\OpenVPN\config; инсталация за всички потребители чете C:\Program Files\OpenVPN\config или пътя x86, когато клиентът е 32-bit. Ако профил се появява само за един Windows акаунт, той е в папката за отделния потребител и другият акаунт никога няма да го види.
Не извеждайте пътя от инсталатора. GUI приема аргумент --config_dir и помни директорията, с която е стартиран, така че пряк път може да сочи съвсем другаде. Проверете целта на прекия път и полето Start in или настройките на GUI, преди да създадете какъвто и да е файл.
Премахването е премахване на файл. Първо затворете GUI, за да не държи записа в паметта, изтрийте .ovpn заедно с всички файлове за сертификат или ключ, запазени до него, след което стартирайте клиента отново.
Папката за всички потребители изисква изтриване с повишени права. Изтриване, което там тихо не прави нищо, е UAC, а не дефект на клиента.
Connect: хранилището за импорт и двойният капан с AppData
Текущите издания 2.x и 3.x пазят профилите под %APPDATA%\OpenVPN Connect\profiles. Изданията около 2.5 използваха вместо това %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile, поради което по-старите и по-новите отговори във форумите изглеждат противоречиви. Машина, обновена на място, все още може да пази и двете.
Пътищата се развалят при преразказване. %AppData% вече се разрешава до AppData\Roaming, така че записът %AppData%\Roaming\OpenVPN Connect\profiles се разгръща до AppData\Roaming\Roaming и не сочи никъде. Използвайте променливата или буквалния път, никога смесица от двете.
Изтривайте през клиента: отворете Profiles, използвайте иконата с молив, изберете Delete. Това премахва записа и запазеното копие заедно. Премахването на папката, докато Connect работи, може да остави запис, който не отваря нищо, което е оплакването "profile still shows up" в другата му форма.
Импортираното копие е това, което клиентът изпълнява. Редактирането на .ovpn, оставено в Downloads, не променя нищо, защото Connect чете своето запазено копие; за да смените remote или cipher, редактирайте профила в клиента или редактирайте файла и го импортирайте отново .
Защо изтрит профил се връща
Обичайната причина са две инсталации от едно и също семейство клиенти. GUI за отделен потребител и GUI за всички потребители имат отделни конфигурационни директории, така че изтриването от едната оставя другата непокътната и трейът все още показва името. Programs and Features е мястото, където потвърждавате дали са инсталирани и двете.
Втората причина е профил, който никога не е бил в папката, която сте проверили. Отварянето на .ovpn веднъж от мрежов дял или папка Downloads може да го копира в конфигурационната директория за отделния потребител, а импортираните Connect профили съществуват само в AppData. Преди да редактирате нещо, потърсете името на файла под %USERPROFILE% и %APPDATA%. Папката на профила обикновено пази частния ключ до .ovpn, затова никога не поставяйте папката в тикет или чат, за да докажете кой профил сте премахнали - вместо това цитирайте името на файла и времевата марка.
По-старите издания на GUI също пазят предпочитанията на клиента в регистъра. Ако трейът все още показва име, след като файлът е изчезнал, и има само една инсталация, рестартирайте клиента веднъж и проверете отново конфигурационната директория на прекия път, преди да обмисляте да пипате ключове в регистъра.
Два тунела едновременно: първо адаптерите, после маршрутът
GUI може да поддържа няколко връзки, по една на виртуален адаптер; добавете адаптери от записа в менюто Start, който инсталира TAP-Windows6, след което потвърдете броя в Network Connections, защото два едновременни тунела се нуждаят от два адаптера и двата трябва да получат адреса си автоматично. Маршрутизацията е по-трудната граница. Два профила, всеки от които пренасочва целия трафик, се състезават за маршрута по подразбиране и само един може да го притежава, така че получавате периодични откази вместо два работещи тунела. Запазете един пълен тунел и дайте на втория профил с разделен тунел, който изтласква само собствената му подмрежа.
Припокриващи се частни диапазони не могат да се поправят чрез добавяне на адаптер. Ако и двата сървъра раздават 10.8.0.0/24, вторият тунел се сблъсква на ниво адрес и никакво количество клиентска конфигурация няма да ги раздели.
Имената на адаптерите ви казват какво гледате. Get-NetAdapter в PowerShell изброява TAP-Windows адаптерите и Wintun адаптера по име, което е по-бързо от броенето на икони в Network Connections, когато тунел се е вдигнал на грешния.
Стартиране на именуван профил от скрипт
GUI приема име на профил спрямо своята конфигурационна директория, така че стартерът изглежда така: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn". Абсолютен път или процес, стартиран в различна работна директория, се проваля тихо, поради което пряк път, който работи с двойно щракване, се чупи в Task Scheduler.
Задайте работната директория, вместо да се надявате. В стартер за AutoHotkey това е SetWorkingDir, C:\Program Files\OpenVPN\config; в Task Scheduler това е полето Start in на действието. Подаването на --config_dir със същия път прави стартера независим от двете.
Преди да приключите, експортирайте профила, отбележете неговия адаптер, подмрежа и подмрежата, която маршрутизира, и пазете сертификатите на всеки клиент в отделна подпапка. След това потвърдете, че папката принадлежи на клиента, който наистина изпълнявате, и изтривайте през клиента, когато този клиент има хранилище за импорт. Именно този ред пречи на същия профил да се появи отново след следващото рестартиране.