Shadowsocks 프록시 프로토콜
대칭 암호화 기반의 경량 프록시 프로토콜로 2012년에 등장했습니다. 클라이언트와 서버가 비밀번호와 암호화 방식을 사전에 정한 뒤 트래픽을 바로 전달합니다. 설정 항목이 적고 전송 오버헤드가 낮아 지금도 구독에서 가장 흔한 프로토콜 중 하나입니다. Clash 계열 코어는 AEAD 암호화와 obfs, v2ray-plugin 같은 플러그인 형태를 기본으로 지원합니다.
GLOSSARY · 용어 정리
설정 파일의 필드, 클라이언트 화면의 스위치, 튜토리얼 본문에 등장하는 명사를 이 한 페이지에서 모두 설명합니다. 전체 항목은 다섯 개 분류로 나뉘어 있으며 각 항목은 2~4문장으로 되어 있어 읽고 나면 바로 진행 중인 설정 단계로 돌아갈 수 있습니다. 모든 항목에는 앵커가 붙어 있어 위치를 바로 공유할 수 있습니다.
노드와 서버 간 데이터를 전송할 때 사용하는 프로토콜입니다. 구독의 각 노드에는 프로토콜 유형이 표시되며, 프로토콜에 따라 암호화 방식과 위장 능력이 달라지고 연결에 필요한 코어도 결정됩니다.
대칭 암호화 기반의 경량 프록시 프로토콜로 2012년에 등장했습니다. 클라이언트와 서버가 비밀번호와 암호화 방식을 사전에 정한 뒤 트래픽을 바로 전달합니다. 설정 항목이 적고 전송 오버헤드가 낮아 지금도 구독에서 가장 흔한 프로토콜 중 하나입니다. Clash 계열 코어는 AEAD 암호화와 obfs, v2ray-plugin 같은 플러그인 형태를 기본으로 지원합니다.
V2Ray 프로젝트가 설계한 프로토콜로 UUID를 통해 사용자 인증을 수행하며, 기본값은 클라이언트와 서버의 시간 차이가 90초 이내여야 합니다. 실제 배포에서는 위장을 강화하기 위해 WebSocket, TLS와 함께 사용하는 경우가 많습니다. 시간 차이가 크면 핸드셰이크가 실패하므로 노드가 연결되지 않을 때는 먼저 시스템 시계를 확인하세요.
프록시 트래픽을 표준 HTTPS 접속처럼 위장하는 프로토콜로 유효한 TLS 인증서가 반드시 필요합니다. 서버가 443 포트를 사용하면 트래픽 형태가 일반 웹사이트 접속과 동일해 식별하기 어렵습니다. Clash 설정의 Trojan 노드에는 보통 password와 sni라는 두 핵심 필드가 포함됩니다.
QUIC(UDP) 기반의 차세대 프로토콜로 내장 혼잡 제어 알고리즘을 갖추고 있어 손실률이 높은 회선에서 TCP 계열 프로토콜보다 처리량이 우수합니다. mihomo 코어에서 지원하며 구형 Premium 코어에서는 사용할 수 없습니다. 구독에 이 프로토콜의 노드가 포함돼 있다면 mihomo를 내장한 클라이언트를 사용해야 정상적으로 연결됩니다.
세션 계층의 범용 프록시 프로토콜로 자체 암호화는 없으며 TCP와 UDP를 모두 지원합니다. Clash를 실행하면 로컬에 SOCKS5 인바운드 포트가 열려 브라우저 같은 소프트웨어가 트래픽을 클라이언트에 전달할 수 있습니다. 주로 로컬 입구 역할을 하며 대부분의 구독에는 순수 SOCKS5 노드가 등장하지 않습니다.
코어는 프로토콜 구현과 규칙 매칭을 담당하고, 클라이언트는 코어를 조작 가능한 소프트웨어로 감싸는 역할을 합니다. 이 두 계층을 구분하면 '동일한 구독이 소프트웨어마다 다르게 동작하는' 현상을 이해할 수 있습니다.
Clash Meta 프로젝트의 코어로, 원조 Clash 코어 유지 보수가 중단된 뒤 커뮤니티가 이어받아 발전시킨 결과물입니다. 실행 파일 형태로 동작하며 프로토콜 구현, 규칙 매칭, 트래픽 전달을 담당합니다. VLESS, Hysteria2, TUN 등 원조 버전에 없던 기능을 지원합니다. 현재 주요 GUI 클라이언트(Clash Verge Rev, FlClash 등)는 대부분 이를 내장하고 있습니다.
원저작자가 배포한 비공개 소스의 강화 코어로 TUN, Script 등 원조 오픈소스 코어에 없던 기능을 제공했으나 2023년 원본 저장소와 함께 배포가 중단됐습니다. 현재 클라이언트는 대부분 mihomo로 이전했습니다. 오래된 튜토리얼에서 Premium 전용 필드를 만나면 mihomo와의 호환성 차이를 확인해야 합니다.
코어 위에 얹힌 그래픽 인터페이스 껍데기로, 구독 관리, 노드 선택, 시스템 프록시 켜기/끄기 같은 일상적인 작업을 담당하며 명령줄 형태의 코어를 클릭 가능한 소프트웨어로 바꿔줍니다. Clash Plus, Clash Verge Rev, FlClash가 모두 이 범주에 속합니다. 클라이언트를 고를 때는 내장된 코어 버전이 구독에 필요한 기능과 맞는지 먼저 확인하세요.
코어가 로컬에 개방하는 HTTP API로 설정 필드는 external-controller이며 흔히 9090 포트를 사용합니다. GUI 패널은 이를 통해 노드 지연 시간을 읽고 정책 그룹을 전환하며 현재 연결 상태를 확인합니다. 해당 포트를 다른 프로그램이 점유하면 패널이 비어 보이거나 연결이 안 되므로 설정 파일에서 사용 중이지 않은 포트로 변경하면 됩니다.
config.yaml에서 가장 자주 등장하는 개념들입니다. 규칙 매칭 순서와 트래픽 처리 방식을 이해하는 것이 '작동은 하지만' 수준에서 '의도대로 분산되는' 수준으로 넘어가는 분수령입니다.
Clash 설정 파일에 사용되는 데이터 형식으로 들여쓰기로 계층을 표현하며 공백에 매우 엄격합니다. 들여쓰기에 Tab과 스페이스를 혼용하거나 콜론 뒤에 공백을 빠뜨리는 것이 설정 오류의 가장 흔한 두 원인입니다. 고정폭 글꼴 편집기에서 공백 문자 표시를 켜고 편집하고, 변경 후에는 클라이언트에서 먼저 설정 검증을 한 뒤 적용하는 것이 좋습니다.
설정 파일의 rules 섹션에 있는 매칭 목록으로, 위에서 아래 순서대로 각 연결을 지정된 출구(노드, 정책 그룹, 또는 DIRECT, REJECT)에 매칭합니다. 흔한 규칙 유형으로 DOMAIN-SUFFIX, IP-CIDR, GEOIP가 있으며, 마지막 MATCH 항목이 매칭되지 않은 나머지 트래픽을 처리합니다. 순서가 뒤바뀌는 것이 분산 실패의 가장 흔한 원인입니다.
여러 노드를 하나의 선택 가능한 단위로 묶는 것으로, 규칙은 개별 노드가 아니라 정책 그룹을 가리켜 노드를 바꿔도 규칙을 수정할 필요가 없게 합니다. 수동 선택 select, 자동 속도 측정 url-test, 장애 조치 fallback, 부하 분산 load-balance 등 유형이 있으며 용도에 맞게 섞어 구성할 수 있습니다. 정책 그룹은 서로 중첩되어 다단계 선택 구조도 만들 수 있습니다.
두 종류의 내장 매칭 데이터베이스입니다. GeoIP는 IP 소속 지역으로 매칭하며(예: GEOIP,CN,DIRECT), GEOSITE는 도메인 분류 목록으로 매칭합니다. 데이터베이스 파일은 코어 업데이트와 별도이므로 오래되면 분산 판단이 부정확해질 수 있습니다. 대부분의 클라이언트는 설정에서 데이터베이스 원클릭 업데이트를 제공하므로 분산이 이상하면 먼저 업데이트한 뒤 규칙을 점검하세요.
DNS 처리 방식 중 하나로, 코어가 도메인 조회에 대해 먼저 예약 대역의 가짜 IP(기본값 198.18.0.0/16)를 반환하고 앱이 실제로 연결을 시도할 때 도메인 기준으로 규칙을 매칭합니다. 이를 통해 DNS 조회 대기 시간을 없애고 조회 결과가 분산을 우회하는 데 쓰이는 것도 방지합니다. 이 모드로 전환한 뒤에는 시스템 DNS 캐시를 한 번 비우는 것을 권장합니다.
가상 네트워크 카드를 통해 시스템의 모든 네트워크 트래픽을 넘겨받는 방식으로, 앱이 시스템 프록시 설정을 따르는지에 의존하지 않아 명령줄 프로그램, 게임 등 프록시를 거치지 않던 트래픽까지 포함시킬 수 있습니다. 활성화하려면 관리자 권한 또는 시스템 승인이 필요합니다. 시스템 프록시와는 둘 중 하나만 켜면 되며, 둘 다 켠다고 추가 효과가 생기지는 않습니다.
운영체제 수준의 HTTP / SOCKS 프록시 설정입니다. 클라이언트에서 이 옵션을 켜면 이 설정을 따르는 앱(주로 브라우저)이 트래픽을 Clash의 로컬 포트로 넘깁니다. 일부 소프트웨어는 시스템 프록시 설정을 무시하는데, 이때는 TUN 모드로 바꾸거나 해당 소프트웨어 내부에서 별도로 프록시 주소와 포트를 지정해야 합니다.
구독은 노드 정보의 출처이고, 노드는 트래픽의 실제 출구입니다. 가져오기, 업데이트, 속도 측정, 변환은 일상적으로 가장 자주 다루는 개념들입니다.
서비스 제공자가 주는 HTTPS 링크로, 노드와 규칙이 담긴 전체 설정 또는 노드 목록을 반환하며 클라이언트가 주기적으로 가져와 최신 상태를 유지합니다. 구독 링크는 계정 자격 증명과 같아서 유출되면 다른 사람이 트래픽 할당량을 그대로 소진할 수 있으므로 공개된 장소에 붙여넣지 마세요. 가져오기가 실패할 때 확인할 단계는 본 사이트의 관련 글을 참고하세요.
설정의 proxies 섹션에 있는 서버 항목 하나로, 프로토콜 유형, 주소, 포트, 인증 정보를 담고 있습니다. 노드 이름은 구독 제공자가 정하며 보통 지역과 트래픽 배율 표시가 함께 붙습니다. 클라이언트에 표시되는 노드의 밀리초 수치는 로컬에서 해당 노드까지 한 번의 HTTP 핸드셰이크에 걸린 시간이며 대역폭 지표가 아닙니다.
클라이언트가 노드에 HTTP 요청 한 번(흔히 generate_204 같은 테스트 주소 사용)을 보내고 소요 시간을 밀리초 단위로 기록합니다. 수치는 회선 도달 가능성과 응답 속도를 나타낼 뿐, 낮다고 해서 다운로드가 빠르다는 뜻은 아닙니다. timeout이 표시되면 해당 노드가 현재 도달할 수 없다는 뜻이며, url-test 계열 정책 그룹은 바로 이 테스트를 기반으로 출구를 자동 선택합니다.
한 클라이언트 형식의 구독을 다른 형식으로 바꿔주는 서비스나 도구로, 예를 들어 범용 노드 목록을 Clash가 읽을 수 있는 YAML로 변환합니다. 제3자 온라인 변환 서비스를 쓰면 구독 링크를 변환 서버에 넘기게 되어 유출 위험이 있습니다. 클라이언트 내장 해석 기능을 우선 사용하고, 정말 필요할 때만 직접 구축한 변환 서비스를 선택하세요.
Clash와 직접 관련된 하위 네트워크 개념들입니다. 연결 이상을 진단할 때 문제는 대개 클라이언트 자체가 아니라 이 계층에서 발생합니다.
프록시는 켜져 있지만 도메인 조회 요청이 여전히 로컬 통신사 DNS로 직접 나가는 현상으로, 접속 의도가 노출되고 분산 판단도 부정확해집니다. Clash는 DNS를 넘겨받아 유출을 막는데, 설정의 dns 섹션에서 enable: true로 두고 Fake-IP 모드나 nameserver 그룹을 함께 사용합니다. 온라인 DNS 검사 페이지로 여전히 유출되는지 확인할 수 있습니다.
하나의 포트로 HTTP와 SOCKS5 인바운드 연결을 동시에 받는 방식으로, 설정 필드는 mixed-port이며 기본값은 보통 7890입니다. 브라우저나 시스템 프록시에 포트를 입력할 때는 이 값 하나만 넣으면 되고 프로토콜을 구분할 필요가 없습니다. 다른 프로그램이 이 포트를 점유하면 사용 중이지 않은 값으로 바꾸고 클라이언트를 재시작하면 복구됩니다.
프록시 회선이 UDP 트래픽을 처리할 수 있는 능력으로, 음성 통화, 온라인 게임, QUIC 프로토콜이 모두 이에 의존합니다. 노드 프로토콜과 서버 측이 동시에 지원해야 하며 설정에는 흔히 udp: true 필드가 있습니다. UDP가 통하지 않을 때의 대표적인 증상은 웹 브라우징은 정상이지만 게임 지연이 비정상적이고 음성 연결이 되지 않는 것입니다.
자기 자신을 가리키는 예약 IP, 즉 127.0.0.1입니다. Clash의 로컬 인바운드 포트는 기본적으로 루프백 주소에서 대기하므로 로컬 프로그램만 접근할 수 있습니다. 같은 LAN에 있는 다른 기기와 프록시를 공유하려면 설정에서 allow-lan을 켜고, 상대방에게 127.0.0.1이 아니라 본기의 LAN IP를 입력하도록 해야 합니다.
NEXT · 다음 자료
용어를 확인했다면 이제 실전 단계로 돌아갈 차례입니다. 단계별 튜토리얼, 플랫폼별 설치 안내, 분류별 Q&A로 다운로드부터 분산 검증까지 전 과정을 다룹니다.