앱별 VPN인가 split tunnel인가? Mac 경로가 결정할 수 있는 것
경로는 목적지를 선택할 뿐 프로세스를 선택하지 않는다. 목적지 기반 split tunneling을 관리형 앱별 VPN 프로필, 그리고 세 번째 방법인 로컬 프록시와 비교한다.
두 앱이 같은 사무실 서버로 연결을 열고, 그중 하나만 터널을 써야 한다. 경로는 그 바람을 표현할 수 없다. 라우팅 테이블은 목적지를 기준으로 하며 어떤 프로세스가 소켓을 열었는지에 대한 개념이 없기 때문이다. 사람들이 요구하는 것과 실제로 필요한 것은 종종 다르다. 설정을 바꾸기 전에 둘을 구분하라.
선택자는 목적지이며 결코 프로세스가 아니다
모든 라우팅 결정은 목적지 주소에서 시작해 인터페이스로 끝난다. 커널은 어느 바이너리가 패킷을 보냈는지 묻지 않으며, macOS에서 pf도 프로세스로 라우팅하지 않으므로 방화벽 규칙으로 한 앱을 다른 경로에 둘 수 없다. 그래서 같은 서버에 브라우저로 접근하든 보고 도구로 접근하든 둘 다 같은 경로를 쓴다. 따라서 앱 수준의 분리는 경로가 아닌 다른 데서 와야 한다. 소켓을 소유하는 VPN 플러그인, 앱을 대신해 연결을 가져오는 프록시, 또는 별도의 네트워크 스택이다. 어느 것도 라우팅 변경이 아니다.
한 주소와 통신하는 두 앱은 설계를 시험하는 가장 깔끔한 방법이다. 둘 사이에서 답이 달라질 수 없다면 그 설계는 이름이 무엇이든 목적지 기반이다.
평범한 split tunnel이 실제로 주는 것
split tunnel은 사설 접두사에 경로를 설치하고 나머지는 물리 경로에 남긴다. 보통 요구의 의미가 이것이다. 사무실 서버에는 터널로 도달하고 공용 브라우징은 직접 유지한다. 단순하고, 주요 클라이언트가 모두 지원하며, 다른 경로와 같은 메커니즘으로 강제된다. 기본 경로를 읽는 대신 route -n get으로 특정 목적지를 확인하라. split tunnel은 기본 경로를 자주 건드리지 않고 남겨 두기 때문이다.
기본 경로를 손으로 편집하는 것은 무엇으로의 전환도 아니다. 그것은 클라이언트 자체의 경로 복원과 충돌하며, 보호 정책을 설치하는 클라이언트에서는 당신도 클라이언트도 예상하지 못한 상태로 기기를 남길 수 있다. 대신 클라이언트가 지원하는 설정에서 split tunnel을 구성하라.
macOS의 앱별 VPN이 요구하는 것
macOS의 진짜 앱별 VPN은 구성 프로필로 구동되는 Network Extension 기능이다. 관리 페이로드가 선택한 앱을 VPN 구성에 매핑하고, 시스템은 그에 따라 해당 앱의 트래픽을 라우팅한다. 이는 관리형 배포이며, MDM과 서명된 프로필, 그리고 둘을 모두 소유한 관리자를 뜻한다.
클라이언트를 손으로 설치해도 그 매핑이 생기지 않으며, 일반 설정 패널에서 앱을 개별 선택할 수 있게 되지도 않는다. 공급업체가 자체 앱 규칙을 노출할 수 있고, 그것은 일반 규칙이 아니라 공급업체의 문서를 따른다.
MDM 없이 앱 수준 분리를 하는 세 가지 방법
관리가 불가능한 곳에서는 프록시가 현실적인 답이다. 앱 자체의 프록시 구성을 설정하거나, 그 앱만을 위해 목적지와 프로토콜로 선택하는 PAC 파일을 사용하라.
로컬 프록시는 연결을 종료하고 터널을 통해 다시 만들므로 앱은 경로가 필요 없다. 두 번째 선택지는 별도의 네트워크 스택이다. 자체 기본 경로를 가진 가상 머신이나 컨테이너이며, 앱은 로컬 주소로 거기에 도달한다. 세 번째는 목적지 기반 라우팅을 받아들이고 요구를 버리는 것이며, 두 앱 모두 터널을 써도 될 때 정직한 선택이다. 셋 다 검증할 수 있고, 어느 것도 경로가 프로세스를 안다고 가장하지 않는다.
요구 사항을 적어 답이 모호하지 않게 하라
메커니즘이 아니라 워크플로를 적어라. 어느 앱이 어느 서비스를 필요로 하는지, 다른 앱을 같은 서비스에서 떼어 놓아야 하는지, 터널이 끊긴 동안 무엇이 일어나야 하는지. 이 세 가지 답이 설계를 고른다. 그리고 그 요구가 라우팅 변경인지 배포 프로젝트인지 관리자에게 알려 준다.
제외된 앱의 경우를 분명히 포함하라. 보호된 경로를 쓸 수 없을 때 앱을 중지하는 클라이언트는 물리 인터페이스로 되돌리는 클라이언트와 다르게 동작하며, 사용자는 그 차이를 즉시 알아차린다. 기대를 티켓에 적어라. 그런 다음 실제 기기에서 검증하라. 같은 제품이라도 macOS와 Windows에서 다르게 동작하는 경우가 많고, macOS 문서만이 그 설정이 하는 일에 관한 신뢰할 수 있는 출처이기 때문이다.