macOS에서 VPN을 제거하는 것은 한 가지 동작처럼 보이지만 실제로는 최소 네 가지입니다. 시스템 설정의 버튼은 시스템 구성 저장소에서 네트워크 서비스 하나를 삭제합니다. 클라이언트 앱, 그 앱이 설치한 네트워크 확장, 키체인에 있는 자격 증명, 기기 관리가 밀어 넣은 프로파일은 삭제하지 않습니다. 어떤 증상이 어떤 객체에 속하는지 아는 것이 제거한 VPN이 조용히 되돌아오는 것을 막습니다.

구성 제거 버튼이 실제로 삭제하는 것

추가하는 모든 VPN은 네트워크 서비스가 되며, Wi-Fi나 Thunderbolt Bridge와 같은 종류의 객체입니다. macOS는 그것을 모두 여기에 보관합니다: /Library/Preferences/SystemConfiguration/preferences.plist 에, 각각 서비스 ID, 표시 이름, 터널 유형과 서버 주소, 터널이 시작되는 방식을 설명하는 구성 사전과 함께.

시스템 설정과 VPN을 열고 서비스 옆의 정보 버튼을 눌러 구성 제거를 선택하고 확인하면, macOS는 터널을 멈추고 그 서비스 객체를 삭제하며 저장소를 다시 씁니다. 시스템이 소유한 부분에 대해서는 해체가 완전해서, 서비스는 목록에서 사라지고 로그인할 때 아무것도 그것을 시작하지 않습니다.

버튼이 닿지 못하는 것은 다른 하위 시스템이 소유한 모든 것입니다. 앱 번들은 여기에 있습니다: /Applications. NetworkExtension 클라이언트는 구성과 별도로 등록된 시스템 확장으로 실행됩니다. 자격 증명은 키체인 항목이며, 그것을 보관하는 키체인의 접근 제어를 따릅니다. 구성 프로파일은 프로파일 시스템이 소유합니다. 서비스를 제거해도 네 가지는 모두 원래 있던 곳에 그대로 남습니다.

Mac이 아직 설치되어 있다고 생각하는 것을 나열하기

무엇이든 삭제하기 전에 목록을 만드십시오. 세 명령이 같은 눈에 보이는 고장을 만드는 세 계층을 다룹니다:

scutil --nc list
networksetup -listallnetworkservices
profiles -P

scutil --nc list 는 VPN 구성의 권위 있는 보기이며, 연결 상태, 서비스 이름, 서비스 ID를 보여 줍니다. 설정 목록에는 결코 나타나지 않는 항목, 즉 몇 달 전 제거한 클라이언트의 남은 서비스와 조용히 시작되는 요청 시 구성을 자주 표시합니다. networksetup -listallnetworkservices 는 명령줄 도구가 기대하는 이름으로 네트워크 서비스를 표시하며, 이름으로 제거하려면 이것이 필요합니다. profiles -P 는 설치된 구성 프로파일을 나열하며, 관리되는 Mac에서는 VPN이 직접 추가한 서비스가 아니라 그 프로파일 중 하나 안의 페이로드일 수 있습니다.

첫 번째 목록을 믿는 대신 목록을 함께 읽으십시오. scutil 에 있고 설정에는 없는 서비스는 보통 타사 클라이언트가 터널을 소유하고 자체 창에 표시한다는 뜻입니다. 두 보기에 모두 있고 설정에서 회색인 서비스는 정책을 뜻합니다. 삭제 후 다시 나타나는 이름은 무언가가 그것을 다시 만든다는 뜻이며, 그 무언가가 실제 대상입니다.

소유자를 통해 서비스 제거하기

직접 추가한 서비스라면 문서화된 경로, 즉 시스템 설정, VPN, 정보 버튼, 구성 제거에 머무르십시오. Apple은 그 경로를 문서화하며, 그것이 구성 저장소를 일관되게 유지합니다. preferences.plist 를 네트워크 스택이 실행 중일 때 직접 편집하는 것이야말로 어떤 인터페이스도 제거하지 못하는 중복 또는 좀비 서비스를 만드는 길입니다.

