← Reach
User Guide

어디서든, 내 Mac 그대로.

Reach 앱 두 개를 설치하고 Mac에 권한을 허용하면, 환경에 맞는 Nearby·Direct·Relay 경로로 같은 Mac에 연결할 수 있습니다. 기본 Nearby 흐름에서는 같은 Wi-Fi에서 한 번 페어링합니다. iPad가 기준이 되는 경험이고, iPhone은 좁은 화면과 입력을 다듬는 동안 실험적 지원(Experimental)입니다.

준비물

Reach는 두 앱이 짝을 이뤄 동작합니다. 하나는 사용하려는 Mac에, 다른 하나는 그 Mac을 조작할 기기에 설치합니다.

Reach Viewer

조작하는 쪽인 iPhone 또는 iPad에서 실행됩니다. App Store에는 Reach Remote라는 이름으로 올라가 있습니다.

iOS 또는 iPadOS 17.0 이상이 필요합니다. iPad가 기준이 되는 경험이고, iPhone은 좁은 화면과 입력을 다듬는 동안 실험적 지원(Experimental)입니다. 지원 모델 목록을 따로 두지는 않습니다.

Reach Host

Mac에서 실행됩니다. 화면과 시스템 오디오를 공유하고, 입력을 받고, 메뉴 막대에서 연결을 기다립니다.

macOS 14(Sonoma) 이상이 필요합니다. 무료이고, Intel과 Apple Silicon을 함께 지원하는 유니버설 빌드이며, Developer ID 서명과 공증을 거쳤습니다. 한 번 설치하면 내장 업데이터가 새 버전을 자동으로 확인하고, 업데이트가 있으면 메뉴에서 설치할 수 있게 알려 줍니다.

시작할 때 계정은 필요 없습니다. 로그인하지 않아도 같은 네트워크에서는 Nearby(같은 네트워크)로, 주소를 알고 있는 Mac에는 수동 Direct IP로 연결할 수 있습니다. 선택 사항인 Reach 계정을 쓰면 내 네트워크 밖에 있는 Mac을 위한 경로 두 가지, Internet Direct와 Relay(중계)가 더해집니다.

설치와 권한

1

Mac에 Reach Host 설치하기

reachremote.app에서 Reach Host 디스크 이미지를 내려받아 Reach Host를 응용 프로그램 폴더로 끌어다 놓고 실행하세요. 메뉴 막대에 자리를 잡고, 공유하는 동안 계속 거기에 있습니다.

2

macOS 권한 허용하기

아래 권한은 Reach Host가 처음 필요로 할 때 macOS가 하나씩 물어보고, 모두 System Settings → Privacy & Security에 모여 있습니다. 로컬 네트워크, 손쉬운 사용, 화면 기록은 정상 세션에 필수입니다. 하나라도 빠지면 Reach Host는 새 세션을 거절하지만, 로컬 네트워크 접근이 허용되어 있다면 어떤 권한이 빠졌는지 Viewer가 설명할 수 있도록 준비 상태를 계속 알릴 수 있습니다. 시스템 오디오 공유는 선택 사항입니다.

화면 기록

공유할 디스플레이를 캡처하는 데 필요합니다. 방금 허용한 권한이 반영되려면 macOS가 Reach Host 재실행을 요구할 수 있습니다.

손쉬운 사용

Reach Viewer에서 보낸 터치, 포인터 이동, 키 입력이 실제로 Mac에 전달되는 데 필요합니다.

로컬 네트워크

Nearby가 사용하는 Bonjour 탐색에 필요합니다. iOS가 물어보면 iPhone과 iPad에서도 허용해 주세요.

시스템 오디오

선택 사항입니다. 시스템 오디오는 ScreenCaptureKit으로 가져오며, Reach Host는 마이크 권한을 요청하지 않고 마이크 샘플도 처리하지 않습니다. Reach는 Mac의 시스템 오디오 출력을 캡처합니다. 오디오는 디스플레이별로 나뉘지 않으므로, 선택한 화면에 보이지 않는 앱의 소리도 함께 전달됩니다. 건너뛰어도 연결은 그대로 되고, 소리만 나오지 않습니다.

