제4장
연결 유지
어디에 있든 앱이 Mac을 찾는 방법 — 같은 Wi-Fi, Tailscale 또는 Cloudflare 터널 — 과 작은 색깔 점이 알려 주는 의미를 설명합니다.
페어링을 마치면 휴대폰은 주소 입력을 요구하지 않습니다. QR 코드를 스캔할 때 받아 둔 경로를 알고 있으며, Mac의 LAN 주소가 바뀌어도 근처에 있는 같은 Mac을 다시 찾아낼 수 있습니다. 응답하는 경로가 나올 때까지 사용 가능한 경로를 조용히 차례로 시도합니다. 이 장에서는 그 과정과, 외부에서 접속할 때 약간의 준비가 필요한 경우가 있는 이유, 그리고 연결 상태를 한눈에 읽는 방법을 설명합니다.
Mac을 거치는 연결은 Mac의 제어 서버를 기반으로 합니다. 제어 서버가 꺼져 있거나 Mac이 잠자기 상태이거나 네트워크에 연결되어 있지 않으면 앱이 접속할 수 있는 활성 Mac 엔드포인트가 없습니다. 이때 사용할 수 있는 제한된 오프라인 기능은 앱 사용에서 다룹니다. 페어링 자체는 2장을, 제어 서버의 데스크톱 측 설정은 데스크톱 매뉴얼을 참조하십시오.
4.1Mac에 이르는 세 가지 경로
페어링할 때 QR 코드에는 토큰만 담겨 있는 것이 아닙니다. Mac에 접속할 수 있는 주소의 짧은 목록도 함께 담겨 있습니다 — 집이나 사무실 네트워크상의 주소, Tailscale 주소, 그리고 Mac에서 Cloudflare 터널을 활성화한 경우 그 터널의 주소입니다. 앱은 이 목록을 보관하고, Mac과 통신해야 할 때마다 정해진 순서로 시도합니다.
- 먼저 집이나 사무실 네트워크. 휴대폰과 Mac이 같은 Wi-Fi(또는 유선 LAN)에 있으면 앱이 직접 연결합니다. 중간에 아무것도 거치지 않는, 가장 빠르고 지연 시간이 가장 짧은 경로입니다.
- 다음은 Tailscale. 직접 연결이 응답하지 않으면 Mac의 Tailscale 주소를 시도합니다. 휴대폰과 Mac이 같은 tailnet에 속해 있으면 어디에 있든 동작합니다.
- 마지막은 Cloudflare 터널. 둘 다 동작하지 않으면 Cloudflare 터널로 전환합니다. 단, Mac에서 터널을 활성화한 경우에만 해당합니다. 자체 네트워크가 없어도 어디서든 Mac에 접속할 수 있습니다.
앱은 마지막으로 성공한 경로를 기억해 다음에는 그 경로부터 시도하므로, 익숙한 네트워크에서는 거의 즉시 다시 연결됩니다. 경로를 직접 고를 필요는 없습니다. 앱을 열기만 하면 현재 살아 있는 경로로 연결됩니다.
저장된 LAN 주소가 더 이상 응답하지 않으면 휴대폰은 Bonjour로 FrontierStack을 탐색하기도 합니다. 이렇게 발견한 주소는 단서일 뿐입니다. 휴대폰은 Mac이 페어링 때 저장한 인증서 지문과 정확히 일치하는 지문을 제시한 경우에만 그 주소를 받아들이고, 새 주소를 기억합니다. 각 휴대폰은 Mac의 표시 이름이 아니라 전체 지문으로 대조하므로, 같은 LAN에 FrontierStack Mac이 두 대 있어도 혼동되지 않습니다.
4.2같은 Wi-Fi에 있을 때
집이나 사무실에서 휴대폰과 Mac이 같은 네트워크에 있으면 앱은 직접 경로를 사용합니다. 모든 것에 빠르게 접근할 수 있는 가장 좋은 경우입니다. 서비스 상태, 시작과 중지, 알림, AI, 기기 웹 UI, LAN 공유 모두 휴대폰이 Mac 바로 옆에 있는 것처럼 동작합니다. 네트워크 관점에서는 실제로 바로 옆에 있기 때문입니다.
Mac은 고정된 HTTPS 제어 서비스를 Bonjour로 알립니다. DHCP, Wi-Fi 이동, 네트워크 변경으로 Mac의 주소가 바뀌어도 휴대폰은 다시 페어링하지 않고 Mac을 다시 찾을 수 있습니다. 앱은 페어링 때 받아 둔 인증서 지문으로 Mac의 신원을 확인하므로, 자체 서명 인증서라도 자신의 네트워크 안에서 위장될 수 없습니다.
여러 대의 휴대폰이 한 LAN에서 동시에 같은 Mac을 사용할 수 있습니다. 휴대폰마다 고유한 서명 키, 권한 수준, 요청 세션이 있으므로 한 대가 다른 휴대폰을 대체하지 않습니다. 여러 대의 FrontierStack Mac이 동시에 자신을 알릴 수도 있습니다. 휴대폰은 자신의 페어링에서 얻은 전체 지문으로 Bonjour 결과를 걸러 내고, 서명된 요청을 보내기 전에 고정된 인증서를 다시 확인합니다.
4.3외부에 있을 때
자신의 네트워크를 벗어나는 순간 직접 경로는 응답을 멈추고, 앱은 나머지 두 경로로 넘어갑니다. 외부 접속은 결국 하나의 질문으로 귀결됩니다. 지금 휴대폰이 Mac에 조금이라도 닿을 수 있는가?
- Tailscale은 휴대폰과 Mac이 tailnet을 공유하고 있으면 언제나 “예”입니다. 가장 신뢰할 수 있는 외부 경로로, 셀룰러, 호텔이나 카페의 Wi-Fi, 거의 모든 라우터 뒤에서 포트를 열지 않고도 동작합니다.
- Cloudflare 터널은 Mac에서 터널이 실행 중이면 언제나 “예”입니다. 휴대폰에는 아무것도 필요 없고 어디서든 접속되지만, 전적으로 Mac이 그 터널을 유지하는지에 달려 있습니다.
둘 다 사용할 수 없으면 — 공유하는 tailnet도, 터널도 없으면 — 앱은 외부에서 Mac을 볼 수 없고 상태 점은 오프라인으로 바뀝니다. 이는 결함이 아니라 예상된 동작입니다. 사설 홈 네트워크에 있는 Mac은 설계상 공개 인터넷에서 접근할 수 없습니다.
4.4기기 웹 UI와 LAN 공유
Mac에 닿는 것은 절반에 불과합니다. Web UIs 페이지(More 아래)는 네트워크에 있는 다른 장비 — 라우터, NAS, 프린터, 대시보드 — 의 웹 인터페이스를 열고, Shared(More 아래)는 Mac이 일시적으로 공개한 LAN 공유를 열 수 있습니다. 이들은 Mac이 아니라 네트워크 자체에 있으므로, 앱이 Mac에 닿는다고 해서 이들에게도 닿는다는 보장은 없습니다.
기기 웹 UI나 LAN 공유는 휴대폰이 실제로 그 네트워크에 들어갈 수 있을 때만 접근할 수 있습니다.
- 같은 Wi-Fi에서 — LAN의 모든 것에 직접 접근할 수 있습니다.
- Tailscale을 통해 — tailnet이 그 네트워크로 라우팅되는 경우, 예를 들어 LAN 대역을 알리는 서브넷 라우터가 있으면 접근할 수 있습니다. 그렇지 않으면 Tailscale로 Mac에는 닿아도 그 옆의 프린터에는 닿지 않습니다.
위의 TIP에서 서브넷 라우터나 Tailscale에 연결된 라우터를 권장하는 실질적인 이유가 이것입니다. “Mac에 닿을 수 있다”를 “네트워크 전체에 닿을 수 있다”로 바꿔 주며, 이 덕분에 외출 중에도 Web UIs와 Shared 화면이 쓸모 있어집니다.
4.5연결 상태
Operations 상단의 색깔 점은 지금 앱이 Mac과 통신할 수 있는지를 정직하게 요약해 보여 줍니다. Fleet은 마지막으로 서명된 인벤토리를 표시할 때마다 별도의 오프라인 배너를 보여 줍니다. 연결에는 세 가지 상태가 있습니다.
| 상태 | 의미 |
|---|---|
| 연결됨 | 앱이 세 경로 중 하나로 Mac에 닿았으며 실시간 데이터를 표시하고 있습니다. 서비스 제어는 기기의 접근 수준이 허용하는 범위에서 동작합니다. |
| 연결 중 | 앱이 순서대로 경로를 시도하고 있습니다. 실행 직후, 네트워크 변경 후, 당겨서 새로 고침 후 잠시 이 상태가 되는 것은 정상입니다. |
| 오프라인 | 응답한 경로가 없습니다. Mac이 잠자기 상태이거나 꺼져 있거나 현재 위치에서 접근할 수 없거나, 제어 서버가 꺼져 있습니다. 앱은 마지막으로 받은 데이터를 오래된 것으로 명확히 표시해 보여 줍니다. |
강제로 다시 시도하려면 Fleet 또는 Operations에서 아래로 당겨 새로 고침하십시오. 앱이 경로 목록을 다시 시도하는 동안 상태는 연결 중으로 돌아갔다가 연결됨 또는 오프라인으로 정해집니다. 경로별 근거를 보려면 More → 설정 → Connection을 열고 Check all routes를 누르십시오. LAN, Tailscale 및 기타 저장된 경로와 각각의 결과, 지연 시간이 표시됩니다. Fleet의 간결한 Phone & Fleet 행은 화면의 나머지 부분을 차지하지 않고 사이트 보기를 엽니다.
4.6Mac에서 FrontierStack이 닫혀 있을 때
Mac 앱에서 Keep MCP and the CLI available when FrontierStack is closed가 켜져 있으면, FrontierStack 자체가 닫혀 있는 동안에도 작은 백그라운드 서비스가 휴대폰에 응답합니다. 휴대폰이 페어링한 것과 같은 인증서를 사용하므로 다시 페어링할 필요가 없으며, 연결 확인 시 상태 점도 그대로 녹색으로 바뀝니다.
- Start FrontierStack on the Mac(Operations의 상태 줄 아래)은 FrontierStack을 숨긴 채, 유휴 상태가 되면 다시 종료되는 백그라운드 서비스로 시작합니다.
- Open FrontierStack on the Mac은 윈도우와 함께 FrontierStack을 정상적으로 열며, 계속 실행된 상태로 유지됩니다. 서비스 제어가 허용된 기기여야 합니다.
- 대시보드나 서버 등 그 밖의 항목을 열어도 FrontierStack이 시작됩니다. 상태 줄이 노란색으로 바뀌며 시작 중이라고 표시하고, 휴대폰은 자동으로 다시 시도합니다. 콜드 스타트에는 최대 2분이 걸릴 수 있습니다.
앱이 닫혀 있는 동안에도 알림은 계속 도착합니다. 잠자기 상태의 Mac은 여전히 아무것에도 응답하지 않습니다.
4.7갖추어야 할 조건
세 경로 중 어느 것도 존재하지 않는 연결을 만들어 낼 수는 없습니다. 앱이 Mac에 닿으려면 다음 조건이 모두 충족되어야 합니다.
- 데스크톱 라이선스가 유효해야 합니다. 페어링과 모든 컴패니언 모니터링 및 관리 경로에 필요합니다. Network Check & Device Discovery만 라이선스 없이 사용할 수 있습니다.
- Mac의 제어 서버가 활성화되어 있어야 합니다. 휴대폰이 통신하는 서비스입니다. Mac에서 이 서비스를 끄면 모든 경로가 실패하고 점은 오프라인 상태로 남습니다.
- Mac이 온라인이고 접근 가능해야 합니다. 깨어 있고, 네트워크에 연결되어 있으며, 휴대폰이 있는 곳에서 접근할 수 있어야 합니다 — 같은 Wi-Fi, 공유하는 tailnet, 또는 Mac의 Cloudflare 터널을 통해. 잠자기 상태의 Mac은 아무것에도 응답하지 않습니다. 원격 접속에 의존한다면 Mac이 잠자기에 들지 않도록 설정하는 것을 고려하십시오.
- 외부에 있다면 동작하는 외부 경로가 있어야 합니다. 홈 네트워크 밖에서는 양쪽 모두의 Tailscale 또는 Mac이 계속 실행하는 터널을 뜻합니다.
푸시 알림도 반대 방향에서 같은 논리를 따릅니다. 알림을 보내려면 Mac(또는 Mac의 푸시 릴레이)이 온라인이어야 합니다. 알림이 끊겼다면 원인은 대개 연결이 끊긴 경우와 같습니다 — Mac이 잠자기 상태이거나 꺼져 있거나 접근할 수 없는 경우입니다. 아래 요약표는 세 가지 위치를 정리한 것입니다.
| 현재 위치 | 연결 방식 | 접근 가능한 것 |
|---|---|---|
| Mac과 같은 Wi-Fi / LAN | 네트워크를 통한 직접 연결 | 모두: Mac, 서비스, AI, 기기 웹 UI, LAN 공유 |
| 외부, tailnet 공유 | Tailscale | Mac과 AI. 서브넷 라우터가 그 네트워크로 라우팅하면 기기와 LAN 공유도 가능 |
| 외부, Cloudflare 터널만 있음 | Cloudflare 터널(Mac에서 활성화) | Mac과 AI. 기기 UI는 다른 방법으로 접근 가능한 경우에만 |
| 외부, 헬퍼와 tailnet을 공유하지만 Mac은 오프라인 | 헬퍼로 Tailscale 직접 연결 | 관찰 전용 CPU, 메모리, 온도, 전원, 디스크, 서비스, 최근 이벤트 |
| 외부, Tailscale도 터널도 없음 | — (Mac 경로 없음) | 라이선스 없이 쓸 수 있는 Network Check, 캐시된 인벤토리, 접근 가능한 웹 UI, 제한된 직접 서버 확인, 등록된 Direct SSH, 검토를 거친 작업 준비. 최신 Mac 기반 상태, AI, 실시간 제어는 불가 |
FrontierStack 사용자 설명서 · 버전 1.0.0 · 제4장