NEW! |API 한 번 호출로 깔끔한 데이터를 받아보세요. 스크래퍼가 필요 없습니다.무료 토큰 10,000개 받기 →

Shadowsocks 클라이언트: 2026년에 고르고 설정하고 사용하는 방법

2026년 Windows, macOS, Linux, Android, iOS에서 쓸 Shadowsocks 클라이언트와 ss:// 링크 가져오기, 암호화 방식 선택, 터널 동작 확인 방법을 정리했습니다.

게시일2023년 6월 3일
업데이트2026년 10월 20일
읽는 시간12 분
작성자Brandon Perry

Shadowsocks 클라이언트는 기기에서 Shadowsocks 서버에 접속해 트래픽을 암호화된 터널로 보내 주는 앱입니다. 누군가에게서 ss:// 링크나 QR 코드, 서버 정보를 받았다면 클라이언트가 필요합니다. 그런데 어떤 앱을 고르느냐는 생각보다 훨씬 중요합니다. 예전 가이드에서 추천하는 클라이언트 중 절반은 몇 년째 업데이트가 없고, 일부는 최신 서버와 아예 통신하지 못하기 때문입니다.

대부분의 경우 답은 간단합니다. Outline은 모든 플랫폼에서 가장 쉬운 무료 선택지이고, Android에서 세부 설정까지 하고 싶다면 shadowsocks-android, Linux와 서버, 라우터에는 shadowsocks-rust의 sslocal이 잘 맞습니다. 아래에서는 2026년에도 개발이 이어지는 클라이언트가 무엇인지 확인하고, ss:// 링크를 구성 요소별로 뜯어본 뒤, 플랫폼별로 설정해 보겠습니다. 마지막에는 트래픽이 정말 서버를 거쳐 나가는지도 검증합니다. 초록색 “연결됨” 아이콘만으로는 그 사실이 증명되지 않기 때문입니다.

Shadowsocks Client 문구가 들어간 디지털 도시 풍경 위의 어두운 방패 엠블럼

Shadowsocks 클라이언트가 실제로 하는 일#

Shadowsocks는 암호화 프록시 프로토콜입니다. 2012년에 일부 지역에서 접속할 수 없는 사이트에 닿기 위한 방법으로 처음 등장했고, 지금은 제한된 네트워크에서 가장 널리 쓰이는 프로토콜 중 하나가 되었습니다. 구성은 항상 두 부분으로 나뉩니다. 제한이 없는 네트워크에 있는 서버, 그리고 내 기기에서 실행되는 클라이언트입니다.

클라이언트가 하는 일은 세 가지입니다.

  1. 로컬 프록시를 엽니다. 클라이언트는 내 컴퓨터에서 연결을 기다리며, 보통 127.0.0.1:1080에서 SOCKS5 프록시로 동작합니다. 일부 클라이언트는 HTTP 프록시나 시스템 전체에 적용되는 VPN 인터페이스도 함께 엽니다.
  2. 암호화해서 전달합니다. 앱이 이 로컬 프록시로 보내는 모든 연결은 공유 키로 암호화된 뒤 Shadowsocks 서버로 전달됩니다.
  3. 무엇을 터널로 보낼지 결정합니다. 모드에 따라 모든 트래픽일 수도 있고, 규칙에 맞는 트래픽만일 수도 있으며, 직접 지정한 앱만일 수도 있습니다.

반대편에서는 서버가 트래픽을 복호화하고 웹사이트와 실제 연결을 맺습니다. 그래서 웹사이트에는 내 IP 주소 대신 서버의 IP 주소가 보입니다. 인터넷 서비스 제공업체 쪽에서는 서버 한 대로 향하는 암호화된 스트림만 보일 뿐, 프록시 핸드셰이크처럼 눈에 띄는 부분은 없습니다.

Browser / app
   │  plain SOCKS5 or HTTP (only on your device)
   ▼
Shadowsocks client  127.0.0.1:1080
   │  encrypted Shadowsocks stream
   ▼
Shadowsocks server  (your VPS or provider)
   │  normal HTTPS
   ▼
Website

