안드로이드 VPN 클라이언트에서 로컬 SOCKS 프록시 숨기기: 탐지 우회
인기 있는 안드로이드 VLESS 클라이언트들은 고정 포트에 로컬 SOCKS 프록시를 열어두어 앱들이 VPN을 감지하고 서버의 외부 IP를 노출시킵니다. RKNHardering 같은 도구로 테스트해보면 확인할 수 있죠—분할 터널링 모드에서도 TUN 인터페이스, 시스템 라우트, 패킷 목록, 접근 가능한 프록시가 모두 노출됩니다. 해결책? 다른 앱이 접근할 수 없는 동적 랜덤 포트와 SOCKS5 인증을 생성하세요.
탐지 원리와 대응 방법
앱들은 localhost에서 열린 SOCKS 포트를 스캔합니다. 표준 클라이언트(v2RayTun, v2rayNG, Hiddify)는 이를 숨기지 않아 유출이 발생하죠. 대처법은 다음과 같습니다:
- 실행할 때마다 랜덤 포트(예: 45478) 생성.
- 고유 자격 증명 자동 생성(예: upu6CHvvV:ZJC3GMDXKOLFdPKAfxBxrHiU).
- tun2socks를 통해 내부 전용으로 프록시 실행.
이렇게 하면 스캔을 차단합니다: 자격 증명 없이 연결 불가하고 실제 IP도 노출되지 않죠.
Xray와 tun2socks를 활용한 기술적 설정
Xray-core는 VLESS/VMess를 위한 크로스플랫폼 바이너리를 제공합니다. 완전한 TUN 지원을 위해 Xray의 기본 터널링 대신 tun2socks(linux-arm64 정적 빌드)를 사용합니다. 설정 과정:
- 랜덤 포트에 SOCKS5로 Xray 실행.
- tun2socks가 TUN 파일 디스크립터의 트래픽을 프록시로 라우팅.
- Flutter + Kotlin + C++ 래퍼로 프로세스 관리.
안드로이드 10+ 제한(W^X 위반) 우회를 위해 바이너리를 *lib/.so 파일**로 패키징합니다.
실제 실행 로그 예시:
[2026-04-12T09:44:46.641632] [INFO] Starting VPN
[2026-04-12T09:44:46.641818] [INFO] Underlying network set: 176
[2026-04-12T09:44:46.641946] [INFO] nativeSetMaxFds result (parent): 0
[2026-04-12T09:44:46.643867] [INFO] TUN established, dup fd=142
[2026-04-12T09:44:46.644004] [INFO] xray started
[2026-04-12T09:44:46.644130] [INFO] Starting tun2socks (native): /data/app/~~_xfukaXUtA4X7kd1BmB4UA==/com.teapodstream.teapodstream-zTL0GGuDWxPk8XDn0VkAiw==/lib/arm64/libtun2socks.so -device fd://142 -proxy socks5://upu6CHvvV:[email protected]:45478 -mtu 1500 -loglevel error -tcp-sndbuf 524288 -tcp-rcvbuf 524288 -tcp-auto-tuning
[2026-04-12T09:44:46.644247] [INFO] tun2socks started (pid=28880)
[2026-04-12T09:44:46.644399] [INFO] VPN connected
tun2socks 파라미터: MTU 1500, TCP 버퍼 524288바이트, 자동 튜닝 활성화. 프로세스가 tun2socks PID를 추적해 깔끔한 종료를 보장합니다.
클라이언트 주요 기능
TeapodStream 구현은 핵심 사용 사례를 커버합니다:
- 프로토콜: VLESS, VMess, Trojan, Shadowsocks.
- 분할 터널링: VPN 제외 앱 설정.
- URL 구독 및 자동 구성 업데이트.
- 동적 프록시 인증.
원본 VLESS 취약점 기사와 RKNHardering 탐지 도구 테스트에서 SOCKS나 IP 유출이 전혀 없습니다.
핵심 요약
- 랜덤 포트와 자격 증명으로 로컬 SOCKS 마스킹—localhost 스캔의 비밀 무기.
- tun2socks + Xray로 안정적인 TUN 구현, 기본 터널링 골치거리 없음.
- .so 파일 패키징으로 안드로이드 SELinux 우회.
- 분할 터널링은 TUN, 라우트 등의 다른 흔적을 숨기지 않음.
- 오픈소스 코드로 모든 내용 직접 확인 가능.
— Editorial Team
아직 댓글이 없습니다.