업데이트 뒤에는. 앱 서명이 바뀌면 macOS가 화면 기록과 손쉬운 사용 권한을 초기화할 수 있습니다. 업데이트 직후 화면이 검게 나오거나 입력이 먹지 않으면 System Settings → Privacy & Security에서 두 권한을 다시 허용하고 Reach Host를 재실행하세요.
3

iPhone 또는 iPad에 Reach Viewer 설치하기

App Store에서 Reach Remote를 받아 실행하세요. iOS가 물어보는 로컬 네트워크 접근을 허용하면 첫 화면에 내 Mac이 나타납니다.

기본 첫 연결: 같은 Wi-Fi에서

기본 Nearby 흐름이라면 여기서 시작하세요. 같은 네트워크에서 페어링 코드를 확인해 신뢰를 설정합니다. 같은 Reach 계정으로 검증되었거나 Mac에서 iCloud Auto-Trust를 명시적으로 켠 경우에는 첫 연결에서도 코드 없이 신뢰를 설정할 수 있습니다.

  1. Reach Host에서 공유를 시작하고 메뉴 막대에 그대로 두세요.
  2. Reach Viewer를 엽니다. 같은 네트워크에서 Bonjour로 찾아낸 Mac이 Nearby에 나타납니다.
  3. 탭하세요. 기본 설정에서는 아직 신뢰되지 않은 viewer의 첫 연결에 Mac이 짧은 페어링 코드를 표시하며, 그 코드를 iPhone이나 iPad에 입력합니다. 같은 Reach 계정으로 검증된 viewer는 코드 없이 신뢰될 수 있고, Mac에서 iCloud Auto-Trust를 명시적으로 켠 경우 같은 Apple ID로 확인된 viewer도 첫 연결에서 코드 없이 신뢰될 수 있습니다. 이 설정은 기본적으로 꺼져 있습니다.
  4. 디스플레이를 고르고 스트리밍을 시작합니다.
  5. 다음부터는 한 번 탭하면 다시 연결됩니다. 코드가 필요한 경우에도 첫 연결에만 씁니다.
페어링 코드가 왜 필요할까요? 두 기기가 모두 본인 것임을 증명하기 위해서입니다. Reach는 페어링 시점에 Mac의 인증서를 고정해 두기 때문에, 이후 세션이 조용히 다른 기기로 연결될 수 없습니다. 계정으로 신뢰한 Mac은 계정 기기 목록의 지문을, 명시적으로 허용한 첫 직접 연결은 그때 고정한 지문(TOFU)을 씁니다.

어디서든 내 Mac에 연결하기

내 네트워크를 벗어나면 경로는 크게 두 갈래입니다. 하나는 로그인 없이 되고, 다른 하나는 선택 사항인 Reach 계정이 필요합니다.

계정 없이 — 수동 Direct IP

Mac이 인터넷에서 닿을 수 있는 상태라면 Reach Viewer가 곧바로 접속할 수 있습니다.

  • Reach는 기본적으로 UDP 8443을 씁니다. Mac이 공유기나 NAT 뒤에 있다면 그 포트를 Mac으로 포워딩하거나 매핑하세요. Mac에 공인 IPv4가 직접 배정돼 있다면 이 단계는 필요 없습니다.
  • Reach Viewer에서 주소로 Mac을 추가하고 host:port 형식으로 입력합니다.
  • 세션은 기기 대 기기로 직접 연결됩니다. 시그널링도, 중계도, 중간에 끼어드는 것이 없습니다.
참고하세요. 수동 Direct IP는 현재 외부에서 닿는 공인 IPv4 엔드포인트가 필요합니다. Mac이 공유기나 NAT 뒤에 있다면 Reach가 쓰는 UDP 포트를 매핑해야 하고, 그 매핑은 CGNAT를 통과하지 못하므로 그 경우 아래의 Internet Direct(공인 IPv6 후보 사용 가능)나 Relay(중계) 경로가 답입니다.

