클라우드
오라클 분류

중국 황금방패 우회를 위한 VMess+TLS+Websocket+CDN VPN 구축하기

컨텐츠 정보

  • 18,866 조회
  • 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 기준으로 설명드립니다.


9d6d158cf29d5db31ec417d76cbc20f1_1606319809_3933.png

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


9d6d158cf29d5db31ec417d76cbc20f1_1606320235_2494.png
 

위와 같이 넣어주면 됩니다.


8. 참조 사이트


https://medium.com/@coorpee/docker-v2ray-caddy-3e484d6c84bc

관련자료

  • 서명
    우성짱의 NAS를 운영하고 있습니다.

    저의 즐거움이 여러분의 즐거움이면 좋겠습니다.

댓글 70 / 7 페이지

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.

우성짱님의 댓글의 댓글

docker-compose down

위 명령어로 전부 종료 해보시구요.

혹시 다른 곳에서 같은 포트를 쓰는게 아닌가 싶네요.

다른 곳도 전부 종료 후에 해보세요.

아니며

이상하네요

https://bytefreaks.net/applications/docker-warning-host-is-already-in-use-by-another-container

요거를 해보시고, https://github.com/mailcow/mailcow-dockerized/issues/3395

요기도 참조해보세요.

cjk님의 댓글

안녕하세요.
vpn의 개념을 찾아보다가 여기까지 오게 되었습니다.
이 글이 중국 > 다른 국가로의 인터넷 접속을 하기위해 우회하는 방법으로 이해했는데 맞는지요?
그러면 반대로 한국 에서  중국의 인터넷 사이트들을 좀더 자유롭게 이용하기 위해서
한국 > 중국 사이트 접속시 마치 중국에서 접속하는것 같은 효과를 내는 vpn 구축도 가능한지 궁금합니다.
가능하다면 혹시 이 글처럼 풀어주실 수 있으실는지요?

우성짱님의 댓글의 댓글

중국에 있는 사람이 유튜브 등 막혀있는 사이트를 보기 위함이 맞습니다.

다만 한국에 있는 사람이 중국에서 접속하는 방법은 중국 서버에 VPN을 설치해서 접속하는 방법이 있겠죠.

방법은 그냥 중국IP가 할당된 서버에 위와 같은 방법으로 설치해주시면 됩니다.

로컬님의 댓글

호스트 서버의 로컬 ( ex 192.168.0.2 ) 등에 접속이 되나요? Ip는 제대로 가져오는거 같은데..

로컬님의 댓글의 댓글

모바일에서는 정상적으로 로컬 네트워크에 접속이 됩니다 . 다만 pc에서는 안되네요

행복하게님의 댓글

오라클 WireGuard vpn 에서 나스(시놀로지) 클라이언트로 사용못하나요? 
오라클 vpn은 구축했는데  나스도커에서  클라이언트로 WireGuard 올렸는데  웹페이지가 안뜹니다  vpn 이 작동되는지도 모르겠네요

행복하게님의 댓글

아님  나스에서 클라이언트말고  WireGuard  qr로 쓸방법없나요?  pc 모바일은 다되는데 나스는 ? 리눅스를 워낙 잘몰라서요
전체 7 / 1 페이지
RSS

최근글


새댓글


알림 0