Mac에서 디버깅하기
Mac에서는 Chute와 살펴보려는 트래픽이 같은 기계에 있으므로, iPhone 안내서가 여러 단계를 들이는 것들 — 케이블, 리스너, 암호 — 이 필요 없습니다. 대신 다른 질문이 생깁니다: 트래픽이 애초에 Chute에 닿고 있는가. macOS에서는 애플리케이션이 프록시를 그냥 무시하기로 할 수 있기 때문입니다.
1. 트래픽이 Chute를 지나가게 하기
두 가지 방법이 있고 서로 독립적입니다. 메뉴에 둘 다 있습니다:
- 시스템 프록시 — 메뉴 맨 위의 토글. Chute를 시스템 HTTP/SOCKS 프록시로 등록합니다. 시스템 프록시 설정을 읽는 애플리케이션(브라우저, 대부분의 GUI 앱)은 Chute를 지나가고, 읽지 않는 것들은 영향을 받지 않습니다.
- Enhanced Mode(⌘E) — 네트워크 계층에서 트래픽을 잡으므로 애플리케이션이 프록시를 어떻게 생각하든 상관없어집니다. 프록시를 전혀 지원하지 않는 앱에는 이것이 필요합니다. 승인 흐름과 두 구현 방식은 향상된 모드를 보십시오.
터미널 도구가 흔한 함정입니다: curl, git, npm 같은 것들은 시스템 설정이 아니라 환경 변수 HTTP_PROXY/HTTPS_PROXY를 읽습니다. 메뉴의 Copy Shell Export Command(⌘C)가 맞는 한 줄을 클립보드에 넣어 줍니다 —
export HTTPS_PROXY=http://127.0.0.1:8118;export HTTP_PROXY=http://127.0.0.1:8118;export NO_PROXY=127.0.0.1,localhost,.example.com
— 포트는 실제 HTTP 리스너의 것이고, NO_PROXY는 skip-proxy 목록으로 만들어지므로 명령줄 도구는 시스템 프록시가 우회하는 것과 정확히 같은 것을 우회합니다. 테스트하는 셸에 붙여 넣으십시오. 그 셸에만 적용됩니다.
이렇게 보여야 합니다: 앱을 쓰는 동안 메인 창의 Traffic 탭이 행으로 채워집니다. 한 줄도 없다면 트래픽이 Chute에 닿지 않은 것입니다 — 복호화 문제를 찾기 전에 이 단계로 돌아가십시오.
2. Traffic 탭 읽기
Traffic은 실행 중인 연결을 검색 필드와 개수(N active)와 함께 나열합니다. Show columns ▾로 배치를 바꿉니다:
- Double-row(기본값) — 연결당 두 줄. 훑어보기에 편합니다.
- Wide table — 연결당 한 줄로 모든 열을 펼칩니다: 호스트, Process, 규칙, 정책, Proto, 업로드, 다운로드, Totals, 상태. 머리글을 눌러 정렬할 수 있습니다.
- Group by app — 연결을 그것을 연 애플리케이션별로 묶어 이름과 아이콘과 함께 보여 줍니다. "이 프로세스가 누구와 이야기하고 있나"에 가장 빨리 답합니다.
행을 오른쪽 클릭하면 Show Details, Copy Host, Copy Details, Filter Logs(로그 탭으로 이 연결로 좁혀진 상태로 이동), Close Connection이 나옵니다.
Show Details는 그 연결의 호스트, Process, 프로토콜, 원격, 규칙, 정책, 재작성, 업로드, 다운로드, 상태를 담은 창을 엽니다 — 어떻게 경로가 정해졌는지에 관한 것은 전부 여기 있습니다.
Traffic 탭은 요청과 응답 본문을 보여 주지 않습니다. 그것이 상세 창의 요청 및 기록 버튼의 역할입니다: 누르면 웹 콘솔이 열리고, 본문은 거기 있습니다. 열리는 것은 콘솔 홈이지 그 연결 자체는 아닙니다.
3. 요청을 보내지 않고 규칙 시험하기
규칙 탭에 Test Rule... 버튼이 있습니다. URL이나 도메인만 입력하고 Test를 누르면 Chute가 해석한 호스트와 포트, DNS 결과, 일치한 규칙, 그 규칙이 고른 정책, 그리고 참고 사항을 답합니다.
"이건 왜 직접 연결로 갔지" 또는 "내 두 규칙 중 어느 쪽이 이기지"가 질문일 때 쓰십시오 — 실행 중인 규칙 집합을 참조하므로, 방금 편집한 설정이 실제로 로드된 그것인지도 함께 알려 줍니다. 답이 낡아 보이면 설정을 다시 읽으십시오(⌘R). 같은 질문을 API로 하면 POST /api/rules/match입니다.
4. 기록과 복호화 켜기
둘 다 메뉴에 있고, 둘 다 실행 중인 커널에 작용합니다:
- Traffic Capture(⌘B) — 요청과 응답 본문을 보관합니다. 즉
replica설정입니다. 기본값은 꺼짐이고, 켜기 전에는 어느 것에도 본문이 없습니다. - Enable MitM(⌘M) —
[MITM]의hostname목록에 있는 호스트의 복호화를 켭니다.
둘 다 설정 파일에 다시 쓰이지 않습니다. Reload Configuration이나 재시작 뒤에는 파일의 replica와 [MITM] enable이 이깁니다.
CA는 macOS에서 한 단계입니다. 설정 창에서 MitM을 여십시오:
- Generate New Certificate(또는 Import Certificate from PKCS#12 File).
- Install the Certificate to System — macOS가 관리자 암호를 요청한 뒤 신뢰할 수 있는 루트로 시스템 키체인에 추가합니다. iOS 같은 별도의 "신뢰" 단계는 없습니다.
- Export the Certificate는
.pem사본을 씁니다. 같은 CA를 휴대전화나 Apple TV, 컨테이너에 넣는 방법이 이것입니다.
5. 한 프로세스로 좁히기
macOS는 Chute가 어떤 애플리케이션이 연결을 열었는지 아는 플랫폼이고, 규칙도 그것을 쓸 수 있습니다:
[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy
PROCESS-NAME, PROCESS-PATH, PROCESS-NAME-REGEX는 프로세스 규칙을 보십시오. Traffic 탭의 Group by app과 함께 쓰면, 애플리케이션 하나만 프록시로 — 또는 모의 응답으로 — 보내고 기계의 나머지는 평소대로 둘 수 있습니다.
6. Mac에서만 되는 것
- Map Local의
data=파일 경로. 파일은 Chute를 실행하는 기기가 요청 시점에 읽습니다. Mac에서는 그 기기가 편집하고 있는 기계 자신이므로 실제 경로가 통하고, 파일을 고치면 다음 응답부터 바뀝니다(다시 읽을 필요 없음). 휴대전화에서는 같은 경로가 아무 의미도 없습니다 — iPhone 안내서가base64=를 쓰는 이유입니다. - 디스크 위의 파일. 로그 조각, 실행 표시, 캡처한 내용은
~/Chute/Share/<run id>/아래에 있습니다. 파일 위치(macOS)를 보십시오. 공유 시트를 거치지 않고 버그 보고에 바로 첨부할 수 있습니다. - 다른 기기에 제공하기.
allow-wifi-access를 켜면 네트워크의 다른 기계들이 프록시 설정을 이 Mac으로 향하게 할 수 있습니다. 그 트래픽은 같은 보기에 나타나고 Dashboard의 클라이언트 사이드바에서는 원격 아래로 들어갑니다 — Chute가 전혀 실행되지 않는 기기, Windows 노트북이나 스마트 TV를 살펴보는 방법이 이것입니다.
7. Traffic 탭으로 부족할 때
- 웹 콘솔 — 메뉴 막대 → 웹 콘솔 열기. 본문, HAR 내보내기, 어떤 재작성이 실제로 작동했는지 알려 주는 규칙 페이지, 진단 프로브가 있습니다.
[General]의external-http-controller가 필요합니다. - Chute Dashboard — 별도의 무료 앱. 로컬 커널에 대해서는
[General]에external-controller-access = <암호>@127.0.0.1:6170을 적고, Dashboard의 원격 탭에서 그 포트와 암호로127.0.0.1에 접속합니다. MitM 도구 패널과 오른쪽 클릭 한 번으로 나오는 HAR / curl 내보내기 때문에 설치할 값어치가 있습니다. - 로그 탭 — 먼저
loglevel = verbose로 수준을 올리고, 끝나면 되돌리십시오. 연결 행의 Filter Logs는 탭을 그 연결 하나로 좁힙니다.
이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.