Shadowsocks에 대해 흔히 하는 오해가 두 가지 있습니다.

  • SOCKS5 프록시가 아닙니다. 클라이언트는 앱과 SOCKS5로 통신하지만, 서버와의 연결에는 별도의 암호화 프로토콜을 씁니다. 그래서 Shadowsocks 클라이언트를 일반 SOCKS5 서버에 연결할 수 없고, 그 반대도 마찬가지입니다.
  • 기본 설정에서는 완전한 VPN이 아닙니다. 기본 모드에서는 로컬 프록시를 사용하는 앱만 터널을 거치고, 프록시 설정을 무시하는 앱은 그대로 직접 나갑니다. 기기 전체를 터널로 보내려면 클라이언트를 VPN(TUN) 모드로 바꿔야 합니다.

2026년 추천 Shadowsocks 클라이언트#

아직도 오래전에 개발이 멈춘 클라이언트를 추천하는 목록이 많아서, 2026년 10월에 클라이언트마다 릴리스 이력을 직접 확인했습니다. 현재 상태는 아래 표와 같습니다.

공식 클라이언트와 Shadowsocks 전용 클라이언트#

클라이언트플랫폼Shadowsocks 2022 암호화 방식플러그인2026년 상태
Outline ClientWindows, macOS, Linux, Android, iOS, ChromeOS아니요, 기존 암호화 방식만 지원아니요활발히 개발 중이며, 2026년 1월부터 비영리 단체인 Outline Foundation이 운영
shadowsocks-androidAndroid예예, 별도 앱으로 설치GitHub에서 유지보수 중(v5.3.4). Google Play 버전은 2021년 이후 업데이트 없음
ShadowsocksX-NGmacOS아니요예마지막 릴리스는 2024년 10월의 v1.10.3. Apple Silicon에서 네이티브로 실행
shadowsocks-rust (sslocal)Linux, macOS, Windows, 라우터예예레퍼런스 구현체로, 정기적으로 새 버전이 나옴(v1.25.0)
Shadowsocks for WindowsWindows아니요예아직 동작하지만 마지막 릴리스(4.4.1.0)는 2022년 2월
shadowsocks-libev, 현재 이름은 shadowsocks-cLinux, 라우터아직 정식 릴리스에는 미포함예새 이름으로 개발이 재개되어 2026년 2월에 v3.3.6 출시
shadowsocks-qt5Linux, Windows아니요아니요개발 중단. 대신 sslocal이나 멀티 프로토콜 앱을 사용
Python shadowsocks (pip)모든 플랫폼아니요아니요몇 년 전에 개발이 중단되었으니 쓰지 말 것
ShadowsocksR (SSR)여러 플랫폼아니요아니요자체 프로토콜을 쓰는, 사실상 끝난 포크로 최신 서버와 호환되지 않음

Shadowsocks도 지원하는 멀티 프로토콜 클라이언트#

나중에 VLESS, Trojan, Hysteria가 필요해질 수도 있다면, 앱 하나로 Shadowsocks와 함께 이 프로토콜을 모두 처리할 수 있습니다.

  • 데스크톱: mihomo 코어 기반의 Clash Verge Rev와 v2rayN을 쓸 수 있습니다.
  • Android: NekoBox, Hiddify, 공식 sing-box 앱이 있습니다. NekoBox는 업데이트가 느리고 Google Play 페이지를 제3자가 운영하므로 GitHub에서 설치하세요.
  • iOS: sing-box 문서에서 링크하는 무료 앱 sing-box MT와 Potatso가 있습니다. Potatso는 예전 오픈소스 저장소가 방치된 상태지만 App Store에서는 계속 업데이트되고 있습니다. Shadowrocket, Stash, Surge 같은 유료 앱을 쓰면 여기에 규칙 기반 라우팅까지 더할 수 있습니다.

sing-box와 mihomo는 둘 다 Shadowsocks 2022 암호화 방식을 지원합니다. 자주 쓰는 플러그인도 내장되어 있어서 별도 프로그램으로 설치할 필요가 없습니다.

상황별 추천#

  • 어떤 기기에서든 가장 쉬운 선택: Outline입니다. 키를 붙여 넣고 Connect를 누르면 끝납니다.
  • 세부 설정까지 원하는 Android 사용자: shadowsocks-android를 쓰세요.
  • Mac: ShadowsocksX-NG가 기본이고, 라우팅 규칙과 최신 암호화 방식이 필요하다면 Clash Verge Rev가 낫습니다.
  • Linux, 서버, 라우터: shadowsocks-rust의 sslocal이 정답입니다.
  • iPhone: 무료로 쓰려면 Outline을, 사이트별 라우팅이 필요하다면 규칙 기반 앱을 고르세요. Outline에는 사이트별 라우팅 기능이 없습니다.

