fqnews2는 sing-box 코어를 품은 안드로이드 앱이라 실제 코드도 들어 있다. (저장소: bannedbook/fanqiang · 콘텐츠 ≈98MB · 91개 마크다운 튜토리얼 + 안드로이드 앱)이 레포가 무엇을 모아 놓은 물건인가.
대부분의 트렌딩 깃허브 레포는 "하나의 소프트웨어"다. fanqiang은 다르다. 수십 개의 서로 다른 우회 도구·프로토콜·플랫폼을 한 저장소 안에 정리한 메타(meta) 저장소다. 어떤 사람은 안드로이드용 클라이언트가 필요하고, 어떤 사람은 자기 VPS에 서버를 세우고 싶고, 어떤 사람은 라우터 전체에 적용하고 싶다 — fanqiang은 이 모든 경로를 "OS별 / 도구별 / 난이도별"로 색인해 둔다.
그래서 이 레포를 읽는 가장 좋은 방법은 "설치"가 아니라 "프록시·터널링·TLS 위장이라는 네트워크 개념이 실제 도구로 어떻게 구현되는가"를 비교 학습하는 것이다. 같은 목표(트래픽을 숨겨 전달)를 Shadowsocks·V2Ray·Trojan·Hysteria가 각기 다른 방식으로 푸는 모습을 한자리에서 볼 수 있다.
fanqiang은 크게 세 덩어리로 이루어진다. ① 튜토리얼 모음 — 91개의 마크다운 문서가 OS·도구별 클라이언트 설정과 VPS 서버 자가 구축을 설명한다. ② 원클릭 번들 — ChromeGo/EdgeGo/FirefoxGo처럼 여러 우회 엔진을 한 압축 파일에 묶어 둔 데스크톱 패키지(저장소엔 안내·일부 리소스, 실제 바이너리는 외부 배포). ③ 자체 앱 — fqnews2(FQNews), sing-box 코어를 내장한 안드로이드 RSS+프록시 앱으로, 이 부분만큼은 실제 Kotlin·Go 소스가 들어 있다.
트렌딩 이유 · 단일 도구 대비 "큐레이션 저장소"의 가치.
fanqiang은 깃허브에서 오랫동안 높은 스타를 유지해 온 대표적 우회 정보 허브다. 트렌딩하는 이유는 기술적 새로움보다 "흩어진 생태계를 한곳에 정리·유지보수한다"는 큐레이션 가치에 있다. 핵심 장점은 넷이다.
| 비교 항목 | 개별 도구 저장소(예: shadowsocks-windows) | fanqiang (큐레이션 허브) |
|---|---|---|
| 범위 | 한 도구 / 한 플랫폼 | 다수 프로토콜 × 모든 OS를 교차 정리 |
| 입문 장벽 | 이미 도구를 아는 사람 기준 | 비전문가용 단계별 스크린샷 튜토리얼 |
| 자가 호스팅 | 다루지 않음 | VPS 구매 → BBR 가속 → Nginx+TLS+CDN까지 서버 전 과정 |
| 유지보수 | 도구별 제각각 | IP 차단 시 갱신·새 프로토콜 추가를 지속 반영 |
| 학습 가치 | 도구 사용법 | 같은 문제를 여러 프로토콜이 푸는 방식 비교 학습 |
검열기는 단순 IP/도메인 차단을 넘어 DPI(Deep Packet Inspection, 심층 패킷 검사)로 패킷 내용·트래픽 패턴을 분석하고, 의심스러운 서버에 직접 탐색 트래픽을 보내 "이거 프록시 아니야?"를 떠보는 능동 탐사(active probing)까지 한다. 그래서 한때 잘 통하던 프로토콜(예: 초기 Shadowsocks)도 특징(fingerprint)이 발각되면 차단당한다. 우회 도구가 끊임없이 새 버전·새 프로토콜로 진화하는 이유가 이것이다.
그 답이 V2Ray의 VMess/VLESS + TLS + WebSocket + CDN, Trojan(아예 정상 HTTPS 서버인 척), Hysteria(QUIC/UDP 기반 고속) 같은 신세대 프로토콜이다. 공통 전략은 "트래픽을 검열기가 함부로 끊을 수 없는 일반 HTTPS(443 포트)와 구별 불가능하게 만드는 것"이다. fanqiang은 이 진화 과정을 도구·튜토리얼로 시간순처럼 보여 줘, "검열 대응 설계의 역사"를 읽는 교재가 된다.
저장소가 다루는 프로토콜·클라이언트·서버·자체 앱 코어.
fanqiang의 진짜 "기술 스택"은 프로그래밍 언어가 아니라 이 프로토콜들의 집합이다. 각각 등장 시기와 위장 전략이 다르다.
| 프로토콜 | 핵심 아이디어 (교육적 요약) |
|---|---|
| Shadowsocks (SS) | 1세대. 대칭키 암호화 SOCKS5 프록시. 가볍고 빠르지만 트래픽이 "고유 특징"을 가져 DPI로 식별 가능 → 차단 표적이 됨. |
| ShadowsocksR (SSR) | SS에 난독화(obfs) 플러그인을 추가해 트래픽 특징을 흐림. 이후 개발 중단되어 레거시로 분류. |
| SS + v2ray-plugin | SS 트래픽을 WebSocket+TLS로 감싸 일반 HTTPS처럼 보이게 한 절충안. |
| V2Ray (VMess/VLESS) | 2세대 플랫폼. 모듈식 전송 계층(TCP·WS·gRPC·HTTP/2)과 TLS·CDN 조합으로 "보통 웹사이트"로 위장. VLESS는 VMess를 경량화·무상태화한 후속. |
| Trojan | 위장 자체가 설계 철학. 정상 TLS 핸드셰이크 후, 인증 실패 시 진짜 웹서버 응답을 주어 능동 탐사에 "그냥 HTTPS 사이트"로 보이게 함. |
| Hysteria / Hysteria2 | 3세대. QUIC(UDP) 기반으로 고손실·고지연 회선에서 TCP보다 빠른 처리량을 노림. |
| NaiveProxy | Chromium 네트워크 스택을 재사용해 브라우저와 똑같은 TLS 지문을 만들어 식별을 어렵게 함. |
| Brook · Tor · Psiphon · Lightsocks | 저장소가 함께 안내하는 보조 도구군. Tor는 다중 홉 양파 라우팅으로 익명성에 특화. |
같은 프로토콜이라도 OS마다 별도의 클라이언트가 있다. fanqiang은 이를 플랫폼별로 색인한다.
| 플랫폼 | 대표 클라이언트 (튜토리얼 수록) |
|---|---|
| Windows | v2rayN · Clash for Windows · SSTap · ShadowsocksR · (Tor+v2rayN) |
| macOS | ClashX · V2RayU · V2rayX · Surge |
| Android | v2rayNG · Clash for Android · BifrostV · Surfboard · shadowsocks-android · FQNews(자체 앱) |
| iOS | Shadowrocket · Quantumult X · Surge · Potatso · Kitsunebi (대부분 미국 App Store 필요) |
| 라우터 | Merlin(아수스) · OpenWRT(SSR Plus 플러그인) — 네트워크 전체 단위 적용 |
| 게임기·기타 | PS4/PS5·Switch·Xbox·Apple TV·Oculus — 보통 PC/Mac을 경유 라우터(旁路由)로 활용 |
레포의 가장 "엔지니어링적인" 부분. 직접 VPS에 서버를 세우는 풀스택 가이드가 v2ss/에 있다.
| 요소 | 역할 |
|---|---|
| VPS | 해외 가상 서버(Vultr·BandwagonHost 등). 출구 노드 역할. |
| Nginx | 리버스 프록시 + TLS 종단 + "진짜 웹사이트 위장"(같은 443 포트에서 정상 사이트와 프록시를 분기). |
| TLS 인증서 | Let's Encrypt 또는 Cloudflare 발급. 암호화 + "정상 HTTPS"의 핵심. |
| CDN (Cloudflare) | 도메인을 CDN 뒤에 숨겨 원 서버 IP 노출·차단을 회피. WebSocket 지원이 필수 조건. |
| Google BBR | 리눅스 커널 혼잡 제어 알고리즘. 손실 많은 국제 회선에서 처리량을 크게 올림(원클릭 스크립트 제공). |
| 운영 스크립트 | server-cfg/의 nginx.conf·route.json·헬스체크·crontab 등 실제 설정 파일. |
저장소에서 유일하게 "빌드 가능한 소프트웨어"인 fqnews2는 안드로이드 앱으로, 그 기술 스택이 현대 우회 클라이언트의 전형을 보여 준다.
| 요소 | 역할 |
|---|---|
| Kotlin / Android (518개 .kt) | 앱 UI·서비스 계층. bannedbook/v2ray.vpn + Feeder(spacecowboy) 기반. (v2ray.vpn 내부는 NekoBox for Android 아키텍처 계보) |
libcore (Go) | 실제 프록시 엔진. gomobile로 안드로이드 라이브러리(.aar)로 빌드. |
| sing-box | go.mod가 의존하는 통합 프록시 코어 — SS·VMess·VLESS·Trojan·Hysteria·TUN을 한 엔진에서 처리. |
| sing-tun | OS의 모든 트래픽을 잡는 TUN 가상 인터페이스 구현(=VPN 모드). |
| Feeder (오픈소스) | RSS 리더 컴포넌트. "노드를 가져와 뒤에서 자동 우회해 뉴스를 받아 캐시"하는 앱 컨셉. |
| 라이선스 | GPLv3 (앱). 콘텐츠는 "자유 배포, 상업 사용 금지". |
우회 프로토콜이 트래픽을 어떻게 "숨기고 위장하나"의 원리.
모든 우회 도구의 뼈대는 동일하다. 내 기기(클라이언트)에서 나가는 트래픽을 암호화된 터널로 감싸 검열망 밖의 출구 서버로 보내고, 거기서 진짜 목적지로 중계한 뒤 응답을 같은 길로 되받는다. 차이는 "터널을 어떻게 위장하느냐"뿐이다.
우회 터널을 "외교 행낭(diplomatic pouch)"으로 생각하자. 국경 검문소(검열기)는 일반 화물은 열어 보지만, 봉인된 외교 행낭은 함부로 열 수 없다. 우회 프로토콜의 목표는 내 트래픽을 "검문소가 열어 볼 수도, 그렇다고 통째로 막을 수도 없는 봉인된 행낭"으로 만드는 것이다 — 너무 수상하면(특이한 포트·이상한 패턴) 막히므로, 최선은 "수많은 평범한 HTTPS 행낭 중 하나처럼 보이는 것"이다. 이것이 TLS+443 위장의 본질이다.
| 세대 | 대표 | 위장 방식 (교육적 설명) |
|---|---|---|
| 1세대 | Shadowsocks | 그냥 암호화만. "내용은 못 보지만, 트래픽 모양이 특이"해서 패턴 분석에 약함. |
| 2세대 | V2Ray·Trojan | 암호화 + TLS로 한 번 더 감싸 진짜 HTTPS와 동일하게. Trojan은 인증 실패 시 정상 웹페이지를 돌려줘 탐사를 무력화. |
| 3세대 | Hysteria·Reality류 | 전송 효율(QUIC/UDP)과 TLS 지문 위조로 "정상 트래픽과 통계적으로도 구별 불가"를 지향. |
레포의 v2ss/V2Ray之TLS+WebSocket+Nginx+CDN配置方法.md가 설명하는, 가장 견고한 위장 구성의 동작 원리다. 핵심은 "한 도메인의 443 포트에서, 검열기가 보기엔 평범한 웹사이트가 돌아가는 것처럼 보이게" 만드는 것이다.
① TLS — 내용 암호화 + "암호화된 HTTPS"라는 평범한 외형. ② WebSocket — 일반 웹앱이 흔히 쓰는 정상 프로토콜이라 의심받지 않음. ③ Nginx 경로 분기 — 같은 도메인에서 일반 방문자에겐 진짜 웹페이지를, 정해진 비밀 경로에만 프록시를 노출. ④ CDN — 원 서버 IP를 Cloudflare 뒤에 숨겨, IP를 차단하려면 Cloudflare 전체를 끊어야 하는 부담을 검열기에 안김.
"코드 트리"가 아니라 "플랫폼별 가이드 트리"로 읽는다.
① README.md로 전체 지도 파악 → ② v2ss/自建V2ray服务器简明教程로 "터널의 양 끝(클라이언트↔서버)"이 어떻게 짝을 이루는지 → ③ v2ss/V2Ray之TLS+WebSocket+Nginx+CDN으로 위장의 정점 → ④ v2ss/server-cfg/nginx.conf로 실제 설정의 모양 → ⑤ fqnews2/libcore/go.mod로 "요즘 클라이언트는 sing-box 코어를 어떻게 쓰는가". 코드보다 "개념이 설정으로 어떻게 번역되는가"가 이 레포의 학습 핵심이다.
우회 생태계에서 배울 수 있는 보편 기술 개념.
이 레포는 "트래픽을 어느 지점에서 가로채는가"의 좋은 비교 교재다. ① SOCKS5/HTTP 프록시는 앱이 직접 프록시를 가리켜야 적용되고, ② 시스템 프록시는 OS 설정으로 대부분 앱을 우회시키며, ③ TUN(VPN 모드)는 가상 네트워크 인터페이스로 모든 트래픽(앱이 프록시를 몰라도)을 통째로 잡는다. fqnews2가 쓰는 sing-tun이 바로 이 TUN 계층이다.
ssh -D 1080)를 만들고, 브라우저만 그 프록시를 쓰게 설정해 "프록시 적용/미적용 앱"의 차이를 관찰하라. 본인 소유 서버로만.가장 큰 통찰은 "암호화는 내용을 가리지만, 통신이 일어났다는 사실·트래픽의 모양까지 가리지는 못한다"는 점이다. 그래서 우회는 단순 암호화를 넘어 "평범한 트래픽으로 보이게 하는 위장"으로 진화했다. TLS 핸드셰이크, SNI, ALPN, 인증서 체인 — 웹 보안의 기본기를 "공격자(검열기)가 무엇을 보는가" 관점에서 거꾸로 학습할 수 있다.
tshark나 openssl s_client로 들여다보고, SNI·인증서·ALPN이 평문으로 노출되는 부분을 직접 확인하라. (검열기가 SNI를 보고 차단할 수 있는 이유를 체감)검열 우회는 보안의 본질인 "공격-방어 비대칭"을 압축해 보여 준다. 탐지(DPI·능동 탐사·트래픽 통계)와 회피(암호화·위장·지문 위조)가 번갈아 진화하는 과정은 이상 탐지(anomaly detection)·트래픽 분류 같은 일반 네트워크 보안 주제와 그대로 연결된다. "왜 특이한 포트·이상한 패턴은 위험한가"가 핵심 교훈이다.
fqnews2는 "성능·프로토콜이 중요한 코어는 Go(sing-box)로, UI는 Kotlin으로" 분리하는 현대 모바일 네트워크 앱의 정석을 보여 준다. gomobile로 Go를 .aar로 빌드해 안드로이드에 임베드하는 구조는, 우회 도구가 아니어도 "크로스플랫폼 네트워크 코어 공유"가 필요한 모든 앱(미디어·P2P·동기화 등)에 일반화된다.
gomobile bind로 안드로이드 .aar로 빌드해 Kotlin에서 호출해 보라. "네이티브 코어 + 플랫폼 UI" 분리의 빌드 흐름을 손으로 익히는 게 목적.학습·자가 호스팅에 필요한 것 — 그리고 가장 중요한 "준법".
| 항목 | 요구사항 (합법적 학습·자가 호스팅 기준) |
|---|---|
| 클라이언트 학습 | 일반 PC/스마트폰. 튜토리얼은 대부분 무료 도구. |
| 서버 자가 호스팅 | 본인 소유/임대 VPS 1대, 도메인 1개, 기본 리눅스(SSH) 지식. |
| 서버 SW | Nginx · TLS 인증서(Let's Encrypt) · 프록시 코어(V2Ray/sing-box) · (선택) BBR 커널. |
| 앱 빌드(fqnews2) | Android Studio · JDK · Go 1.20+ · gomobile(코어 .aar 빌드 시). |
| 법적 적합성(필수) | 거주·이용 관할지 법률을 반드시 확인. 일부 국가에서 우회 도구 사용·운영은 불법일 수 있다. |
이 자료는 검열 우회 프로토콜과 네트워크·암호화의 작동 원리를 이해하기 위한 기술·교육 해설이다. 인터넷 검열·우회 도구에 대한 법적 취급은 국가마다 크게 다르며, 어떤 곳에서는 합법적인 프라이버시 도구가 다른 곳에서는 사용·배포·서버 운영 자체가 처벌 대상일 수 있다. 실제 사용 전 반드시 본인이 있는 관할지의 현행 법률을 확인할 책임이 사용자에게 있다.
이 문서의 모든 실습은 ① 본인이 소유·임대한 서버·기기에 대해서만, ② 합법적인 학습·연구·자기 트래픽 보호 목적으로만 수행하도록 설계되었다. 타인의 시스템을 점검·우회하거나, 적용 법규를 위반하는 어떤 행위도 권장하지 않으며, 그에 따른 책임은 전적으로 행위자에게 있다.
또한 저장소가 안내하는 "무료 계정/노드"·외부 다운로드 링크는 출처·안전성이 보장되지 않는다 — 학습 목적이라면 신뢰할 수 없는 제3자 노드에 민감한 트래픽을 흘리지 말고, 본인이 통제하는 서버로 실습하는 것이 안전·교육 양면에서 바람직하다. 프록시 노드 운영자는 원리상 통과 트래픽을 관찰할 수 있다는 점도 기억할 것.
난이도별 5단계 — 모두 본인 소유 서버 / 합법적 학습 범위로만.
레포의 튜토리얼들을 읽고 Shadowsocks · V2Ray(VMess/VLESS) · Trojan · Hysteria를 "전송 계층 · 위장 방식 · 등장 동기 · 약점" 4열 표로 직접 정리한다. 코드 없이 "왜 이렇게 진화했나"의 흐름을 머릿속에 지도화하는 것이 목적.
본인이 평소 접속하는 임의의 HTTPS 사이트에 openssl s_client -connect 사이트:443로 연결해 인증서·SNI·프로토콜 버전을 관찰하고, tshark/Wireshark로 ClientHello의 SNI가 평문으로 보이는지 확인한다. "검열기가 무엇을 볼 수 있나"를 체감하는 단계.
본인이 접속 권한을 가진 서버에 ssh -D 1080 사용자@내서버로 SOCKS5 프록시를 띄우고, 브라우저만 그 프록시를 쓰게 설정해 본다. "터널 = 클라이언트의 로컬 프록시 + 원격 출구"라는 우회의 최소 골격을 가장 단순한 형태로 손에 익히는 과제. (외부 차단 우회가 아니라 프록시 메커니즘 학습이 목적)
본인 명의 VPS·도메인으로 Let's Encrypt 인증서를 발급받아 Nginx를 443에 띄우고, v2ss/server-cfg/nginx.conf를 참고해 "경로별 분기(일반 경로=정상 페이지)" 구조를 구성한다. 여기까지는 평범한 HTTPS 웹서버 운영 실습으로, 위장 구성의 토대인 "한 포트에서 정상 사이트처럼 보이게"를 직접 만들어 본다.
fqnews2/libcore/go.mod의 의존성을 따라 sing-box·sing-tun 소스를 읽고, box.go·dns_box.go가 "여러 프로토콜을 한 엔진에서 어떻게 라우팅·DNS 처리하는가"를 분석한다. 가능하면 작은 Go 함수를 gomobile bind로 .aar 빌드해 "네이티브 코어 임베드" 흐름을 재현한다. (실 트래픽 우회가 아니라 아키텍처 학습이 목적)
6주 코스 — 네트워크 기초부터 우회 프로토콜 설계까지.
| 주차 | 주제 | 실습 · 참고 |
|---|---|---|
| 1주차 | 네트워크 기초 — TCP/IP·DNS·포트·SOCKS5/HTTP 프록시 | SSH 동적 포워딩(과제 3) · 프록시 vs VPN 개념 정리 |
| 2주차 | TLS 깊이 — 핸드셰이크·SNI·ALPN·인증서 체인 | openssl s_client · tshark로 ClientHello 분석(과제 2) |
| 3주차 | 리눅스 서버 운영 — VPS·SSH·Nginx·Let's Encrypt | 본인 VPS에 HTTPS 웹서버 구축(과제 4 전반) |
| 4주차 | 우회 프로토콜 비교 — SS·VMess/VLESS·Trojan·Hysteria | 레포 v2ss/ 튜토리얼 정독 · 프로토콜 비교표(과제 1) |
| 5주차 | 위장과 탐지 — DPI·능동 탐사·트래픽 통계·CDN 프론팅 | TLS+WS+Nginx+CDN 구성 원리 · 트래픽 패턴 비교 정리 |
| 6주차 | 현대 클라이언트 아키텍처 — sing-box·TUN·gomobile | fqnews2/libcore 코드 리딩 · 네이티브 코어 임베드(과제 5) |
본문에 나온 용어 빠른 참조.
| 용어 | 의미 |
|---|---|
| 翻墙 (fanqiang) | "방화벽 넘기" — 네트워크 검열을 우회한다는 중국어 표현. 레포 이름. |
| GFW | Great Firewall. 국가 단위 네트워크 검열 시스템의 통칭. |
| 검열 우회 (circumvention) | 트래픽을 암호화·위장해 필터를 통과시키는 기술 분야. |
| 프록시 / VPN / TUN | 앱 단위 중계 / OS 전체 가상망 / 모든 트래픽을 잡는 가상 인터페이스. |
| Shadowsocks (SS) | 1세대 암호화 SOCKS5 프록시. 가볍지만 트래픽 특징이 식별 가능. |
| V2Ray (VMess/VLESS) | 모듈식 전송 계층을 가진 2세대 플랫폼. TLS·CDN으로 위장. |
| Trojan | 정상 HTTPS 서버로 위장해 능동 탐사를 무력화하는 프로토콜. |
| Hysteria / QUIC | UDP 기반 고속 전송으로 고손실 회선에 강한 3세대 프로토콜. |
| NaiveProxy | 브라우저와 동일한 TLS 지문으로 식별을 어렵게 하는 도구. |
| DPI | Deep Packet Inspection. 패킷 내용·패턴을 분석해 프로토콜 식별. |
| 능동 탐사 (active probing) | 검열기가 의심 서버에 직접 연결을 시도해 프록시 여부를 떠보는 기법. |
| TLS / SNI | HTTPS 암호화 규격 / 접속하려는 도메인 이름(핸드셰이크 중 평문 노출 가능). |
| CDN 프론팅 | 도메인을 CDN(Cloudflare) 뒤에 숨겨 원 서버 IP 노출·차단을 회피. |
| BBR | 구글의 리눅스 혼잡 제어 알고리즘. 손실 많은 회선의 처리량 향상. |
| sing-box | 여러 우회 프로토콜을 통합한 범용 Go 프록시 코어(현대 클라이언트의 심장). |
| gomobile | Go 코드를 안드로이드(.aar)·iOS(.framework) 라이브러리로 빌드하는 도구. |
| 旁路由 (경유 라우터) | 한 기기(PC/Mac)를 게이트웨이로 삼아 다른 기기(게임기 등)의 트래픽을 경유. |