macOS에서 iCloud Private Relay(비공개 릴레이)에 눈 뜨고 코 베이기
최근, 그러니까 지난 2주일 동안 매우 이상한 일을 겪었다.
최근, 그러니까 지난 2주일 동안 매우 이상한 일을 겪었다.
❗ 특정 맥북에서만, 특정 IP/Port에만 접속이 안 돼요!
지금 다니고 있는 회사에서, 특히 내가 담당하고 있는 서비스에서는 웹 기반 설치형 로그 시스템을 사용하고 있고, 로그 시스템에는 사무실 내부 네트워크에서만 접속이 되도록 구성해 놓았다.
더 정확히는, 우리는 클라우드 환경에 서버를 구축해 놓았기 때문에, 사무실 건물에 할당받은 공인 IP에서 특정 포트로 접근하는 트래픽만 허용했다.
그래서 이 로그 시스템에는 제한된 네트워크 환경에서만 접근할 수 있다.
- 사무실 네트워크에 접속한다. (지정된 MAC 주소를 가진 장비만 접근 가능하다.)
- 사무실 네트워크가 아닌 환경에서 사무실 VPN에 연결한다.
나는 불과 2주 전까지만 해도 이 시스템에 아주 잘 접근하여 업무를 보고 있었는데, 어느 날 부터인지 갑자기, 정말 갑자기 접속이 안 됐다. 그것도 로그를 볼 수 있는 웹 페이지에만!
그 간의 과정
로그 시스템 서버에 이슈가 있을 것이다?
처음에는 서버의 커널 패닉, 로그 시스템 데몬의 종료 등 서버에 이상이 있을 것이라고 생각했다. 하지만 주변 동료들에게 물어보니 다들 잘 접속 된다고 한다.
회사의 보안 담당자에게 부탁해, 회사에서 지급한 맥북이 아닌 내 개인 맥북의 사무실 네트워크 접근을 임시로 허용하여 테스트 해 봐도 접근이 잘 됐다.
로그 시스템 서버에는 사무실 IP에서 SSH 접근도 허용되어 있는데, SSH는 잘 접속 된다. 서버 이슈는 아닌 것으로 확인 됐다.
DNS를 제대로 조회하지 못 했을 것이다?
처음에는 필자의 맥북, 혹은 맥북이 연결 된 네트워크에서 특정 도메인에 대해 IP를 해석하지 못 하는 현상을 의심했다. 하지만 dig와 nslookup을 사용해 DNS를 조회해 보니, 도메인에 연결 된 IP가 정상적으로 해석됐다.
DNS 이슈도 아닌 것으로 확인 됐다.
웹 브라우저의 캐시 때문일 것이다?
필자는 구글 크롬 브라우저를 사용하고 있는데, 애플 사파리 브라우저로도 접속이 안 됐다. 심지어 두 브라우저의 시크릿 모드로도 접근 할 수 없었다.
특정 브라우저의 이슈도 아닌 것으로 확인 됐다.
로컬/네트워크 방화벽이 차단 했을 것이다?
로그 시스템 웹 서버에는 TLS를 설정 하지 않았기 때문에, HTTP로만 접근이 가능하다(문제 해결 단서 1). 로컬 혹은 네트워크의 방화벽이 보안상 HTTP 트래픽을 차단하는 것이 아닐까 생각했다.
로컬 방화벽을 꺼도 여전히 접속이 되지 않아서, 보안 담당자와 함께 내 장비에서 라우터로 향하는 트래픽을 수집해서 분석해 보았지만, 그 어디에서도 로그 시스템의 웹 페이지에 접근하려는 트래픽을 확인할 수가 없었다!
이 때부터 내 특정 장비에 이슈가 있다고 판단했고, 와이어샤크로 로컬에서 인터넷으로 향하는 패킷을 수집해 로그 시스템의 웹 페이지에 접근하는 패킷을 찾아 보았다.
여기에서도 찾을 수가 없었다. 심지어 로그 시스템 웹 페이지 도메인의 DNS 조회 트래픽조차도 검색이 되지 않았다(문제 해결 단서 2)! 분명히 DNS 조회가 되는데 말이다.
무선랜 인터페이스에 문제가 있을 것이다?
사무실 VPN을 켜면 접근이 잘 된다(문제 해결 단서 3). VPN 인터페이스는 가상 인터페이스이고, 결국 무선랜 인터페이스를 통하기 때문에 이 문제는 아닐 것 같았다.
특정 장비의 커널에서 특정 IP/Port에만 소켓을 생성하지 못 한다?
…일단 이 부분은 잘 모르니까 패스했다. 만약 이게 문제 원인이라면 모든 네트워크 연결이 실패 했을 것이다.
아무런 단서도 찾지 못 하고 2주 가량의 시간이 흘렀을 때, 업무 중 로그 시스템에 접근해야만 하는 일이 생겨 ‘지금 쯤이면 접속이 되겠지’ 하는 심정으로 접속해 보았다. 여전히 접근이 안 된다…
OS에 무언가 캐시가 남아 있을 것이다?
macOS를 클린 설치 해 보았다. 접속이 아주 잘 된다! OS의 문제라고 결론 짓고 넘어갔다. 그런데 그 날 오후, 다시 접속이 안 되기 시작했다…
이 날도 두 브라우저로 접속 테스트를 수도 없이 시도했는데, 단서를 하나 발견했다. 사파리 브라우저에서 Timeout 메시지가 보였는데, 그 메시지가 대충 이런 내용이었다.
❓ “Private Relay(비공개 릴레이)가 호스트를 찾을 수 없습니다.”
???
Private Relay를 비활성화 해보았다.
지금까지의 모든 추측과 분석이 물거품이 되어 로그 시스템에 아주 잘 접속 됐다…
Private Relay를 켜면 왜 이런 일이 발생할까?
글의 중간 중간 문제 해결 단서라고 적어 놓은 부분을 볼 수 있다. Private Relay에 대한 정보를 약간 찾아 보니 다음과 같았다.
💡 … Private Relay protects users’ web browsing in Safari, DNS resolution queries, and insecure http app traffic. Internet connections set up through Private Relay use anonymous IP addresses that map to the region a user is in, without divulging the user’s exact location or identity. …
- Apple Developer Support: Prepare Your Network or Web Server for iCloud Private Relay
문제 해결 단서 1, 2에 대한 결론은, DNS 요청과 HTTP 요청은 결국 내 맥북이 아니라 애플의 릴레이 서버가 요청하는 형태가 되고, 이 서버들의 IP는 접근이 허용 되어 있지 않기 때문에 접근이 되지 않았던 것이었다.
분명히 Safari에서 작동한다고 되어 있는데, macOS의 네트워크 접근 로그를 보니 그냥 OS 자체에서 작동하는 기능인가보다…
가끔 Parallels Desktop을 사용하거나 사무실 VPN을 켜면 Private Relay가 비활성화 되었다는 알림이 오는데, 아마도 가상 네트워크 인터페이스를 사용하게 되면 Private Relay가 자동으로 비활성화 되는 것 같다. 그래서 문제 해결 단서 3처럼 사무실 VPN에 접속하여 접근하면 잘 됐던 것이었다.
여러분도 제한된 네트워크 환경에서의 이슈가 의심 된다면, Private Relay(비공개 릴레이)가 활성화 되어 있는지 한 번쯤은 확인해 봐도 좋을 것 같다.