서버에서 받아야 하는 정보#

직접 입력하든 가져오든, 모든 Shadowsocks 클라이언트에는 같은 네 가지 값이 필요합니다.

항목예시참고
서버203.0.113.10IP 주소 또는 도메인 이름
포트8388서버가 대기 중인 포트라면 무엇이든 가능하며, 443을 많이 씀
비밀번호 / 키Secret0서버와 정확히 일치해야 함
암호화 방식(method)chacha20-ietf-poly1305서버와 정확히 일치해야 함

암호화 방식이나 비밀번호가 틀려도 명확한 오류 메시지는 뜨지 않습니다. 클라이언트는 연결된 것처럼 보이는데 아무것도 열리지 않죠. 그래서 이 문제가 설정 오류 중에서 압도적으로 흔합니다.

ss:// 링크 읽는 법#

서비스 제공업체나 서버 관리 패널은 보통 이 네 가지 값을 SIP002 형식의 링크 하나로 묶어서 주고, 옆에 QR 코드를 함께 보여 주는 경우가 많습니다.

ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpTZWNyZXQw@203.0.113.10:8388#Frankfurt
부분의미
ss://모든 Shadowsocks 클라이언트가 인식하는 스킴
Y2hhY2hh…암호화 방식과 비밀번호(chacha20-ietf-poly1305:Secret0)를 URL-safe Base64로 인코딩한 값
@203.0.113.10:8388서버 주소와 포트
#Frankfurt앱에 표시되는 이름표로, 연결에는 영향을 주지 않음

받은 값이 무엇인지 확인하고 싶다면 가운데 부분을 echo Y2hhY2hh… | base64 -d로 디코딩해 보면 됩니다. Shadowsocks 2022 암호화 방식용 링크는 모양이 다릅니다. 사양에서 Base64 사용을 금지하기 때문에 암호화 방식과 키가 평문으로 적히고, 특수 문자만 퍼센트 인코딩됩니다. 서버가 플러그인을 쓴다면 포트 뒤에 /?plugin= 매개변수가 붙습니다.

URL로 서버 정보를 배포하는 다른 형식도 두 가지 더 만날 수 있습니다.

  • SIP008 구독 URL. 서버 목록을 JSON으로 돌려주는 HTTPS 링크입니다. 클라이언트가 이 링크를 주기적으로 다시 내려받기 때문에(shadowsocks-rust는 기본값이 1시간마다), 제공업체는 새 링크를 보내지 않고도 서버를 바꿀 수 있습니다.
  • Outline ssconf:// 키. Outline의 동적 액세스 키입니다. 앱이 ssconf://를 https://로 바꾼 뒤 그 주소에서 현재 서버 정보를 가져옵니다.

링크를 가진 사람은 누구나 내 서버를 쓸 수 있으니, 이런 링크는 모두 비밀번호처럼 다루세요.

어떤 암호화 방식을 써야 할까#

암호화 방식계열써도 될까?
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305Shadowsocks 2022예, 클라이언트와 서버가 모두 지원한다면. 재전송(replay) 공격 방어가 내장되어 있습니다.
chacha20-ietf-poly1305기존 AEAD예. 표준을 따르는 클라이언트라면 반드시 지원해야 하는 방식이고, 스마트폰과 라우터에서 가장 빠릅니다.
aes-256-gcm, aes-128-gcm기존 AEAD예. 하드웨어 AES 가속을 지원하는 PC에서 가장 빠릅니다.
aes-256-cfb, aes-128-ctr, rc4-md5, salsa20 및 기타 스트림 암호레거시아니요. 무결성 검사가 없고, 프로젝트 측에서도 완전히 깨진 방식이라고 밝히고 있습니다.

스트림 암호의 위험은 이론에 그치지 않습니다. 2020년에 공개된 공격에서는, 누군가 트래픽을 녹화해 두었다가 같은 비밀번호로 여전히 스트림 암호를 쓰는 서버를 이용해 그 트래픽을 복호화할 수 있다는 사실이 드러났습니다.

