Какво наистина се променя, когато смените запазени VPN конфигурации на macOS
Смяната на запазен Mac VPN не е просто подмяна на профил. Вижте какво се променя в маршрутите, DNS и идентификационните данни и как да проверите тунела, който всъщност сте получили.
Отваряте списъка с VPN, избирате другия запазен запис и очаквате чиста смяна: нов адрес за изход и всичко останало непроменено. Именно това допускане трябва да изоставите първо. В macOS запазеният VPN е пълна мрежова услуга, а не предварителна настройка, затова смяната на услуги може да промени едновременно маршрутизацията, DNS и удостоверяването. Лентата с менюта показва коя услуга е активна; тя не показва дали тунелът отдолу отговаря на намерението ви.
Запазеният списък не е избор на профил
Всеки запис в „Системни настройки“ > „Мрежа“ е отделна услуга със собствен адрес на сървъра, акаунт, метод за удостоверяване, DNS сървъри и опции като „Изпращай целия трафик през VPN връзката“. В по-старите издания „Системни предпочитания“ държи същия списък. Два записа може да сочат към едно и също име на хост и пак да се държат различно, защото протоколът или разширението на клиента решава как се изгражда тунелът.
Клиентите от трети страни държат отделни списъци. Tunnelblick чете конфигурации от собствената си папка, WireGuard пази свой списък с тунели, а OpenVPN Connect съхранява профили вътре в приложението. Някои регистрират конфигурация в системата; други държат всичко в приложението и никога не се появяват във вградения списък. Затова „превключи към запазеното“ означава различни действия според това кое приложение притежава профила.
scutil --nc list извежда VPN услугите, регистрирани в системната конфигурация, с имена в кавички. Използвайте точно тези имена, когато скриптирате смяна, и не предполагайте, че списъкът покрива всеки тунел от трета страна.
Какво всъщност променя смяната
Четири неща се движат заедно, когато активната услуга се смени. Маршрутът по подразбиране следва новия тунел, ако тази услуга изпраща целия трафик; списъкът с резолвери се сменя с DNS сървърите, които услугата задава; новите връзки вземат новия адрес на тунела за свой източник; а използваните идентификационни данни принадлежат на новата услуга. Вградена конфигурация и профил на приложение не са взаимозаменяеми, дори когато и двете завършват на един и същ шлюз.
| What you assume | What the system does |
|---|---|
| Same server name means same tunnel | Protocol, certificate and account are per service |
| All traffic follows the active VPN | Only when Send all traffic over VPN is on |
| DNS switches with the VPN | Only if that service defines DNS servers |
| Disconnect ends the connection | On Demand or a management profile can reconnect |
| Open sessions survive the switch | TCP sessions tied to the old address stall |
Частта с DNS обърква хората. macOS поддържа ред на резолверите, а scutil --dns показва кои резолвери се използват и на кой интерфейс. VPN услуга без зададени DNS сървъри може да остави Wi-Fi резолвера да отговаря, така че получавате нов публичен адрес със старото DNS поведение и стигате до извода, че смяната е проработила наполовина.
Защо старата конфигурация се връща
Ако се изключите и същата услуга се свърже отново след миг, погледнете първо On Demand. Правило за свързване при поискване може да върне услуга, когато приложение резолвне съответен домейн, а профил за управление може да наложи същото правило. Изтриването на записа рядко помага: конфигурация, инсталирана от профил, обикновено се връща при следващото обновяване на профила, а ръчната може да остави паролата си в Keychain, докато услугата я няма.
Стартирането на втора услуга не винаги спира първата. В зависимост от клиента и протокола може да останете с два тунела и два набора маршрути, а редът на услугите и специфичността на маршрута решават кой носи трафика, не иконата, на която щракнахте последно. Проверете интерфейсите, преди да приемете, че е станала смяна.
Проверете тунела, не отметката
Минете през собствения изглед на системата, преди да пипате настройки.scutil --nc status "Name" съобщава какво мисли системата;ifconfig показва дали интерфейс utun има адрес;netstat -rn -f inet показва накъде сочи маршрутът по подразбиране;scutil --dns показва резолвера, който всъщност се използва. След това отворете нова връзка и потвърдете адреса за изход, защото страница, която вече е влязла, може да ползва сокет, вързан към стария тунел.
Ако DNS все още отговаря от локалната мрежа, сравнете зададените сървъри на услугата със списъка с резолвери. Ако маршрутът по подразбиране все още сочи физическия интерфейс, услугата е с разделен тунел или не е напълно свързана. И двете са резултат от конфигурация, а не доказателство за счупен клиент.
Ред на смяна без изненади
- Отбележете текущата услуга и дали профил я управлява.
- Първо я изключете, когато двата тунела не могат да съществуват заедно.
- Свържете целта и изчакайте „Свързано“, не „Свързване“.
- Проверете маршрута по подразбиране, списъка с резолвери и нов адрес за изход.
- Рестартирайте приложенията с дълготрайни сесии.
Пазете стария запис, докато новият мине тези проверки, и дайте на всеки запис отделно име; еднаквите етикети правят следващия отказ по-труден за приписване. Помощта на Apple за Mac описва вградената страна в Настройване на VPN връзка на Mac, което е справката, която да проверите, преди да редактирате управлявана конфигурация.
Ако изборът се връща назад, третирайте го първо като политика или On Demand. Потвърдете кой притежава конфигурацията и дали е зададена за автоматично свързване, после решете дали сменяте услуга, или се борите с профил.