Reach 계정으로 — Internet Direct와 Relay(중계)

  1. Reach Viewer의 계정 항목을 열고 이메일로 로그인하세요. Reach가 일회용 매직 링크나 코드를 보내 주며, 비밀번호는 없습니다.
  2. Reach Host에서도 같은 계정으로 로그인하고 그 Mac을 계정에 등록합니다.
  3. 이제 iPhone이나 iPad에 계정에 등록된 Mac으로 나타나며, 페어링 코드는 필요 없습니다.

같은 계정으로 로그인한 기기끼리는 자동으로 서로를 신뢰하므로, 새로 산 iPhone이나 iPad도 코드 없이 들어올 수 있습니다. 다만 신뢰와 도달 가능성은 다른 이야기입니다. 실제로 연결하려면 접속 가능한 직접 후보 주소가 있거나 중계가 설정되어 있어야 합니다.

Internet Direct

로그인 상태에서 쓰는 경로입니다. 저장해 둔 연결 프로필을 바탕으로 직접 연결 후보를 시도합니다 — NAT를 통과해 찾아낸 엔드포인트뿐 아니라 공인 IPv6 주소와 라우터가 매핑한 엔드포인트도 포함합니다.

Relay(중계)

직접 연결이 아예 만들어지지 않는 네트워크를 위한, 로그인 상태 전용 경로입니다. Reach Host에 입력해 둔 본인 TURN 자격 증명으로 Cloudflare TURN을 거쳐 암호화된 세션을 전달합니다. 직접 경로보다 지연이 더 붙으며, 얼마나 붙는지는 중계 경로와 네트워크 상태에 따라 달라집니다.

경로 고르기

경로 쓰이는 상황 지연 준비물
Nearby(같은 네트워크) 두 기기가 같은 네트워크에 있을 때 가장 낮음 — 같은 서브넷의 직접 연결 계정 불필요. Bonjour 탐색, 기본 설정에서는 첫 연결에만 페어링 코드
수동 Direct IP Mac의 공인 주소를 알고 있을 때 낮음, 기기 대 기기 직접 연결 계정 불필요. 공인 IPv4 엔드포인트 필요, NAT 뒤면 UDP 8443 매핑 후 host:port 입력
Internet Direct NAT 통과로 닿을 수 있는 원격 Mac 낮음에서 보통 Reach 계정, 저장된 연결 프로필 경유
Relay(중계) 엄격한 NAT나 CGNAT라 직접 경로가 만들어지지 않을 때 보통 — 경로와 네트워크에 따라 직접 경로보다 더 붙음 Reach 계정과, Reach Host에 입력한 본인 Cloudflare TURN 자격 증명

자동(Auto)은 지금 로그인 상태에서 쓸 수 있는 경로만 시도합니다. 로그아웃 상태라면 Nearby(같은 네트워크)와 저장해 둔 수동 Direct IP 주소가 대상이고, 로그인하면 여기에 Internet Direct와 Relay(중계)가 더해집니다. 물론 경로를 직접 골라도 됩니다.

Reach는 마지막으로 고른 경로를 Mac별로 기억합니다. 평소 LAN으로 붙는 Mac과 평소 Relay(중계)로 붙는 Mac이 각자의 설정을 그대로 유지합니다.