Shadowsocks 2022는 키를 다루는 방식도 바꿉니다. 임의로 정한 비밀번호를 받아 주지 않기 때문입니다. 키는 Base64로 인코딩한 무작위 바이트여야 하며, 2022-blake3-aes-128-gcm은 16바이트, 나머지 두 방식은 32바이트입니다. 그래서 키는 openssl rand -base64 16 또는 openssl rand -base64 32로 생성합니다. 프로토콜은 타임스탬프도 검사해서 30초 넘게 차이 나는 메시지를 재전송 공격으로 간주합니다. 실제로는 기기 시계가 30초만 어긋나도 모든 연결이 실패한다는 뜻입니다.

Shadowsocks 클라이언트 설정 방법#

먼저 ss:// 링크를 복사해 두세요. 아래 클라이언트는 모두 이 링크를 가져올 수 있어서, 암호화 방식과 키를 손으로 입력하지 않아도 됩니다.

Windows#

가장 간단한 방법은 Outline입니다.

  1. Outline 웹사이트에서 Windows용 Outline Client를 내려받아 설치합니다.
  2. Add server(서버 추가)를 클릭하고, Paste access key here 입력란에 ss:// 링크나 액세스 키를 붙여 넣은 뒤 확인합니다.
  3. Connect를 클릭하고, 처음 한 번 뜨는 네트워크 권한 요청을 승인합니다. 이후로는 모든 트래픽이 터널을 거칩니다.

전통적인 방법은 Shadowsocks for Windows입니다.

  1. 프로젝트의 GitHub 릴리스 페이지에서 최신 ZIP 파일을 내려받아, 지우지 않고 계속 둘 폴더에 압축을 풉니다.
  2. Windows에 .NET Framework 4.8과 Visual C++ 2015 Redistributable(x86)이 없다면 먼저 설치한 다음 Shadowsocks.exe를 실행합니다.
  3. 트레이의 종이비행기 아이콘을 마우스 오른쪽 버튼으로 클릭하고 Servers를 열어 Import URL from Clipboard… 항목을 선택합니다. Edit Servers… 창에서 서버를 직접 추가해도 됩니다.
  4. System Proxy에서 목록에 있는 사이트만 터널로 보내려면 PAC를, 모든 트래픽을 보내려면 Global을 선택합니다.

macOS#

  1. GitHub 릴리스 페이지에서 ShadowsocksX-NG.dmg를 내려받고 앱을 응용 프로그램 폴더로 드래그합니다. 처음 실행할 때 macOS가 앱을 열지 않으면 시스템 설정 → 개인정보 보호 및 보안에서 허용해 주세요.
  2. 메뉴 막대 아이콘에서 Import Server URLs… 또는 Scan QR Code From Screen 항목을 선택합니다. Server Preferences… 창에서 값을 직접 입력할 수도 있습니다.
  3. Shadowsocks를 켜고 Auto Mode By PAC, Global Mode, Manual Mode 중에서 모드를 고릅니다. 이 중 Manual Mode에서는 직접 설정한 앱만 터널을 사용합니다.

Linux(라우터, 서버, Docker 포함)#

Linux에서는 shadowsocks-rust의 sslocal을 쓰세요. 배포판의 패키지 관리자로 설치하거나 snap install shadowsocks-rust 또는 brew install shadowsocks-rust를 사용할 수 있고, 릴리스 바이너리를 내려받아도 됩니다.

가장 빠르게 시작하려면 링크를 그대로 넘기면 됩니다.

sslocal -b 127.0.0.1:1080 --server-url "ss://Y2hhY2hh...@203.0.113.10:8388"

계속 쓸 설정이라면 값을 설정 파일에 넣어 두세요.

{
  "server": "203.0.113.10",
  "server_port": 8388,
  "password": "Secret0",
  "method": "chacha20-ietf-poly1305",
  "local_address": "127.0.0.1",
  "local_port": 1080
}
sslocal -c config.json                    # SOCKS5 proxy on 127.0.0.1:1080
sslocal -c config.json --protocol http    # HTTP proxy instead

snap 패키지에는 systemd로 활성화할 수 있는 sslocal-daemon 서비스도 들어 있고, 공식 Docker 이미지인 ghcr.io/shadowsocks/sslocal-rust도 있습니다.

