W systemie Windows pytanie "gdzie jest mój profil OpenVPN" ma dwie różne odpowiedzi, a wybór złej kosztuje całe popołudnie. Społecznościowy OpenVPN GUI traktuje katalog jako listę profili: każdy plik .ovpn w skonfigurowanym folderze pojawia się w menu zasobnika, a plik usunięty z tego folderu znika. OpenVPN Connect pracuje z magazynu importu, więc zachowuje profil usunięty z dysku i ignoruje plik, który do niego skopiowano. Poniższe porównanie jest tym, którego używam, aby zdecydować, który folder otworzyć, zanim czegokolwiek dotknę.

Lista folderu kontra magazyn importu

Społecznościowy GUI wylicza pliki przy starcie: czyta jeden katalog konfiguracji, wybrany podczas instalacji, a plik .ovpn, który tam leży, jest profilem. Zamknij klienta, skopiuj plik do tego folderu, uruchom go ponownie, a wpis jest w menu.

Connect natomiast buduje swoją listę z rekordów zapisanych podczas importu, więc skopiowany plik jest niewidoczny, podczas gdy zaimportowany profil przetrwa usunięcie oryginalnego pobrania. Właśnie ta jedna różnica wyjaśnia większość doniesień, że oba klienty przechowują profile w różnych miejscach, bo tak jest.

Społecznościowy GUI: który folder jest faktycznie używany

Znaczenie mają dwa foldery. Instalacja dla jednego użytkownika czyta %USERPROFILE%\OpenVPN\config; instalacja dla wszystkich użytkowników czyta C:\Program Files\OpenVPN\config lub ścieżkę x86, gdy klient jest 32-bit. Jeśli profil pojawia się tylko dla jednego konta Windows, znajduje się w folderze dla jednego użytkownika i drugie konto nigdy go nie zobaczy.

Nie wnioskuj ścieżki z instalatora. GUI akceptuje argument --config_dir i pamięta katalog, z którym został uruchomiony, więc skrót może wskazywać zupełnie gdzie indziej. Sprawdź cel skrótu i pole Start in albo ustawienia GUI, zanim utworzysz jakikolwiek plik.

Usuwanie to usuwanie plików. Najpierw zamknij GUI, aby nie trzymał wpisu w pamięci, usuń .ovpn razem z ewentualnymi plikami certyfikatu lub klucza obok, a następnie uruchom klienta ponownie.

Folder dla wszystkich użytkowników wymaga usunięcia z podniesionymi uprawnieniami. Usunięcie, które tam po cichu nic nie robi, to UAC, a nie błąd klienta.

Connect: magazyn importu i podwójna pułapka AppData

Obecne wersje 2.x i 3.x przechowują profile w %APPDATA%\OpenVPN Connect\profiles. Wersje około 2.5 używały zamiast tego %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile, dlatego starsze i nowsze odpowiedzi na forach wydają się sprzeczne. Maszyna zaktualizowana na miejscu może nadal mieć oba.

Ścieżki się zniekształcają przy opowiadaniu. %AppData% już rozwiązuje się do AppData\Roaming, więc zapis %AppData%\Roaming\OpenVPN Connect\profiles rozwija się do AppData\Roaming\Roaming i donikąd nie wskazuje. Używaj zmiennej albo ścieżki dosłownej, nigdy mieszanki obu.

Usuwaj przez klienta: otwórz Profiles, użyj ikony ołówka, wybierz Delete. To usuwa rekord i zapisaną kopię razem. Usunięcie folderu, gdy Connect działa, może zostawić rekord, który nic nie otwiera, i to jest skarga "profile still shows up" w innej postaci.

Zaimportowana kopia jest tą, którą uruchamia klient. Edycja .ovpn pozostawionego w Downloads nic nie zmienia, bo Connect czyta swoją zapisaną kopię; aby zmienić remote lub cipher, edytuj profil w kliencie albo edytuj plik i zaimportuj go ponownie .