신뢰와 보안

  • 암호화된 전송 — 모든 세션은 QUIC 위에서 TLS 1.3으로 동작합니다. 영상, 오디오, 입력은 내 기기들 사이에서 암호화된 채로 오갑니다.
  • 고정된 신원 — Mac의 인증서 지문은 페어링 시점에 기록되거나, Reach 계정의 기기 목록에 보관되거나, 명시적으로 허용한 첫 직접 연결에서 고정(TOFU)됩니다. 이후 지문이 달라지면 연결은 거부되므로 세션이 조용히 다른 기기로 바뀔 수 없습니다.
  • 입장 통제 — Reach Host는 코드로 페어링했거나, 같은 Reach 계정으로 검증됐거나, Mac에서 iCloud Auto-Trust를 명시적으로 켠 경우 같은 Apple ID로 확인된 Reach Viewer만 받아들입니다. iCloud Auto-Trust는 기본적으로 꺼져 있고, 켜면 같은 Apple ID를 쓰는 viewer가 첫 연결에서도 페어링 코드 없이 신뢰될 수 있습니다. 주소를 안다고 들어올 수 있는 것이 아닙니다.
  • 접근 회수 — Reach Host의 신뢰 기기 목록에서 그 기기를 지우면 해당 지문의 세션이 닫히고, Reach 계정이나 iCloud 자동 신뢰를 통한 재입장도 함께 차단됩니다. 다시 신뢰하려면 Mac에 표시된 새 페어링 코드를 명시적으로 입력해야 합니다. 계정의 기기 등록 자체까지 취소하려는 경우에만 Reach 계정에서도 따로 제거하세요.
  • Reach를 거치지 않습니다 — 화면, 오디오, 입력은 Reach가 운영하는 서버를 통과하지 않습니다. Relay(중계) 경로에서도 패킷은 암호화된 채로 Cloudflare TURN을 지나가며, Cloudflare는 그 내용을 읽을 수 없습니다.
  • 추적 없음 — 앱에는 추적 SDK도 광고 식별자도 없습니다. 백엔드는 서비스를 운영하고 보호하기 위한 운영 텔레메트리와 로그를 남기며, 광고나 프로파일링에는 쓰지 않습니다.

로그인 상태에서 Internet Direct와 Relay(중계)를 시도할 때는 시그널링이 일시적인 연결 후보, 즉 IP 주소와 포트를 주고받습니다. 이 정보는 시도 하나당 최대 60초 동안 보관되고 시도가 취소되거나 만료되면 삭제됩니다. 자세한 내용은 개인정보 처리방침에 있습니다.

내 작업 공간

Reach Viewer의 작업 공간에는 서로 독립적인 최대 4개 화면을 동시에 띄울 수 있습니다. 신뢰하는 Mac 한 대의 디스플레이 네 개일 수도, 서로 다른 Mac 네 대일 수도, 둘을 섞어도 됩니다.

디스플레이 고르기

실제 디스플레이

Mac에 실제로 연결된 모니터 중 하나를 띄웁니다. 이미 있는 화면을 그대로 넘겨받고 싶을 때 쓰세요.

기존 가상 디스플레이

새로 만드는 대신, Reach가 이미 뷰어 크기에 맞춰 만들어 둔 가상 디스플레이를 다시 씁니다.

새 가상 디스플레이

화면 크기에 맞는 디스플레이를 Mac에 새로 만들어 달라고 요청합니다. iPhone이나 iPad가 미러링이 아니라 별도의 작업 공간이 됩니다.

주사율까지 보는 재사용

재사용할 때 주사율도 함께 따집니다. 30Hz로 만들어 둔 가상 디스플레이 때문에 나중의 60fps 요청이 묶이는 일은 없습니다.