Android#

  1. GitHub 릴리스 페이지에서 shadowsocks-android를 설치합니다. Google Play 버전도 아직 동작하지만 2021년 이후로 업데이트되지 않았습니다.
  2. 상단의 프로필 추가 아이콘을 누르고 Scan QR code, Import from Clipboard, Manual Settings 중 하나를 선택합니다.
  3. 프로필을 선택하고 동그란 연결 버튼을 누른 뒤 VPN 연결 요청을 수락합니다.
  4. 프로필 설정에서 Route를 지정합니다(예를 들어 Bypass LAN을 고르면 로컬 주소는 터널을 거치지 않습니다). 일부 앱만 터널을 쓰게 하려면 Apps VPN mode를 켜고 해당 앱을 고르세요.

iPhone 및 iPad#

  1. App Store에서 Outline을 설치합니다.
  2. ss:// 링크를 복사합니다. 앱을 열면 Outline이 링크를 추가할지 물어보고, 아니면 Add server를 눌러 직접 붙여 넣어도 됩니다.
  3. Connect를 누르고 VPN 구성 추가를 허용합니다.

Shadowrocket이나 Potatso 같은 규칙 기반 앱도 사용법은 같습니다. 링크를 붙여 넣거나 QR 코드를 스캔해 서버를 추가한 다음 켜면 됩니다. 차이점은 이런 앱은 선택한 사이트만 터널로 보낼 수 있지만, Outline은 항상 모든 트래픽을 터널로 보낸다는 것입니다.

라우팅 모드: 실제로 무엇이 터널을 거치나#

모드는 어떤 트래픽이 Shadowsocks를 거칠지 결정합니다. “잘 동작하는” 클라이언트가 아무 일도 안 하는 것처럼 보인다면, 두 번째로 흔한 원인이 바로 잘못 고른 모드입니다.

모드터널을 거치는 트래픽적합한 용도
수동(Manual)127.0.0.1:1080을 지정한 앱만스크립트, 브라우저 프로필 하나, 테스트
전역(Global, 시스템 프록시)시스템 프록시 설정을 따르는 모든 앱브라우저 전체를 터널로 보내는 웹 서핑
PAC / 자동 / 규칙목록에 있는 도메인만 터널로 보내고 나머지는 직접 연결국내 사이트는 빠르게 쓰고 해외 사이트만 터널로 보낼 때
VPN / TUNUDP와 프록시 설정을 무시하는 앱까지 포함한 기기의 모든 트래픽게임, 메신저, 스마트폰, 그리고 프록시를 “인식하지 못하는” 모든 프로그램

Outline과 모바일 앱은 항상 VPN 모드로 동작합니다. 전통적인 데스크톱 클라이언트는 기본값이 시스템 프록시이고, Clash Verge Rev나 v2rayN 같은 멀티 프로토콜 앱에서는 TUN 모드를 켤 수 있습니다.

특정 앱에서 로컬 프록시 사용하기#

  • Firefox: 설정을 열고 “proxy”를 검색한 뒤 Proxy settings 섹션에서 Configure proxy를 클릭합니다. Manual proxy configuration을 선택하고 SOCKS Host에 127.0.0.1과 포트 1080을 입력한 다음, SOCKS v5를 선택하고 Proxy DNS when using SOCKS v5가 체크되어 있는지 확인하세요. 최신 버전에서는 기본으로 체크되어 있는데, 이 옵션이 꺼져 있으면 DNS 요청이 터널을 우회합니다.
  • Chrome과 Edge: 이 브라우저들은 시스템 프록시를 따릅니다. 브라우저 하나만 터널로 보내려면 --proxy-server="socks5://127.0.0.1:1080" 옵션을 붙여 실행하세요. SOCKS5를 쓰면 Chrome은 항상 프록시 쪽에서 도메인 이름을 조회하므로 DNS가 새지 않습니다.
  • 브라우저 확장 프로그램: 프록시 전환 확장 프로그램을 쓰면 선택한 사이트만 127.0.0.1:1080으로 보내고, 클릭 한 번으로 규칙을 바꿀 수 있습니다. 원조 Proxy SwitchyOmega는 현재 Chrome에서 더 이상 동작하지 않으며, 지금 유지보수되는 포크는 ZeroOmega입니다. Chrome Web Store에는 가짜 “SwitchyOmega V3”도 올라와 있으니 설치 전에 게시자를 꼭 확인하세요. Firefox에서는 확장 프로그램의 원격 DNS 옵션이 켜져 있는지 확인하세요.
  • 명령줄: curl --socks5-hostname 127.0.0.1:1080 …을 쓰거나 ALL_PROXY=socks5h://127.0.0.1:1080을 설정합니다. HTTP 프록시만 이해하는 도구도 많은데, 그럴 때는 sslocal을 --protocol http 옵션으로 실행하면 됩니다.
  • Git: git config --global http.proxy socks5h://127.0.0.1:1080을 실행합니다.