Dlaczego usunięty profil wraca

Zwykłym powodem są dwie instalacje tej samej rodziny klientów. GUI dla jednego użytkownika i GUI dla wszystkich użytkowników mają osobne katalogi konfiguracji, więc usunięcie z jednego zostawia drugi nietknięty, a zasobnik nadal wyświetla nazwę. Programs and Features to miejsce, w którym potwierdzasz, czy obie są zainstalowane.

Drugim powodem jest profil, którego nigdy nie było w folderze, który sprawdziłeś. Otwarcie .ovpn raz z udziału sieciowego lub folderu Downloads może skopiować go do katalogu konfiguracji dla jednego użytkownika, a zaimportowane profile Connect istnieją tylko w AppData. Zanim cokolwiek edytujesz, poszukaj nazwy pliku pod %USERPROFILE% i %APPDATA%. Folder profilu zwykle trzyma klucz prywatny obok .ovpn, więc nigdy nie wklejaj folderu do zgłoszenia ani czatu, aby udowodnić, który profil usunąłeś - podaj zamiast tego nazwę pliku i znacznik czasu.

Starsze wersje GUI przechowują też preferencje klienta w rejestrze. Jeśli zasobnik nadal wyświetla nazwę po zniknięciu pliku i jest tylko jedna instalacja, uruchom klienta ponownie raz i sprawdź ponownie katalog konfiguracji skrótu, zanim rozważysz dotknięcie kluczy rejestru.

Dwa tunele naraz: najpierw adaptery, potem trasa

GUI może utrzymywać kilka połączeń, po jednym na wirtualny adapter; dodaj adaptery z pozycji menu Start, która instaluje TAP-Windows6, a następnie potwierdź liczbę w Network Connections, bo dwa jednoczesne tunele potrzebują dwóch adapterów i oba powinny automatycznie otrzymać adres. Routing jest trudniejszym ograniczeniem. Dwa profile, z których każdy przekierowuje cały ruch, konkurują o trasę domyślną, a tylko jeden może ją posiadać, więc dostajesz okresowe awarie zamiast dwóch działających tuneli. Zachowaj jeden pełny tunel, a drugiemu daj profil split-tunnel, który wypycha tylko jego własną podsieć.

Nakładające się zakresy prywatne nie da się naprawić przez dodanie adaptera. Jeśli oba serwery przydzielają 10.8.0.0/24, drugi tunel koliduje na poziomie adresu i żadna konfiguracja klienta ich nie rozdzieli.

Nazwy adapterów mówią, na co patrzysz. Get-NetAdapter w PowerShellu wyświetla adaptery TAP-Windows i adapter Wintun po nazwie, co jest szybsze niż liczenie ikon w Network Connections, gdy tunel wstał na niewłaściwym.

Uruchamianie nazwanego profilu ze skryptu

GUI przyjmuje nazwę profilu względem swojego katalogu konfiguracji, więc launcher wygląda tak: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn". Ścieżka bezwzględna albo proces uruchomiony w innym katalogu roboczym zawodzi po cichu, dlatego skrót działający przez dwukrotne kliknięcie psuje się pod Task Schedulerem.

Ustaw katalog roboczy zamiast liczyć na szczęście. W launcherze AutoHotkey to SetWorkingDir, C:\Program Files\OpenVPN\config; w Task Schedulerze to pole Start in akcji. Przekazanie --config_dir z tą samą ścieżką czyni launcher niezależnym od obu.

Zanim skończysz, wyeksportuj profil, zanotuj jego adapter, podsieć i podsieć, którą trasuje, i trzymaj certyfikaty każdego klienta w jego własnym podfolderze. Następnie potwierdź, że folder należy do klienta, którego naprawdę uruchamiasz, i usuwaj przez klienta, gdy ten klient ma magazyn importu. Właśnie ta kolejność powstrzymuje ten sam profil przed ponownym pojawieniem się po następnym restarcie.

Powiązane artykuły