Chute iOS 릴리스 노트
Version 1.2.2 (382)
새로운 기능:
- 프록시 체이닝 추가: 정책에
underlying-proxy를 지정하면 그 프록시를 거쳐 서버에 연결할 수 있고, 정책 그룹은 모든 멤버를 하나의 업스트림을 거쳐 내보낼 수 있으며, 「고급」에 새로 생긴 「프런트 프록시」 행(global-underlying-proxy)은 자체 업스트림을 지정하지 않은 모든 노드에 같은 처리를 적용합니다. Tailscale을 제외한 모든 전송 방식을 체이닝할 수 있습니다. 스트림 프로토콜은 업스트림의 스트림을 타고, Hysteria2, TUIC, MASQUE와 HTTP/3 기반 XHTTP는 업스트림의 UDP 릴레이를 고정 1280바이트 패킷으로 타며, WireGuard와 AmneziaWG는 내부 MTU를 1280바이트로 두고 업스트림을 통해 터널링하고, SSH와 AnyTLS 세션은 업스트림 위에서 열립니다. 순환하거나, 16단계보다 깊게 중첩되거나, 존재하지 않는 정책을 가리키는 체인은 거부되며 절대 직접 연결로 나가지 않습니다 - 릴레이 그룹 추가(
relay, Clash 및 mihomo와 동일): 멤버가 작성된 순서대로 체이닝됩니다. 첫 번째 멤버는 직접 연결하고, 이후의 각 멤버는 앞선 멤버들을 거쳐 연결하며, 마지막 멤버가 목적지에 연결합니다. 그룹 편집기에서 Relay를 선택할 수 있으며, 멤버를 그 순서대로 유지하고 최소 두 개의 멤버를 요구합니다 - 무작위 그룹 추가(
random, Shadowrocket과 동일): 연결마다 멤버를 무작위로 고르며, UDP는 UDP를 지원하는 멤버 중에서만 고릅니다. 무작위 그룹에는 바꿀 선택 항목이 없으므로 그룹의 정책을 고르는 화면에서는 모두 제외되며, 그룹 편집기에서도 무작위 그룹으로 유지됩니다 - 대시보드와 웹 콘솔에 프록시 체인 추가: 요청 상세와 UDP 목록에 모든 홉(
Airport/HK-01 → Landing)이 표시되고, HAR 내보내기에도 경로가 포함됩니다 - 규칙 제공자 및 프록시 제공자 편집기에 「다운로드 정책」 추가:
policy=는 선택한 정책을 거쳐 해당 목록을 가져오며, 존재하지 않는 정책 이름을 지정하면 직접 다운로드하지 않고 다운로드가 실패합니다 - Shadowsocks 편집기에 UDP over TCP(
udp-over-tcp, 버전 1 또는 2) 추가: 프록시의 UDP를 TCP 연결 안에 실어 보내므로, 업스트림이 UDP를 지원하지 않는 체인을 거쳐도 동작합니다 - VMess와 VLESS에 UDP 지원 추가: 이전에는 둘 중 어느 쪽으로 보낸 UDP든 그대로 거부되었지만(
udp-policy-not-supported-behaviour를 따랐으며 기본값은 REJECT), 이제 mihomo, sing-box, Shadowrocket처럼 목적지마다 연결 하나로 전달됩니다 - 본문 재작성에 jq 추가:
http-request-jq와http-response-jq가 JSON 본문에 실제 jq 프로그램을 실행하며, 편집기에 「JQ 프로그램」 필드가 추가되었습니다. 잘못된 프로그램은 오류로 보고되고 해당 규칙은 건너뛰며, JSON이 아닌 본문, 실행에 실패한 프로그램, 빈 출력의 경우에는 모두 본문을 그대로 둡니다 - 범용 스크립트 추가:
type=generic스크립트는 자동 트리거가 없으며, 편집기의 「실행」 버튼이나GET /api/scripts와POST /api/scripts/run을 통해 요청할 때만 실행됩니다. 스크립트 편집기에는 「이벤트 이름」 필드도 추가되었습니다. 전달되는 이벤트는network-changed뿐이므로, 다른 이벤트를 지정한 이벤트 스크립트는 실행되지 않습니다 - 전용 DNS 풀 추가:
direct-dns-server는 규칙이 DIRECT로 보내는 도메인을,proxy-dns-server는 프록시 서버 자체의 호스트 이름을 해석하고,fallback-dns-server는 주 서버가 응답하지 않을 때 조회됩니다. 각 풀은 전역 서버로 폴백하며, DNS 편집기에 각각의 행이 있습니다 - DNS 업스트림에
#proxy/#proxy=<policy>추가(DoQ와 DoH3 포함): QUIC 리졸버는 정책의 UDP 릴레이를 타고, UDP를 지원하지 않는 정책은 해당 서버를 직접 조회하지 않고 건너뛰며, 정책을 거쳐 보내는 일반 리졸버는 DNS over TCP로 전환됩니다. 또한 DNS over UDP를 차단하는 경로를 위해 평문tcp://업스트림도 받아들입니다 encrypted-dns-follow-outbound-mode,allow-dns-svcb(켜지 않으면 HTTPS와 SVCB 질의에 빈 응답을 반환) 및 서버별#h3,#skip-cert-verify,#disable-ipv4,#disable-ipv6,#disable-qtype=추가- 로컬 DNS 매핑 기능 확장:
[Host]항목이 나열한 모든 서버를 유지하고 병렬로 조회하며, 하나의 도메인을 여러 주소에 매핑하고, 규칙 세트(RULE-SET:<url>)를 키로 사용할 수 있고, 해당 도메인에 대해type=dns스크립트(script:<name>)를 실행하며, 네트워크별 매핑을 위한ssid:<name>도 받습니다 - 규칙 알림 추가: FINAL을 포함한 모든 규칙에
notification-text=와notification-interval=을 지정할 수 있으며, 규칙이 일치하면 알림을 보냅니다(규칙마다 간격당 최대 한 번). 알림은 앱의 「알림 허용」 스위치를 따르며, 알림을 탭하면 알림에 담긴 URL이 열립니다 FINAL,<policy>,dns-failed추가: 이름을 해석할 수 없을 때 연결을 닫지 않고, FINAL 정책으로 원격 해석을 사용해 연결합니다- REJECT 계열을 실제 정책으로 추가(REJECT-DROP, REJECT-NO-DROP, REJECT-TINYGIF, REJECT-IMG, REJECT-DICT, REJECT-ARRAY, REJECT-200, REJECT-VIDEO): 각각 문서에 명시된 본문으로 HTTP 요청에 응답하며, 30초 안에 50회를 넘게 거부된 호스트는 REJECT-DROP으로 격상됩니다. 정책 선택기에 이들이 표시되고, 예전에 현지화된 레이블을 기록하던 자리에 DIRECT / REJECT / PROXY 토큰을 기록하며, 이전 빌드가 남긴 레이블도 복구합니다
- 인라인 규칙 세트 추가:
[Ruleset Name]섹션이 설정 편집기에 별도로 나열되어 줄 단위로 편집되고,RULE-SET,<name>으로 참조됩니다. 인라인 규칙 세트끼리의 참조도 가능하며, 최대 8단계까지 중첩할 수 있고 순환 참조는 거부됩니다 - SSID 관련 기능 추가:
[SSID Setting]DNS 재정의가 네트워크별로 적용되고(이름,BSSID:,TYPE:WIFI/CELLULAR/WIRED,ROUTER:, 따옴표로 묶은 이름과 와일드카드 이름), 네트워크가 바뀌면 이전 리졸버의 캐시를 비웁니다.ssid와subnet정책 그룹은 현재 네트워크에 따라 멤버를 고르고, SUBNET 규칙도 현재 네트워크와 대조되며, 이제suspend=true로 터널이 중지됩니다. 네트워크 이름이나TYPE:항목은 온디맨드 연결 해제 규칙이 되고,BSSID:,ROUTER:, 와일드카드 항목은 확장 프로그램이 직접 일시 중단하며, 「항상 켜짐」 때문에 터널이 다시 연결될 상황이면 확장 프로그램이 그 사실을 알려 줍니다 - DEST-PORT, SRC-PORT, IN-PORT 범위와 비교(
80-81,>=50000,/목록),HOSTNAME-TYPE값IPv4,IPv6,DOMAIN,SIMPLE을 추가했으며, IN-TYPE, IN-USER, IN-NAME 규칙이 제대로 동작합니다. 이 규칙들은 이제 시험 실행에서만이 아니라 실제 트래픽과도 대조됩니다 - MitM 제어 추가: HTTP/2 복호화(
h2), HTTP/3가 복호화를 우회하지 못하도록 복호화 대상 호스트로 가는 QUIC 차단(auto-quic-block), 복호화 대상에서 호스트 제외, 호스트 목록 키워드<ipv4-address>,<ipv6-address>,<simple-hostname>대조 - 도메인 기준 QUIC 라우팅 추가: 클라이언트의 QUIC Initial에서 이름을 읽고, 여러 Initial에 나뉜 ClientHello를 재조립하며, 이름을 알아낼 때까지 흐름을 보류하므로 IP 주소로 직접 향하는 HTTP/3 연결도 DOMAIN 규칙으로 라우팅됩니다
icmp-auto-reply추가(기본 켜짐): 터널 안의 ping에 시간 초과 없이 IPv4와 IPv6 모두 로컬에서 응답합니다tun-included-routes추가: 나열한 CIDR이 기본 라우트 다음으로 터널의 라우트에 추가됩니다. 시스템은 더 구체적인 라우트를 우선하므로, 원래라면 Wi-Fi 인터페이스 자체의 서브넷이나 다른 VPN이 가져갈 대역도 Chute를 거치게 됩니다. 터널을 끊어 버릴 항목(루프백, 터널 자체의 서브넷, 링크 로컬, 멀티캐스트, 브로드캐스트, 프리픽스 길이 0)은 거부되고 로그에 기록되며, 사설 대역은 경고와 함께 허용되고, 편집한 목록은 터널을 재시작하지 않고 다시 로드할 때 적용됩니다- 가져오기 범위 확장: mihomo GEOSITE와 카테고리 GEOIP 규칙이 실제로 동작하는 규칙 세트로 확장되고,
policy-path그룹은update-interval, 필터, 포함 목록을 갖춘 제공자로 합성되며, mihomoSUB-RULE은 AND 규칙으로 확장됩니다. sing-boxdetour와 mihomodialer-proxy는 프록시 체이닝으로 가져오고, WireGuardallowed-ips는 컴파일·적용되어 분할 터널이 더 이상 모든 목적지를 삼키지 않으며, 정책의interface=/allow-other-interface=는 해당 정책의 연결을 하나의 네트워크 인터페이스에 고정합니다 - 스크립트 API 확장:
$httpAPI는 소켓을 열지 않고 엔진 자체 라우트를 호출하고,$httpClient는policy를 따르며,read-etc-hosts는 hosts 파일을 DNS에 제공하고,$event.name은 실제로 발생한 이벤트를 보고합니다 - 모의 응답 설정 추가(본문으로 텍스트, 파일, base64, 1×1 GIF를 사용할 수 있으며 상태 코드와 검증 지원), URL 재작성과 헤더 재작성의 유형 표 추가, 헤더 값을 교체하는 정규식 모드 추가
개선 사항:
- 이제 Chute를 사용하려면 iOS 15 이상이 필요합니다
- 이제 모든 구조화 편집기가 표시하지 않는 내용도 보존합니다: 각 빌더는 렌더링하지 않는 키(규칙 옵션의 나머지, AND / OR / NOT의 하위 규칙,
[Host]항목의 다른 주소, 모듈 헤더의 다른 줄)를 그대로 넘겨주므로, 설정을 열었다가 저장해도 더 이상 내용이 바뀌지 않으며, 편집기가 알지 못하는 유형의 항목은 텍스트로 편집됩니다 - 본문 재작성, 헤더 재작성, URL 재작성, Map Local, 모의 응답, 스크립트 편집기가 엔진이 읽는 형식 그대로 기록합니다: 스크립트는
type=와 함께 저장되고, JSONPath 값은 종류를 유지하며, Map Local은status-code,data-type, 헤더를 유지합니다 - 게시된 프로필을 가져와도 더 이상 라우팅이 사라지지 않습니다:
dns-server가 암호화 DNS URL을 받아들이고, 리스너 줄에 비밀번호를 쓸 수 있으며, 따옴표로 묶인 그룹 멤버가 유지되고, sing-box 논리 규칙이 문서대로 변환됩니다.PASS멤버는 REJECT가 되는 대신 제거되고, 지원하지 않는 프로토콜이나 그룹 유형은 그룹 전체를 무너뜨리는 대신 경고만 남깁니다. 가져온 mihomo 프로필에서 절대 일치할 수 없는 규칙이 목록의 대부분을 차지하던 상태에서 거의 없는 수준으로 줄었습니다 - 규칙 세트의 메모리 사용량 대폭 감소: 제공자를 차례대로 다운로드하므로 35번째 이후에 한꺼번에 실패하지 않고, 변환 시 최대 사용량은 62–73% 줄었으며, 색인 연결 수는 제한되고 메모리 압박 시 해제됩니다. 기기에 비해 너무 큰 페이로드는 거부되며, 그 사유가 규칙 세트 상태에 표시됩니다
- 리소스 한도를 두어 지나치게 큰 설정 때문에 터널 확장 프로그램이 메모리 한도를 넘지 않도록 했습니다: MitM 인증서 저장소, 캡처 백로그, 스크립트 크기와 개수, 콘솔 요청 예산, Tailscale 피어, DNS 캐시에 iOS에서 각각 상한이 적용됩니다
- 지연 시간 테스트가 올바른 대상을 사용합니다: 그룹의
test-url과test-timeout, 프로필의proxy-test-url, 멤버 자체의test-url과expected-status가 모두 반영되며, 체이닝된 노드는 직접이 아니라 체인을 통해 측정됩니다 - 웹 콘솔과 제어 API: 런타임에 추가한 규칙이 같은 프로필을 다시 로드한 뒤에는 남지 않고, 로그 커서가 단조 증가하므로 폴링이 항목을 건너뛰지 않으며, 연결 상세에 프록시 체인이 표시됩니다
- ShadowTLS가 이제
sni=가 지정된 경우 sing-box처럼 가림용 사이트의 인증서를 검사합니다.skip-cert-verify=true로 검사를 끌 수 있고(이전에는 이 옵션이 무시되었으며 인증서를 전혀 검사하지 않았습니다),sni=가 없으면 경고와 함께 검사를 건너뜁니다 - 다운로드와 구독: 다운로드마다 별도 파일에 기록하고 형식은 본문으로 판단하므로, 새로 고침이 첫 다운로드를 다시 읽거나 다른 주소의 프로필을 적용하지 않습니다. Clash나 sing-box에서 변환한 프로필은
.conf로 저장되고 다른 Chute 앱과 같은 방식으로 이름이 붙습니다. 이미 쓰는 이름이면 덮어쓰지 않고 번호를 붙입니다 - 설정 처리: 다른 이름으로 저장할 때 먼저 묻고, 실행 중인 파일을 덮어쓰면 터널을 다시 로드하며, 설정을 연 원본 파일을 더 이상 삭제하지 않습니다. 「iCloud에서 동기화」는 이미 설치된 설정도 라이선스 한도에 포함해 셉니다. 숨긴 정책 그룹은 글로벌 및 select 목록에 나타나지 않지만 엔진은 계속 사용할 수 있습니다. 글로벌에는 항상 사용 중인 그룹이 표시됩니다
- Wi-Fi 업로드 페이지가 받은 파일의 확장자를 유지하고, 이미 쓰는 이름은 사유와 함께 거부하며, 비 ASCII 이름을 RFC 6266대로 보내므로
上传的配置.conf도 그 이름 그대로 도착합니다 - 새 설정, 메시지, 알림이 8개 내장 언어 모두로 제공되며, 터널의 알림에는 터널이 멈춘 사유가 담깁니다
버그 수정:
- Hysteria2가 QUIC DATAGRAM 프레임 하나에 담기지 않는 UDP 데이터그램을 모두 버려, 앱의 HTTP/3가 통과하지 못하고 TCP로 되돌아가던 문제 수정: 이제 큰 데이터그램은 보낼 때 나누고, 서버가 나눠 보낸 응답은 재조립합니다
- 재시작한 터널이 이전 실행의 첫 로컬 포트와 TCP 시퀀스 번호를 재사용해, 이전 연결을 아직 유지하던 WireGuard 피어가 리셋으로 응답하던 문제 수정: 이제 터널의 TCP 스택은 시스템의 난수 소스로 시드를 만들고 RFC 6528에 따라 초기 시퀀스 번호를 고릅니다
- 터널을 거치는 XHTTP가 앱의 첫 쓰기 이후 멈춰, TLS 핸드셰이크가 끝나지 않고 업로드가 청크 하나만 보내던 문제 수정: 이제 각 쓰기가 순서대로 완료되며, 업로드를 기다리는 데이터가 1 MB를 넘으면 그 데이터가 다 빠져나갈 때까지 다음 쓰기가 기다립니다
PROTOCOL,TCP와PROTOCOL,UDP가 한 번도 일치하지 않던 문제 수정: 이제 모든 인바운드가 자신의 전송 방식을 판정하므로, AND 규칙으로 QUIC을 차단하는 일반적인 방법이 동작합니다- AND / OR / NOT 안의
RULE-SET과DOMAIN-SET이 항상 거짓으로 평가되던 문제(그 때문에NOT,((RULE-SET,…))가 국내 트래픽까지 거부했습니다)와 논리 규칙 안의SCRIPT가 항상 참으로 평가되던 문제 수정 - 이름으로 기록한
RULE-SET,<name>,<policy>,no-resolve가no-resolve를 잃던 문제, GEOIP와 IP-ASN의UNKNOWN이 한 번도 일치하지 않던 문제, Map Local의status-code=가 HTTP/2에서 무시되던 문제, 평문 HTTP에서 응답 헤더 재작성이 경로만 대조해 전체 URL로 작성한 패턴이 절대 일치할 수 없던 문제 수정 block-quic이 Surge의 값 중 하나만 받아들이고, 다른 값으로는 QUIC 차단이 전혀 이루어지지 않던 문제 수정- 스크립트 API 수정:
$klne.getPolicyGroups()와selectPolicy()가 처음 사용할 때 더 이상 예외를 던지지 않고,reloadConfiguration()은 실제로 다시 로드하며,getActiveConnections()는 실제 호스트, 포트, id를 보고하고,closeConnection()은 실제로 연결을 닫으며,requires-body가 있는 before-send 스크립트가 마침내 본문을 받습니다 [Replica] keyword-filter가 키워드 포함 여부를 확인하지 않고 호스트 이름 전체와 비교해,keyword-filter = google이www.google.com을 포괄하지 못하던 문제 수정- iOS에서 PROCESS-NAME, PROCESS-PATH, PROCESS-NAME-REGEX 규칙이 브라우저 트래픽과 일치하던 문제 수정: 비교하던 이름이 프로세스가 아니라 브라우저의 제품 이름이었습니다. 이 규칙들은 macOS에서만 동작하며, 이제 iOS에서는 아무것과도 일치하지 않습니다
- 저장한 대시보드 프로필이 잘못된 유형으로 다시 읽혀 누를 때마다 충돌하던 문제, 중복 항목이 있는 목록에서 행을 끌거나 삭제하면 테이블과 데이터가 어긋나던 문제, 이미 닫힌 화면으로 콜백이 호출될 때 발생하던 충돌 수정
- 구독 자동 새로 고침이 메인 스레드를 30초 동안 막아, 새로 고침 도중 백그라운드로 전환된 앱이 워치독에 의해 종료되던 문제, 위젯에 VPN을 제어할 권한이 없어 제어 센터 스위치가 항상 실패하던 문제, Picture in Picture가 두 번 표시되던 문제, 위젯의 컨티뉴에이션이 두 번 재개되던 문제 수정
- 다운로드와 이름 관련 문제 수정: 보관한 다운로드 파일을 다음 새로 고침이 다시 읽던 문제, 두 주소가 같은 이름을 제안했을 때 한 주소에 다른 주소의 프로필이 응답되던 문제, 가져오기나 복사가 iCloud에 있는 원본 파일을 삭제하던 문제, 업로드한 파일 이름에서 첫 점 이후가 모두 사라지던 문제, 주소가 확장자만으로 끝나는 구독이 숨김 파일로 저장되던 문제, 읽을 수 있는 설정 위에 묻지 않고 편집 내용을 덮어쓰던 문제
- Chute가 실행 중이 아닐 때
chute://링크(예: 단축어 자동화에서 연 링크)가 아무 동작도 하지 않던 문제 수정: 이제 콜드 실행 시에도 처리됩니다 - 다양한 안정성 및 성능 개선
Version 1.2.0 (351)
새로운 기능:
- 제어판에 웹 콘솔 주소 추가: 「웹 콘솔」 행에 호스트가 표시되고, 누르면 열기, 주소 복사, 액세스 토큰 복사를 선택할 수 있습니다. 열기는 토큰을 URL에 담아 열므로 입력 없이 로그인됩니다
- 제어판 「로컬 프록시」 섹션 마지막 행에 런타임 진단 번들 추가: 실행 중인 엔진이 민감 정보를 지운 아카이브(설정, 상태 스냅샷, 이번 실행의 사건, 로드된 규칙과 정책, DNS, 트래픽, 로그 샤드)를 만들어 공유 시트로 넘깁니다. 터널이 연결되어 있어야 하지만
external-http-controller는 필요 없습니다 - 설정 → 「진단」 섹션에 오프라인 진단 번들 추가. 터널이 실행 중이지 않아도 앱이 직접 만듭니다: 기기와 앱 정보, iOS가 보관한 VPN 프로필 상태, 선택한 설정의 요약과 구문 오류, 세 진단 페이지의 텍스트, 민감 정보를 지운 설정 앞부분, 이전 실행이 끝난 방식, 최신 세션의 로그 끝부분, 업로드 대기 중인 충돌 보고서
- 세션 화면에 로그 공유 추가: 해당 세션 로그의 모든 샤드를 공유합니다
- 세션 상세에 재작성 출처 추가: 「정책」 섹션에 요청을 라우팅한 규칙과 정책 옆으로, 요청을 바꾼 URL 재작성, 헤더 재작성, 본문 재작성 또는 모의 응답 규칙이 표시됩니다
- 출구 IP 변경을 대체하는 네트워크 주소 변경 알림 추가: 물리 링크에서 이 기기가 가진 IPv4와 IPv6를 주소 체계별로 한 줄씩 보여주고, NAT 뒤에 있는 IPv4는 그렇게 표시합니다. IPv6와 라우팅 가능한 IPv4는 로컬에서 읽으며, NAT 안의 IPv4일 때만 STUN 요청을 한 번 보냅니다
- 내장 언어에 프랑스어 추가
- 웹 콘솔 스타일로 다시 설계한 Wi-Fi 업로드 페이지 추가(9개 언어 지원)
- 웹 콘솔에 현재/기록 탭, 연결 상세 보기(일치한 규칙, 규칙 출처, 정책, 어댑터, DNS 출처, 프로세스, 종료 사유, 요청과 응답 본문), 어떤 재작성 규칙이 실행됐는지 보여주는 규칙 페이지, 진단 페이지(메모리 사용량, CPU, 가동 시간, 흐름 수, 이전 실행이 끝난 방식, 거부 집계, 이벤트 로그, Tailscale 스냅샷, ping / DNS / 출구 / URL 테스트 프로브) 추가. 콘솔은 이제 9개 언어를 모두 완전히 지원합니다
- HTTP 제어 API 엔드포인트 추가:
/api/health,/api/events,/api/tailscale,/api/diagnostics/아래의 프로브,/api/connections/export?format=har,/api/diagnostics/bundle,/api/rewrites와/api/mitm/hosts를 통한 재작성 규칙 및 MitM 호스트 관리, 규칙 테이블에 요청을 시험 대조하는POST /api/rules/match(두 번의 DNS 패스 모두 보고), 재로드 없이 로그 수준과 하위 시스템 섹션을 바꾸는GET|PUT /api/loglevel, 프로필을 적용하지 않고 검사하는POST /api/config/validate
개선 사항:
- 설정에
external-http-secret이 없으면 HTTP 제어 API가 더 이상 인증 없이 열리지 않습니다. 엔진이 토큰을 생성하고 제어판에서 표시·복사할 수 있습니다. 익명 접근을 유지하려면external-http-secret = none을 설정하세요. 또한 와일드카드 수신 주소는 더 이상 루프백으로 취급되지 않습니다 - 큰 목록에서 규칙 매칭이 훨씬 빨라졌습니다: RULE-SET과 DOMAIN-SET 페이로드는 연결마다 스트리밍 스캔하는 대신 다운로드 또는 복원 시 색인되고, 도메인 규칙만으로 이루어진 규칙 테이블은 해시 플랜으로 대조합니다. 5만 줄 목록의 조회당 시간이 약 94 ms에서 2 ms 미만으로 줄었고, 색인당 메모리는 약 100 KB입니다
- UDP 흐름은 한 번만 대조합니다: 흐름의 판정을 60초 동안 기억하므로 이후 데이터그램은 두 번의 매칭 패스와 그 사이의 DNS 조회를 건너뜁니다
- 네트워크 전환 후 복구 개선: 업스트림 출발지 주소가 어떤 인터페이스에도 더 이상 없는 터널은 유휴 시간 초과까지 앱을 붙잡지 않고 바로 닫힙니다. 같은 종류의 경로 변경(셀룰러 재접속)도 감지되며, 연결은 되지만 데이터가 흐르지 않는 경로는 블랙홀로 보고됩니다
- 세션 로그가 8 MB 샤드로 기록됩니다(실행당 최대 8개, 가장 오래된 것부터 삭제). 각 샤드는 실행과 시작 시각을 밝히는 헤더로 시작하므로, 긴 세션이 가져올 수 없을 만큼 큰 파일 하나를 만드는 일이 없습니다. 로그 뷰어는 모든 샤드를 순서대로 불러오고, 기록 중인 샤드를 계속 따라갑니다
- 엔진은 실행 중 실행 마커를 유지하고, 다음 시작 때 이전 실행이 정상 종료됐는지 강제 종료됐는지를 로그 헤더,
/api/status, 두 진단 번들에서 보고합니다 - HAR 내보내기를 이제 엔진이 기록된 프레임으로부터 만들므로 상태 코드, 타임스탬프, 타이밍이 실제 값이며, 각 항목에는
_kl아래에 선택된 정책, 일치한 규칙, 재작성 적중이 담깁니다. 대시보드의 HAR 내보내기와 연결 상세 모두 이를 사용합니다 - 구매 페이지에서 판매하는 세 기능(고급 서버 제어, MitM, 트래픽 레코더)만 라이선스가 필요합니다. 프로토콜 스니핑, Optimus DNS, 외부 접근, HTTP API, 웹 콘솔, DNS 캐시 삭제는 더 이상 라이선스를 요구하지 않습니다
- 제어판이 터널 상태를 따라갑니다: 터널이 멈추면 상태를 초기화하고, 다시 연결되면 다시 조회하며, 콘솔 페이지가 실제로 제공될 때만 주소를 보여줍니다
allow-wifi-access가 켜져 있는 동안 설정 편집기는 두 리스너 스위치를 잠그고(엔진이 두 리스너를 직접 넓히므로), 끄면 설정된 인터페이스를 복원합니다- IAP 구매 복원에서 아무것도 찾지 못하면 알림에 매뉴얼 보기가 표시되어 앱 언어로 된 크로스 플랫폼 라이선스 안내를 엽니다. 구매 안내에는 한 번의 구매가 iPhone 또는 iPad 3대와 Apple TV 3대를 포함한다고 명시했습니다
- Tailnet 노드 목록이 다른 목록과 같은 모양이 되었고(인셋 그룹, 빈 섹션에는 「항목 없음」 행), 나타날 때마다 노드 상태를 다시 조회합니다
loglevel = info에서 1 MiB 이상을 옮긴 대용량 흐름은 종료 시 원격 쪽과 앱 쪽에서 각각 얼마나 기다렸는지를 한 줄로 기록합니다- 진단 페이지는 복사할 내용이 있는 행에만 복사를 제공합니다
버그 수정:
- TUN 모드의 MitM 수정: MitM 규칙에 일치한 호스트가 시간 초과까지 멈춰, HTTPS 헤더 재작성, 본문 재작성, 모의 응답, 복호화 캡처가 앱 트래픽에 전혀 적용되지 않았습니다(로컬 HTTP/SOCKS5 프록시를 거치는 트래픽은 영향 없음)
allow-wifi-access가 효과가 없던 문제 수정: 로컬 HTTP와 SOCKS5 리스너가 루프백에 머물러 Wi-Fi의 다른 기기가 접근할 수 없었습니다. 이제 이 플래그(그리고 가져오기 시 sing-box의allow-lan)가 두 리스너를 넓히고, 끄면 다시 바인딩합니다- MitM HTTP/1.1에서 응답 헤더 재작성이 적용된 것으로 기록되면서도 클라이언트는 원래 헤더를 받던 문제와, 전체 URL로 작성한 규칙이 한 번도 일치하지 않던 문제 수정
- 모의 응답이 요청 헤더로 응답을 만들던 문제(상태 줄 자리에 요청 줄, 요청 헤더 그대로 전달, 잘못된 Content-Length)와 평문 HTTP에서 원본 서버의 헤더를 앞에 보내던 문제 수정
- 프로토콜 스니핑이 Host 헤더나 역방향 DNS 이름을 제공했을 때
no-resolveIP 규칙(IP-CIDR, GEOIP, IP-ASN)이 IP 리터럴로 향하는 연결을 건너뛰던 문제 수정. 스니핑된 IP 리터럴은 더 이상 DOMAIN 규칙에도 일치하지 않으므로 판정이 스니핑 여부에 좌우되지 않습니다 - RULE-SET 페이로드에서 내용 뒤에 옵션이 붙은 줄(
GEOIP,CN,no-resolve,DOMAIN,example.com,force-remote-dns)이 버려지거나 아무것에도 일치하지 않던 문제와, AND/OR/NOT 하위 규칙이no-resolve를 잃던 문제 수정 - HOSTNAME-TYPE이 한 번도 일치하지 않던 문제 수정: 레코드 유형은 이제 IPv4로 연결하면 A, IPv6로 연결하면 AAAA이며, 규칙 편집기의 자리 표시자도 이를 안내합니다
- 도메인 하위 규칙을 가진 AND/OR/NOT 규칙으로 프록시에 라우팅된 도메인이 DNS 서버에서는 실제로 해석되어 DNS 응답과 라우팅 판정이 어긋나던 문제 수정
- 스니핑된 Host 헤더의 대괄호 IPv6 리터럴(
[2001:db8::1]:8080)이 호스트 이름[2001로 읽히던 문제 수정 - select 그룹이 첫 번째 멤버가 아닌 항목으로 설정된 상태에서 터널을 시작하면 「정책 그룹 전환」 알림이 뜨고, 시작 후 재구성이 플래핑 경고를 유발하던 문제 수정. 기억된 선택이 없는 그룹은 첫 번째 멤버로 강제되지 않고 프로필의
default=를 따릅니다 - 터널이 한동안 실행된 뒤 제어판을 열면 앱이 CPU 100%로 멈추고 메모리가 계속 늘던 문제 수정
- HAR 내보내기가 잘못된 상태 코드와 1970년 타임스탬프를 쓰고, 연결 상세 내보내기가 어떤 HAR 리더로도 열 수 없는 파일을 만들던 문제 수정
[Replica] hide-crashlytics-request가 구문 분석만 되고 캡처에 적용되지 않던 문제 수정- 문서화된 표기인
external-http-controller = *:9090과:::9090이 거부되어 컨트롤러가 조용히 시작되지 않던 문제 수정 $klne.startURLTest()가 지연 시간 테스트를 한 번도 시작하지 않던 문제와, 존재하지 않는 정책에 대한 URL 테스트가 오류 대신 그럴듯한 실패를 보고하던 문제 수정- 높은 부하에서 XHTTP 전송이 간헐적으로 충돌하던 문제 수정
- 다시 직렬화된 HTTP/1.1 응답의 사유 구문이 비어 있던 문제 수정
- 라이선스 화면이 tvOS 또는 Android용으로 발급된 라이선스를 「알 수 없음」으로, 이 앱이 보유할 수 없는 인증서를 iOS & macOS & tvOS 번들로 표시하던 문제 수정
- 정보 화면의 끊어진 App Store 링크 수정. 평가는 이제 리뷰 시트를 바로 엽니다
- 다양한 안정성 및 성능 개선
Version 1.1.9 (322)
새로운 기능:
- 정책 편집기에 XHTTP 전송 추가: 스위치, 모드(auto, packet-up, stream-up, stream-one), 경로, 호스트 설정 지원 — Trojan, VMess, VLESS용
- AEGIS-128L 및 AEGIS-256 Shadowsocks 암호화 방식 추가
- TLS 정책용 ECH(Encrypted Client Hello) 설정 추가: 활성화 스위치, 고정 ECH 설정(
ech-config), 가림용 이름 재정의(ech-public-name) - 클라이언트 지문(uTLS)을 정책별로 설정하고 프로필 전체 기본값도 추가
- 트래픽 난독화 기능을 갖춘 WireGuard 변형인 AmneziaWG 프로토콜과 파라미터 편집기 추가
- 구독 URL, 파일, Wi-Fi 업로드에서 Clash 및 sing-box 프로필 가져오기 추가
- 작업을 막는 알림을 대체하고 내용을 복사할 수 있는 설정 오류 보고 페이지 추가
- TLS 1.3용 X25519MLKEM768 양자 내성 하이브리드 키 교환 추가
개선 사항:
- 정책 편집기가 저장할 때 현재 화면에서 편집할 수 없는 기존 옵션(ECH, ALPN, 인증서 고정,
test-url,udp-relay)을 유지합니다
버그 수정:
- 잘못된
IP-CIDR규칙으로 인한 터널 충돌 수정 - SSH
idle-timeout설정이 잘못된 키로 기록되어 저장 시 삭제되던 문제 수정 - 온보딩 규칙이
no-resolve뒤에 정책 이름을 배치하여 IP 기반 규칙이 깨질 수 있던 문제 수정 - 다양한 안정성 및 성능 개선
Version 1.1.8 (300)
새로운 기능:
- Tailscale 내장 프록시 유형 추가: Chute 내에서 Tailscale 계정을 직접 설정하고 tailnet에 참여하여 Tailscale 노드를 통해 트래픽을 전달할 수 있습니다. 별도 클라이언트가 필요하지 않습니다
- Tailscale 섹션 편집기 추가: auth key를 안전하게 입력하고 연결을 검증하며 tailnet 노드를 나열하고 앱 내에서 출구 노드를 전환할 수 있습니다
- Tailscale 컨트롤 패널 추가: 노드의 실시간 상태(온라인/오프라인, IP, 마지막 확인 시간)를 표시하고 언제든 출구 노드를 전환할 수 있습니다
- 프록시 진단 시스템 알림 추가: 이그레스 IP 변경 및 Tailscale 연결 이벤트를 알림으로 전달하며 설정에서 유형별로 켜고 끌 수 있습니다
- 정책 편집기에 MASQUE 프록시 유형 추가
개선 사항:
- iOS의 TUN 처리량 향상
- Tailscale 및 WireGuard의 연결 안정성과 처리량 향상
- UDP 터널 안정성과 트래픽 통계 정확도 향상
- VPN 중지 시 안정성을 향상하여 시스템이 연결을 비정상적으로 종료하는 경우 감소
- 언어 전환 안정성 향상
- 구성 파일명을 정제하여 잘못된 경로 문자로 인한 로드 실패 방지
버그 수정:
- VPN 시작과 중지 사이에 on-demand 규칙이 일치하지 않게 되는 문제 수정
- 동시 언어 전환으로 인한 드문 충돌 수정
- 불필요한 VPN 재연결을 피하도록 네트워크 변경 처리 수정
- 각종 안정성 및 성능 개선
Version 1.1.7 (290)
새로운 기능:
- JavaScript 스크립팅 시스템 추가: 요청/응답 수정, DNS 해석, 사용자 정의 규칙 매칭 및 예약 작업을 위한 사용자 정의 스크립트 실행
- 본문 재작성 추가: 정규식(캡처 그룹 지원 포함) 또는 JSONPath 표현식을 사용하여 HTTP 요청/응답 본문 내용 검색 및 교체
- ShadowTLS 프로토콜 지원 추가
- VMess 및 VLESS 프로토콜용 gRPC 전송 추가
- DNS-over-QUIC (DoQ) 및 DNS-over-HTTP/3 (DoH3) 지원 추가
- DNS-over-TLS (DoT) 지원 추가
- 프록시 런타임 모니터링 및 제어를 위한 HTTP 제어 API 및 웹 UI 추가
- 모듈식 구성을 위한 모듈 시스템 (.sgmodule) 추가
- 동적 프록시 목록 업데이트를 위한 프록시 제공자 추가
- 알림 보고 추가: 연결 실패, 프록시 사용 불가, 트래픽 급증, 설정 업데이트 실패 및 정책 그룹 전환 감지, 시스템 알림용 이벤트 전달
- 모의 응답 추가: 실제 서버에 도달하지 않고 일치하는 요청에 모의 데이터 반환
- 라운드로빈, 일관된 해싱 및 고정 세션 전략이 포함된 로드밸런스 정책 그룹 추가
- URL 재작성 새 모드 추가: reject-200, reject-img, reject-dict
- 헤더 재작성 응답 방향 지원 추가
- 10가지 프로토콜 유형 값이 포함된 PROTOCOL 규칙 유형 추가
- JavaScript 기반 사용자 정의 매칭을 위한 SCRIPT 규칙 유형 추가
- 규칙에 extended-matching 및 requires-resolve 옵션 추가
- AnyTLS 다중 레이어 패딩 방식 추가
- SS2022 암호화 메서드 추가 (2022-blake3-aes-128/256-gcm, chacha20-poly1305)
- 관리형 설정 지원 추가
- 구성 복제를 위한 Replica 지원 추가
- WireGuard 구성 UI 추가
- interrupt-exist-connections 전역 옵션 추가
개선 사항:
- 정책 그룹에 expected-status, hidden, idle-timeout 및 lazy 옵션 지원 추가
- Map Local 형식의 템플릿 변수 지원으로 URL 재작성 강화
- DoQ, DoH3 및 DoT 프로토콜 지원으로 DNS 서버 개선
- 전체 커버리지를 갖춘 6개에서 30개 이상의 규칙 유형으로 규칙 시스템 확장
버그 수정:
- IPv6 기본값 수정 (false → true)
- 로그 레벨 기본값 수정 (notify → warning), none 및 fatal 레벨 추가
- 문서 전체에서 Shadowsocks/ShadowsocksR 명명 일관성 수정
- 다양한 안정성 및 성능 개선
Version 1.1.6 (256)
새로운 기능:
- Hysteria2 프로토콜 지원 추가
- WireGuard 프로토콜 지원 추가
- VLESS REALITY 프로토콜 지원 추가
- TUN 트래픽용 프로토콜 스니퍼 추가
- IP-ASN 규칙 지원 추가
- AND/OR/NOT 논리 규칙 지원 추가
버그 수정:
- UDP 어댑터 메모리 문제 수정
- Rule-Set 및 Domain-Set 매칭 성능 최적화
- 기타 사소한 버그 및 안정성 문제 해결
- 라이선스 보기 충돌 수정
Version 1.1.5 (245)
새로운 기능:
- TUIC 프로토콜 지원 추가
- Shadowsocks 2022 (SS2022) 지원 추가
- 터널 구성 도입
- 세션 로그 표시 개선
버그 수정:
- UDP 어댑터 문제 수정
- Rule-Set 및 Domain-Set 매칭 성능 최적화
- 기타 사소한 버그 및 안정성 문제 해결
Version 1.1.2 (231)
새로운 기능:
- iOS 26 UI
버그 수정:
- Gemini 앱의 DNS IPv6 응답 수정
- 주석 콘텐츠가 있는 RULE-SET 지원
- 위젯 센터 스위치 버튼 상태 수정
Version 1.1.1 (218)
새로운 기능:
- AnyTLS 정책 지원
- Domain-Set 지원
- 원격 Rule-set 지원
개선 사항:
- 더 나은 성능을 위한 터널 재구축
- 완전 테스트된 UDP 터널
버그 수정:
- 메모리 누수 수정
Version 1.1.0 (210)
버그 수정:
- 일부 버그 수정
Version 1.0.9 (199)
새로운 기능:
- iOS 18 제어 센터 스위치 버튼
버그 수정:
- IPv6가 포함된 TUN이 이제 IPv6 터널로 리디렉션되어 일부 서비스 문제 수정
Version 1.0.8 (188)
새로운 기능:
- SSH 정책 지원
- 원격 대시보드 연결 추가
개선 사항:
- IPv4 내부 주소 문제를 피하기 위해 TUN 네트워크를 198.18.0.0/15로 변경
- 일부 텍스트 업데이트
버그 수정:
- DNS 문제 수정
Version 1.0.7 (167)
새로운 기능:
- PIP 모드
- 구성 파일용 iCloud 동기화
- tvOS용 원격 구성 관리자 추가
버그 수정:
- WebSocket이 포함된 VMess 수정
Version 1.0.6 (160)
새로운 기능
- 새 UI
- Wi-Fi를 통한 구성 업로드 추가
- 네트워크 진단 및 프록시 진단 추가
- VPN 구성 재설정 기능 추가
- ICMP(Ping) 패킷 지원 추가
- VPN 상태 확인 추가
개선 사항:
- 구성 편집 UI/UX 개선
- MTU를 4000으로 업데이트
버그 수정
- 버그 수정
- IPv6 TUN 설정 수정
Version 1.0.5 (147)
새로운 기능
- VLESS 프로토콜 지원 추가
- VLESS와 함께 XTLS 지원 추가
- 프록시 세션 및 로그 검토용 세션 뷰어 추가
- Chute Dashboard macOS 앱으로 UDP 연결 검토 가능
개선 사항:
- 구성 편집 개선
- DNS 오염 방지를 위한 로컬 DNS 서버 개선
- UDP 릴레이 개선
버그 수정
- IPv6 표시 수정
- DNS 서버 수정
Version 1.0.4 (143)
새로운 기능
- 로컬 HTTP/Socks5 프록시 서버 지원
- 완전한 IPv6 지원
- DNS 서버용
syslib지원 추가
개선 사항:
- 구성 편집 개선
- Optimistic DNS 스위치 추가
- 로컬 DNS 서버 개선
버그 수정
- iOS 로컬 프록시 서버 주소가 앱의 네트워크 접근을 중단시킬 수 있는 문제 수정
- DNS 서버 수정
Version 1.0.3 (138)
새로운 기능
- DNS 캐시 중독 방지를 위한 가짜 IP
- 인터넷 또는 QR 코드에서 구성 파일 다운로드
버그 수정
- FINAL 규칙 편집 문제 수정
Version 1.0.2 (130)
새로운 기능
- iPad 지원
chute://스킴 및x-callback-url지원- 대시보드 액션
- iPhone 12 지원
- 더 나은 성능 및 안정성을 위한 DNS 서버 재구축
버그 수정
- TCP 안정성 개선
- 성능 향상을 위한 TCP 잠금 재구축
- UDP 안정성 개선
- 구성 충돌 수정
Version 1.0.1 (111)
- WeChat 공유 확장 실패 수정
- IPv6 지원 수정
- HTTP 완료 확인 업데이트
Version 1.0.0 (101)
- 첫 릴리스
이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.