socks5h의 h는 생각보다 중요합니다. 로컬 DNS 대신 프록시를 통해 도메인 이름을 조회하라고 도구에 알려 주기 때문입니다.

실제로 동작하는지 확인하기#

초록색 아이콘은 클라이언트가 실행되었다는 뜻일 뿐입니다. 트래픽이 어디로 나가는지 보려면 명령 하나만 실행하면 됩니다.

curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me

내 IP가 아니라 Shadowsocks 서버의 IP 주소가 출력되어야 합니다. VPN 모드라면 프록시 옵션 없이 curl https://ifconfig.me만 실행하세요. 그다음 브라우저에서 DNS 유출 테스트를 열어 보세요. 목록에 나오는 DNS 서버가 집에서 쓰는 인터넷 서비스 제공업체의 것이 아니라, 서버 쪽 네트워크나 공용 리졸버의 것이어야 합니다.

플러그인, 그리고 2026년 Shadowsocks는 얼마나 쉽게 탐지되나#

플러그인#

Shadowsocks는 SIP003 표준에 정의된 플러그인에 트래픽을 넘겨, 다른 전송 방식으로 한 번 더 감쌀 수 있습니다. 플러그인은 양쪽 끝에서 모두 실행되므로 클라이언트에도 서버와 같은 플러그인이 있어야 하고, 설정도 서버와 맞아야 합니다(v2ray-plugin이라면 호스트, 경로, TLS 사용 여부가 같아야 합니다). 플러그인은 한 번에 하나만 실행할 수 있고, TCP 트래픽만 전달합니다.

플러그인하는 일참고
v2ray-plugin트래픽을 WebSocket으로 감싸며, 필요하면 TLS도 적용CDN이나 443 포트의 일반 웹 서버 뒤에서 실행 가능
kcptun패킷 손실이 많은 회선에 맞게 조정된 UDP 기반 프로토콜로 트래픽 전송불안정한 모바일 연결이나 장거리 연결에 도움이 되지만 대역폭을 더 씀
simple-obfs트래픽을 일반 HTTP나 TLS처럼 위장더 이상 권장되지 않음. 대신 v2ray-plugin 사용
Cloak탐지용 접속(probe)에 대해 서버를 평범한 HTTPS 사이트처럼 보이게 함별도의 클라이언트와 서버 설정 필요

Outline과 많은 iOS 앱은 플러그인을 실행하지 못합니다. 서버가 플러그인을 쓴다면 위 표의 플러그인 열이 “예”인 클라이언트나, 해당 플러그인이 내장된 멀티 프로토콜 앱을 고르세요.

Shadowsocks는 탐지될 수 있을까?#

네, 장비를 잘 갖춘 네트워크 필터라면 가능합니다. Shadowsocks에는 겉으로 드러나는 핸드셰이크가 없습니다. 첫 패킷부터 암호화된 데이터가 실리기 때문에 스트림 전체가 무작위 바이트처럼 보입니다. 그런데 바로 이 설계가 약점이기도 합니다. 2021년 11월, 제한이 있는 지역의 필터링 시스템이 첫 패킷이 “지나치게 무작위로” 보이는 연결을 끊기 시작했습니다.

미국 여러 대학의 연구진은 USENIX Security 2023 논문에서 그 동작 방식을 설명했습니다. 이 시스템은 첫 데이터 패킷에 출력 가능한 문자의 비율 같은 단순한 규칙을 적용하며, 전체 연결 중 약 4분의 1만 검사합니다. 저자들은 그런데도 정상적인 인터넷 트래픽의 약 0.6%가 덩달아 걸려들 수 있다고 추정했습니다. 이에 대응해 shadowsocks-rust는 2022년 초에 설정 가능한 페이로드 접두사를 추가했고, Outline도 같은 해 하반기에 클라이언트에 비슷한 “prefix” 옵션을 넣었습니다.