알아 두면 좋은 설정

  • 커서 핸들 — Direct Touch 모드에서 작은 핸들이 Mac 커서를 따라다닙니다. 손끝에 가린 곳을 더듬는 대신 포인터를 정확하게 옮길 수 있어요. Mac 쪽에서는 Reach Host → Devices & Trust → Advanced → Cursor Telemetry에서 끌 수 있습니다.
  • 스크롤 방향 — 두 손가락 터치 스크롤과 트랙패드 스크롤을 각각 따로 반전할 수 있어서, 각 입력이 원래 쓰던 감각 그대로 움직입니다.
  • 코덱 — HEVC와 H.264 모두 하드웨어 가속을 쓰고, QUIC 위에서 비트레이트가 상황에 맞게 조절됩니다. 코덱은 직접 고르는 대신 Mac과 협상해서 정해지고, Relay(중계) 경로는 첫 프레임이 확실히 도착하도록 H.264로 시작합니다.
  • 해상도, 프레임률, 비트레이트 — Reach가 알아서 맞춰 가지만, 느린 네트워크를 위해 Reach Viewer 설정에서 해상도와 프레임률, 비트레이트 상한을 직접 걸 수 있습니다. 실제로 나오는 해상도와 프레임률은 선택한 Mac 디스플레이와 viewer 기기, 네트워크에 따라 달라집니다.
  • 오디오 — Mac의 시스템 오디오 출력을 캡처합니다. 디스플레이별로 분리되지 않으므로 선택한 화면 밖 앱의 소리도 포함됩니다. Reach Viewer에서는 영상 타임라인을 따라가고, 소리가 화면에서 밀리면 오래된 큐를 비우고 다시 맞춥니다.
  • 키보드와 포인터 — 하드웨어 키보드, 포인터, 트랙패드가 모두 Mac으로 이어지고, Caps Lock으로 Mac에서 한/영을 전환합니다. 세로 모드에서는 화상 키보드가 Mac의 해상도를 바꾸는 대신 보이는 영역만 줄입니다.

Reach 계정

계정은 선택 사항입니다. 집 밖에서도 내 기기들이 서로를 찾고 신뢰할 수 있도록, 그리고 Internet Direct와 Relay(중계)가 참고할 프로필을 남겨 두기 위해 존재합니다.

무엇이 저장되나요

  • 이메일 주소. 로그인에만 씁니다.
  • 계정 레코드. 계정 식별자와 이메일, 서버가 보관하는 계정 서명 키, 그리고 로그인 상태를 관리하는 메타데이터입니다.
  • 기기 목록. 등록된 기기마다 기기 식별자, 이름, 종류, 공개 키, 키 지문, TLS 인증서 지문, 등록·최근 확인·해지 시각을 담습니다. Mac 호스트라면 다른 기기가 접속할 수 있도록 닿는 주소와 포트, 직접 연결 후보도 함께 보관합니다.
  • 로그인 상태. 수명이 짧은 세션 토큰과 리프레시 토큰을 해시한 형태로 만료·회전 정보와 함께 저장하고, 매직 링크 토큰은 해시로만 보관하고, 6자리 폴백 코드는 코드 자체를 이메일·컨텍스트·만료·사용·시도 정보와 함께 보관합니다.
  • 패스키를 쓰는 경우 WebAuthn 챌린지와 패스키 공개 자격 증명. 그리고 로그인 표면을 보호하기 위한 IP·이메일 기반 단기 요청 카운터.

백엔드는 Cloudflare에서 동작합니다. 특정 처리 지역을 보장하지는 않습니다. 화면, 오디오, 입력 내용은 절대 보관하지 않습니다.

기기 관리와 계정 삭제

  • 로그아웃은 그 기기의 로그인만 해제하고, 등록 자체는 남겨 둡니다.
  • 기기 제거는 다른 기기는 그대로 둔 채 해당 기기의 계정 접근만 회수합니다.
  • 앱 안에서 실행하는 계정 삭제는 계정 기록, 등록된 모든 기기, 모든 세션, 대기 중인 로그인 코드, 그리고 그 계정에 연결된 WebAuthn 챌린지와 패스키 자격 증명을 계정 데이터베이스에서 제거합니다. 계정이 만들어지기 전 생성돼 계정 식별자가 비어 있는 WebAuthn 챌린지는 이 동작으로 삭제되지 않으며, 만료되면 더 이상 인증에 쓰이지 않습니다. 다만 현재 배포는 그 시점의 물리적 삭제를 보장하지 않습니다. 서비스 보호용 단기 요청 카운터와 운영 로그도 이 요청의 대상이 아닙니다. 로그아웃은 삭제가 아닙니다.

