클라우드
오라클 분류

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

컨텐츠 정보

  • 14,097 조회
  • 62 댓글
  • 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를 운영하고 있습니다.

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

댓글 62 / 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

요기도 참조해보세요.
전체 7 / 1 페이지
RSS
알림 0