실제로 이것이 의미하는 바는 다음과 같습니다.

  • 일반적인 네트워크에서는 호텔이나 카페 Wi-Fi, 사내 방화벽, 출장지 네트워크처럼, 최신 AEAD나 2022 암호화 방식을 쓰는 기본 Shadowsocks로도 충분히 잘 동작합니다.
  • 제한이 있는 지역에서는 언제까지나 접속을 보장하는 프로토콜이 없습니다. 요즘은 Reality를 쓰는 VLESS나 Trojan처럼 실제 TLS 트래픽을 흉내 내는 프로토콜이 더 오래 버티는 경우가 많고, 멀티 프로토콜 클라이언트를 쓰면 아무것도 다시 설치하지 않고 프로토콜을 바꿀 수 있습니다.
  • 개인정보 보호 측면에서는 Shadowsocks에 2022 버전을 포함해 전방향 안전성(forward secrecy)이 없다는 점을 기억하세요. 누군가 트래픽을 녹화해 두었다가 나중에 키를 손에 넣으면 그 트래픽을 복호화할 수 있습니다. 그러니 키는 주기적으로 교체하고, 링크를 여기저기 공유하지 마세요.

문제 해결#

증상예상 원인해결 방법
연결은 되지만 어떤 사이트도 열리지 않음암호화 방식이나 비밀번호가 서버와 다름값을 직접 입력하지 말고 ss:// 링크를 다시 가져오거나, 링크를 디코딩해서 비교
연결 시간 초과서버가 꺼져 있거나 포트가 틀렸거나, 내 네트워크에서 해당 포트가 닫혀 있음서버가 실행 중인지 확인하고 443 같은 다른 포트를 시도
브라우저는 되는데 다른 앱은 안 됨해당 앱이 시스템 프록시를 무시함VPN/TUN 모드로 바꾸거나 앱 자체의 프록시 설정을 지정
사이트에 여전히 실제 국가가 표시됨DNS나 트래픽이 터널을 우회함socks5h를 쓰거나, Firefox에서 “Proxy DNS”를 체크하거나, VPN 모드로 전환
2022 암호화 방식에서 모든 연결이 실패함키가 16바이트 또는 32바이트의 올바른 Base64가 아니거나, 기기 시계가 30초 넘게 어긋남openssl rand -base64 32로 키를 다시 생성하고(aes-128이면 16), 시계를 동기화
“Unsupported method” 오류클라이언트가 해당 암호화 방식을 모름클라이언트를 업데이트하거나 양쪽 모두 chacha20-ietf-poly1305 사용
플러그인을 쓰는 서버에 연결되지 않음클라이언트에 플러그인이 없거나 설정이 서버와 다름호스트, 경로, TLS 설정을 맞춰 같은 플러그인을 설치하거나, 플러그인을 지원하는 클라이언트 사용
몇 분 동안 되다가 멈춤네트워크의 필터링이나 속도 제한플러그인, 다른 포트, 또는 TLS 기반 프로토콜을 시도
속도가 느림서버가 멀거나 VPS가 과부하 상태이거나, 모바일 회선의 패킷 손실이 큼더 가까운 서버를 고르고, 불안정한 연결에서는 kcptun을 시도

Shadowsocks vs SOCKS5 프록시 vs VPN#

세 가지는 해결하는 문제가 서로 다른데도, 엉뚱한 것을 고르는 경우가 많습니다.

ShadowsocksSOCKS5 프록시VPN (WireGuard, OpenVPN)
서버까지 암호화예아니요. 트래픽과 로그인 정보가 회선상에 그대로 보임예
겉으로 보이는 모습무작위 바이트, 핸드셰이크 없음식별 가능한 프록시 핸드셰이크식별 가능한 VPN 핸드셰이크
적용 범위로컬 프록시를 쓰는 앱, TUN 모드에서는 기기 전체직접 설정한 앱기기 전체
일반적인 구성몇 명이 함께 쓰는 개인 서버 한 대제공업체가 주는 다수의 IP서버 한 대 또는 제공업체의 네트워크
적합한 용도필터링되는 네트워크와 제한이 있는 지역스크래핑, 자동화, 다중 계정 작업, 지역별 테스트신뢰할 수 없는 네트워크에서의 일상적인 개인정보 보호

