중국 황금방패 우회를 위한 VMess+TLS+Websocket+CDN VPN 구축하기
컨텐츠 정보
- 18,865 조회
- 70 댓글
- 1 추천
- 목록
본문
기존에 올려드렸던 중국 VPN 3대장 구축하는 방법( https://www.wsgvet.com/ubuntu/170 )은 황금방패가 IP만 차단하면 접속이 안되는 단점이 있습니다.
클라우드플레어를 이용하여 IP 차단을 예방하고, Caddy 웹서버를 설치하여 VPN이 아닌 실제 사이트처럼 속이는 방법을 알려드리겠습니다.
0. 중국 VPN 3대장 구축하기
https://www.wsgvet.com/ubuntu/170
위 링크에 있는 글과 유튜브를 보고 구축합니다.
1. 도메인과 오라클 클라우드 연결하기
우선 도메인(홈페이지 주소)이 필요하고, 해당 도메인이 오라클 클라우드 인스턴스의 IP를 가리키게 해야합니다.
오라클 클라우드 인스턴스와 도메인 연결하기 : https://www.wsgvet.com/cloud/12
위와 같이 도메인을 받고, 인스턴스의 공용IP를 도메인과 연결한 후 인스턴스의 SSH에서 작업하면 됩 니다.
2. Caddy 웹서버 설정하기
우선 파일과 폴더의 구조는
.
├── Caddyfile
├── config/
├── data/
├── docker-compose.yml
├── log/
│ ├── caddy/
│ └── v2ray/
└── config.json
위와 같이 될 것입니다.
mkdir -p config data log/caddy log/v2ray
우선 위와 같이 필요한 폴더를 생성합니다.
nano Caddyfile
위 명령어로 캐디 설정 파일을 작성합니다.
example.com
{
log {
output file /var/log/caddy/caddy.log
}
root * /usr/src
file_server
tls youremail@email.com
@websockets {
header Connection Upgrade
header Upgrade websocket
}
reverse_proxy @websockets v2ray://v2ray:51821
}
위 내용에서 수정할 부분이 2군데입니다.
example.com을 발급 받은 도메인 주소로 바꾸는 것입니다. VMess 접속에 필요합니다.
youremail@email.com를 자신의 이메일 주소로 변경하는 것입니다. SSL 인증서 발급에 필요합니다.
수정이 끝나면 컨트롤 + O, 엔터, 컨트롤 + X로 저장 후 닫기를 해줍니다.
3. v2ray 설정 수정하기
nano ./v2ray/config.json
위 명령어로 v2ray의 설정을 변경합니다.
{
"log": {
"loglevel": "warning",
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log"
},
"inbounds": [
{
"port": 51821,
"protocol": "vmess",
"settings": {
"clients": [{
"id": "생성된 UUID 붙여넣으면 됩니다",
"level": 0,
"alterId": 100
}]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/"
}
}
},
{
"port":51822,
"protocol":"shadowsocks",
"settings":{
"method":"aes-128-gcm",
"password":"shadowsocks용 비밀번호"
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
{
"protocol":"blackhole",
"settings":{},
"tag":"blocked"
}
],
"routing":{
"rules":[{
"type":"field",
"ip":["geoip:private"],
"outboundTag":"blocked"
}]
}
}
위와 같은 형식으로 변경해줍니다. UUID 부분은 새로 생성해도 되고, 기존 것을 재사용해도 됩니다.
컨트롤 + K를 입력하면 한줄씩 지워집니다. 모두 삭제 후 붙여넣기 하면 편합니다.
수정이 끝나면 컨트롤 + O, 엔터, 컨트롤 + X로 저장 후 닫기를 해줍니다.
4. 우회 사이트 파일 다운 받기
sudo apt install unzip
위 명령어로 unzip 패키지를 설치합니다.
mkdir www
위 명령어로 우회 사이트 파일이 들어갈 폴더를 생성합니다.
wget -O ./www/web.zip --no-check-certificate https://html5up.net/massively/download
위 명령어로 파일을 다운받습니다.
unzip -o -d ./www ./www/web.zip && rm -f ./www/web.zip
위 명령어로 압축파일을 풀고, 압축 파일을 삭제합니다.
5. docker-compose.yml 파일 수정하기
Caddy 웹서버 추가 및 포트 번호 수정이 필요합니다.
nano docker-compose.yml
위 명령어로 도커 설정 수정에 들어갑니다.
version: "3"
services:
wireguard:
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Asis/Seoul
- SERVERPORT=51820 #optional
- PEERS=1 #optional
- PEERDNS=auto #optional
volumes:
- ./appdata/config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
v2ray:
image: v2fly/v2fly-core
container_name: v2ray
volumes:
- ./v2ray:/etc/v2ray
- ./log/v2ray:/var/log/v2ray
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- V2RAY_VMESS_AEAD_FORCED=false
ports:
- 51822:51822
caddy:
image: caddy
container_name: caddy
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./data:/data
- ./log/caddy:/var/log/caddy
- ./config:/config
- ./www:/usr/src
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "80:80"
- "443:443"
위와 같이 수정합니다.
기존에 있던 내용을 컨트롤 + K로 모두 삭제하고 붙여넣기 하면 됩니다.
수정이 끝나면 컨트롤 + O, 엔터, 컨트롤 + X로 저장 후 닫기를 해줍니다.
참고로 와이어가드와 v2ray의 shadowsocks 51822포트는 그대로 사용할 수 있습니다.
다만 vmess의 포트가 443으로 변경된 것입니다.
방화벽은 당연히 80,443이 열려있어야겠죠? 제 가이드에 따라 오셨다면 열려있을 것입니다.
https://www.wsgvet.com/cloud/4
방화벽 관련은 위 링크를 참조하세요.
6. 도커 실행하기
docker-compose up -d
위 명령어로 시작해줍니다.
7. 접속 방법
Netch 기준으로 설명드립니다.

위와 같이 Server 클릭 후 Add VMess Server를 클릭해줍니다.

위와 같이 넣어주면 됩니다.
8. 참조 사이트
-
등록일 2021.02.23
-
등록일 2020.11.26
-
등록일 2020.11.17오라클 클라우드 인스턴스와 도메인 연결하기댓글 18
-
등록일 2020.11.14
관련자료
-
서명우성짱의 NAS를 운영하고 있습니다.
저의 즐거움이 여러분의 즐거움이면 좋겠습니다.
KU21800019님의 댓글
말씀주신대로
https://velog.io/@ansfls/docker-The-container-name-is-already-in-use-에러-처리-방법
여기서 설명하는 방법대로 컨테이너를 날리고 진행을 했는데 이번엔 아래와 같은 오류가 나네요 ㅠㅠ
혹시 도움받을 수 있을까요?
Starting wireguard ...
Starting caddy ...
Starting caddy ... error
WARNING: Host is already in use by another container
ERROR: for caddy Cannot start service caddy: driver failed programming external connectivity on endpoint caddy (c2b83d99276faf8f69a12ec9884fc841f50771ac67bfe20279de82fe63de0aaa): (iptableStarting wireguard ... error
(exit status 1))
WARNING: Host is already in use by another container
ERROR: for wireguard Cannot start service wireguard: driver failed programming external connectivity on endpoint wireguard (7738b7ed7f04dc9b82d282be07f5223d0f402a14cdd1bf31a4e41e89929f9180): (iptables failed: iptables --wait -t filter -A DOCKER ! -i br-3f6a5a5a6e32 -o br-3f6a5a5a6e32 -p udp -d 172.18.0.3 --dport 51820 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1))
Starting v2ray ... error
ERROR: for v2ray Cannot start service v2ray: driver failed programming external connectivity on endpoint v2ray (8c03fa030df57f8e4435815ceb0b97f761c9f9ca0868cd3c6c6365e3d6e188a1): (iptables failed: iptables --wait -t filter -A DOCKER ! -i br-3f6a5a5a6e32 -o br-3f6a5a5a6e32 -p tcp -d 172.18.0.4 --dport 51822 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1))
ERROR: for caddy Cannot start service caddy: driver failed programming external connectivity on endpoint caddy (c2b83d99276faf8f69a12ec9884fc841f50771ac67bfe20279de82fe63de0aaa): (iptables failed: iptables --wait -t filter -A DOCKER ! -i br-3f6a5a5a6e32 -o br-3f6a5a5a6e32 -p tcp -d 172.18.0.2 --dport 443 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1))
ERROR: for wireguard Cannot start service wireguard: driver failed programming external connectivity on endpoint wireguard (7738b7ed7f04dc9b82d282be07f5223d0f402a14cdd1bf31a4e41e89929f9180): (iptables failed: iptables --wait -t filter -A DOCKER ! -i br-3f6a5a5a6e32 -o br-3f6a5a5a6e32 -p udp -d 172.18.0.3 --dport 51820 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1))
ERROR: for v2ray Cannot start service v2ray: driver failed programming external connectivity on endpoint v2ray (8c03fa030df57f8e4435815ceb0b97f761c9f9ca0868cd3c6c6365e3d6e188a1): (iptables failed: iptables --wait -t filter -A DOCKER ! -i br-3f6a5a5a6e32 -o br-3f6a5a5a6e32 -p tcp -d 172.18.0.4 --dport 51822 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1))
ERROR: Encountered errors while bringing up the project.
우성짱님의 댓글의 댓글
위 명령어로 전부 종료 해보시구요.
혹시 다른 곳에서 같은 포트를 쓰는게 아닌가 싶네요.
다른 곳도 전부 종료 후에 해보세요.
아니며
이상하네요
https://bytefreaks.net/applications/docker-warning-host-is-already-in-use-by-another-container
요거를 해보시고, https://github.com/mailcow/mailcow-dockerized/issues/3395
요기도 참조해보세요.