터미널에서 이름으로 서비스를 제거하십시오: networksetup -removenetworkservice "Service Name", 그다음 이것으로 확인하십시오: scutil --nc list. 이 명령은 인터페이스와 같은 서비스 목록에 작용하므로 networksetup -listallnetworkservices 에 나타나지 않는 이름은 어느 경로로도 제거되지 않습니다. 클라이언트가 다음에 실행될 때 서비스를 다시 만들기 때문에, 터널을 소유한 클라이언트가 있으면 그 클라이언트의 제거 경로를 먼저 사용하십시오.

VPN이 기기 관리에서 왔다면 당신은 소유자가 아닙니다. MDM이 설치한 프로파일은 제거 불가로 표시될 수 있고, 제거 가능한 프로파일도 다음 확인 시 다시 밀어 넣어질 수 있습니다. 이것으로 확인하십시오: profiles -P, 그다음 조직의 오프보딩 절차를 사용하십시오. 페이로드를 로컬에서 삭제하면 실패하거나 재설치를 유발합니다.

서비스 없이 다시 연결되는 잔여물

흔한 «다시 돌아왔다»는 보고는 서비스가 돌아온 것이 아니라 그것을 소유한 확장이 돌아온 것입니다. 등록된 시스템 확장과 네트워크 확장 유형의 앱 확장을 나열하십시오:

systemextensionsctl list
pluginkit -m -p com.apple.networkextension.packet-tunnel

NetworkExtension 클라이언트는 터널 공급자를 자체 식별자 아래에 설치된 상태로 유지하며, 어떤 구성과도 분리되어 있습니다. 구성이 사라진 뒤에도 확장은 활성 상태로 남을 수 있고, 클라이언트의 메뉴 막대 에이전트는 다음에 시작할 때 새 구성을 만들 수 있으며, 때로는 방금 삭제한 이름을 재사용합니다. 로그인 항목과 공급업체의 도우미를 여기에서 확인하십시오: /Library/LaunchDaemons 제거가 실패했다고 결론 내리기 전에.

자격 증명이 두 번째 잔여물입니다. 로그인 키체인에 저장된 암호나 클라이언트 인증서는 서비스와 함께 삭제되지 않으며, IPSec 공유 비밀은 역사적으로 시스템 키체인에 존재하므로 제거 후 다시 추가할 때 암호 입력을 건너뛰는 경우가 있습니다. Mac이 당신의 통제를 벗어난다면 Keychain Access에서 서비스 이름으로 항목을 찾아 저장된 자격 증명이 나타내는 계정, 인증서 또는 피어 키를 취소하십시오. A copied configuration file is a live credential even after local removal.

제거를 확인하고 돌아오는 프로파일을 올바르게 읽기

서비스가 두 보기 모두에서 사라지고 재시동 후에도 사라진 상태로 남으면 제거가 완료됩니다. scutil --nc list 에서 서비스 ID를, scutil --dns 로 이름 확인이 기대하는 리졸버를 사용하는지 확인하고, 요청 시 규칙과 로그인 에이전트는 깨끗한 부팅에서만 모습을 드러내는 두 가지이므로 그다음 한 번 재시동하십시오.

그래도 남아 있다면 더 이상 객체를 삭제하지 마십시오. MDM 프로파일이 서비스를 다시 밀어 넣는지, 클라이언트 에이전트가 다시 만드는지, 아니면 이름이 일치하지 않아 서비스가 제거되지 않았는지, 어느 계층이 그것을 다시 만들었는지 파악하십시오. 그 답이 공급업체의 제거 프로그램, IT 팀, 또는 같은 제거 대화상자를 한 번 더 거치는 것 중 무엇이 필요한지 결정합니다. Apple의 제거 안내서는 직접 추가한 서비스의 지원 경로를 다루지만, 잔여물은 직접 확인해야 하는 부분입니다: remove a VPN configuration.

관련 글