Shadowsocks는 눈에 잘 띄지 않는 암호화 터널 하나를 제공하지만, 나가는 주소도 하나뿐입니다. 데이터 수집과 자동화에는 정반대가 필요합니다. 암호화 오버헤드 없이 출구 IP가 많아야 하죠. 이런 작업에는 SOCKS5 프록시가 더 잘 맞습니다. 공용 Wi-Fi에서 기기 전체를 보호하는 것이 목적이라면, Shadowsocks 서버를 직접 운영하는 것보다 FineVPN 같은 VPN이 더 간단합니다.

가장 좋은 Shadowsocks 클라이언트는 무엇인가요?

대부분의 사람에게는 Outline입니다. 무료이고 모든 플랫폼에서 실행되며, 링크만 붙여 넣으면 바로 쓸 수 있기 때문입니다. Android에서는 shadowsocks-android가 더 세밀한 설정을 제공하고, Linux와 라우터에서는 보통 shadowsocks-rust의 sslocal을 씁니다.

Windows에서는 어떤 Shadowsocks 클라이언트가 가장 좋나요?

접속만 하면 된다면 Outline이면 충분합니다. 라우팅 규칙이나 플러그인, Shadowsocks 2022 암호화 방식이 필요하다면 Clash Verge Rev나 v2rayN을 쓰세요. 전통적인 Shadowsocks for Windows도 아직 동작하지만, 마지막 릴리스는 2022년 2월에 나왔습니다.

iPhone에서는 어떤 Shadowsocks 클라이언트가 가장 좋나요?

Outline은 무료이고 대부분의 사람에게 충분합니다. 무료 앱 sing-box MT는 Shadowsocks 2022 암호화 방식을 지원하고, Potatso, Shadowrocket, Stash, Surge는 사이트별 규칙을 추가로 제공합니다.

Shadowsocks 클라이언트는 무료인가요?

공식 클라이언트와 Outline은 무료 오픈소스입니다. 다만 서버는 따로 있어야 하며, 직접 운영하는 VPS든 제공업체의 서버든 상관없습니다.

Shadowsocks는 VPN인가요?

엄밀히 말하면 아닙니다. 암호화 프록시이기 때문입니다. 하지만 Outline과 대부분의 모바일 앱은 시스템 VPN 인터페이스를 통해 동작하므로, 그런 기기에서는 VPN처럼 작동합니다.

Shadowsocks 클라이언트를 일반 SOCKS5 프록시와 함께 쓸 수 있나요?

아니요. 클라이언트는 앱과 SOCKS5로 통신하지만, 반대편에는 Shadowsocks 서버가 있어야 합니다.

Shadowsocks 암호화 방식은 무엇을 골라야 하나요?

양쪽이 모두 지원한다면 Shadowsocks 2022 암호화 방식을, 그렇지 않다면 chacha20-ietf-poly1305나 aes-256-gcm을 고르세요. aes-256-cfb나 rc4-md5 같은 레거시 스트림 암호는 피해야 합니다.

Shadowsocks는 합법인가요?

대부분의 국가에서 암호화 프록시 사용은 합법입니다. 다만 지역 제한을 우회하는 도구를 규제하는 나라도 있으니, 지금 있는 곳의 규정을 확인하세요.

2026년에도 Shadowsocks는 안전한가요?

최신 암호화 방식을 쓴다면 여전히 믿을 만한 암호화 터널입니다. 다만 고도화된 네트워크 필터에 전혀 보이지 않는 것은 아니고 전방향 안전성(forward secrecy)도 없으므로, 키를 남에게 공유하지 말고 주기적으로 교체하세요.

Outline은 모든 Shadowsocks 서버에서 동작하나요?

플러그인 없이 기존 AEAD 암호화 방식을 쓰는 서버라면 어디든 동작합니다. 플러그인이나 Shadowsocks 2022 암호화 방식이 필요한 서버에는 shadowsocks-android나 sing-box 같은 다른 클라이언트가 필요합니다.