Outline 클라이언트 v1.15.0+
이 튜토리얼에서는 일반 Shadowsocks 연결이 차단되는 환경에서 검열을 우회하는 강력한 기법인 Shadowsocks-over-WebSockets를 구현하는 방법을 자세히 안내합니다. WebSockets 내에 Shadowsocks 트래픽을 캡슐화하여 이를 표준 웹 트래픽으로 위장할 수 있으므로 복원력과 접근성이 향상됩니다.
1단계: Outline 서버 구성 및 실행
다음 구성을 사용하여 새 config.yaml
파일을 만듭니다.
web:
servers:
- id: server1
listen:
- "127.0.0.1:WEB_SERVER_PORT"
services:
- listeners:
- type: websocket-stream
web_server: server1
path: "/TCP_PATH"
- type: websocket-packet
web_server: server1
path: "/UDP_PATH"
keys:
- id: 1
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
최신 outline-ss-server
를 다운로드하고 생성된 구성을 사용하여 실행합니다.
outline-ss-server -config=config.yaml
2단계: 웹 서버 노출
WebSocket 웹 서버를 공개적으로 액세스할 수 있도록 하려면 인터넷에 공개하고 TLS를 구성해야 합니다. 여러 방법으로 이 작업을 할 수 있습니다. Caddy, nginx 또는 Apache와 같은 로컬 웹 서버를 사용하여 유효한 TLS 인증서가 있는지 확인하거나 Cloudflare Tunnel 또는 ngrok와 같은 터널링 서비스를 사용할 수 있습니다.
TryCloudflare 사용 예
이 예에서는 TryCloudflare를 사용하여 빠른 터널을 만드는 방법을 보여줍니다. 이를 통해 인바운드 포트를 열지 않고도 로컬 웹 서버를 편리하고 안전하게 노출할 수 있습니다.
cloudflared
를 다운로드하고 설치합니다.로컬 웹 서버 포트를 가리키는 터널을 만듭니다.
cloudflared tunnel --url http://127.0.0.1:WEB_SERVER_PORT
Cloudflare는 WebSocket 엔드포인트에 액세스하고
TLS를 자동으로 처리할 하위 도메인(예:acids-iceland-davidson-lb.trycloudflare.com
)을 제공합니다. 이 하위 도메인은 나중에 필요하므로 적어 두세요.
3단계: 동적 액세스 키 만들기
액세스 키 구성 형식을 사용하여 사용자의 클라이언트 액세스 키 YAML 파일을 생성하고 이전에 서버 측에서 구성한 WebSocket 엔드포인트를 포함합니다.
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN/TCP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN/UDP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
동적 액세스 키 YAML 파일을 생성한 후에는 사용자에게 제공해야 합니다. 정적 웹 호스팅 서비스에서 파일을 호스팅하거나 동적으로 생성할 수 있습니다. 동적 액세스 키 사용 방법을 자세히 알아보세요.
4단계: Outline 클라이언트에 연결
공식 Outline 클라이언트 애플리케이션(버전 1.15.0+) 중 하나를 사용하고 새로 생성된 동적 액세스 키를 서버 항목으로 추가합니다. Shadowsocks-over-Websocket 구성을 사용하여 서버로의 터널링을 시작하려면 연결을 클릭합니다.
IPInfo와 같은 도구를 사용하여 현재 Outline 서버를 통해 인터넷을 탐색하고 있는지 확인합니다.