문제 해결

Nearby에 Mac이 보이지 않습니다
  • Mac 메뉴 막대에서 Reach Host가 실행 중이고 공유 상태인지 확인하세요.
  • 두 기기가 같은 네트워크에 있어야 합니다. 게스트 Wi-Fi나 회사 Wi-Fi는 Nearby가 의존하는 Bonjour 탐색을 막는 경우가 많습니다.
  • 양쪽의 로컬 네트워크 권한과, 공유기의 VPN이나 단말 격리 설정도 확인하세요.
화면이 계속 검게 나옵니다
  • Reach Host에 화면 기록 권한을 허용한 뒤 앱을 완전히 종료했다가 다시 여세요. macOS는 이 권한이 반영되기 전에 재실행을 요구할 수 있습니다.
  • 디스플레이 선택 화면에서 디스플레이를 다시 고르세요.
터치나 키보드 입력이 먹지 않습니다
  • Reach Host에 손쉬운 사용 권한을 허용하고 앱을 종료했다가 다시 여세요.
  • 필수 권한이 하나라도 빠져 있으면 Reach Host가 연결을 거부하므로 로컬 네트워크와 화면 기록도 함께 확인한 뒤, Reach Viewer에서 다시 연결하세요.
앱 업데이트 직후 화면이 검거나 입력이 멈췄습니다

앱 서명이 바뀌면 macOS가 화면 기록과 손쉬운 사용 권한을 초기화합니다. System Settings → Privacy & Security에서 두 권한을 다시 허용한 뒤 Reach Host를 재실행하세요.

집에서는 되는데 밖에서는 안 됩니다
  • 로그아웃 상태에서 내 네트워크 밖의 Mac에 닿는 경로는 수동 Direct IP뿐입니다. 주소가 CGNAT 뒤가 아닌 공인 IPv4 엔드포인트인지, 그리고 Mac이 라우터나 NAT 뒤에 있다면 UDP 매핑이 살아 있는지 확인하세요.
  • 로그인 상태라면 Internet Direct를 먼저 시도하고, 직접 경로가 만들어지지 않을 때 Relay(중계)로 넘어가세요.
Relay(중계)가 도무지 연결되지 않습니다
  • Relay(중계)는 Reach Host에 입력한 유효한 Cloudflare TURN 자격 증명이 있어야 합니다. 값이 들어 있는지, 만료되지 않았는지 확인하세요.
  • 호스트 쪽 네트워크에 VPN이나 가상 인터페이스가 많으면 중계 설정이 깨질 수 있습니다. 더 단순한 네트워크에서 시도하거나 수동 Direct IP를 쓰세요.
  • Relay(중계)는 로그인 상태에서만 쓰는 경로라는 점도 기억하세요. 로그아웃 상태에서는 후보에 아예 들어가지 않습니다.
소리가 나지 않습니다
  • Mac에서 시스템 오디오 공유를 켜고, 필요하면 Reach Host가 열어 주는 화면 기록/시스템 오디오 설정에서 권한을 복구하세요. Reach는 마이크 권한을 요청하지 않습니다. 선택 사항이라 켜지 않은 Mac도 연결은 잘 되지만 소리는 나오지 않습니다.
  • Reach Viewer의 오디오 표시를 확인하세요. 호스트에서 오디오 공유가 꺼진 경우와 Mac이 오디오 권한을 거부한 경우를 따로 알려 줍니다.
  • Reach Viewer의 컨트롤 바에서 세션이 음소거되어 있지 않은지 확인하세요.
문제는 어떻게 알리면 되나요?

Reach Viewer의 연결 화면에서 실패 리포트를 복사해 [email protected]으로 보내거나 GitHub에 이슈를 남겨 주세요. 리포트에는 그 시도의 경로, 소요 시간, 오류가 담기며 신원을 알아볼 수 있는 정보는 가려집니다.