우분투 서버
설치 분류

중국 황금방패 뚫는 VPN 3대장 직접 설치하기

컨텐츠 정보

  • 134,135 조회
  • 215 댓글
  • 0 추천
  • 목록

본문



중국에서 해외 사이트에 접속할 때 황금방패로 막혀있는 경우가 많습니다.


보통 유료로 VPN에 가입해서 사용하거나, 무료 VPN 서비스를 사용할텐데요.


아시다시피 이런 서비스들은 해당 업체에서 감시할 수도 있고, 접속로그들을 저장할 수도 있습니다.


그래서 VPN 서비스를 직접 클라우드 서비스에 올려서 자신만의 VPN 서비스를 구축해서 사용하면 걱정이 없겠죠?



여기서 말씀드릴 3대장은 v2ray의 shadowshocks와 vmess, 구글의 Outline, 마지막으로 Wireguard입니다.


현재 3가지 모두 중국에서 많이 쓰이며 황금방패를 우회하는데 탁월하다고 알려져있습니다.



오라클 클라우드에서는 무료로 10TB/월 트래픽을 지원해주고 있습니다.


VPN 서버를 구축하는데 최고의 선택입니다.


국내는 물론 오라클 클라우드가 지원하는 모든 지역에서 구축 가능합니다.


오라클 클라우드 무료 가입 (해외결제 가능한 신용카드 또는 체크카드 인증 필수) : https://www.oracle.com/kr/cloud/free/



유료 서비스로는 


AWS 라이트세일 $3.5/월 결제하면 1TB 트래픽을 주니 쓸만합니다.



그리고 요새는 Docker를 이용해서 완전 초보자들도 쉽게 설정 가능합니다.


추천드릴 운영체제로는 Ubuntu 20.04 LTS입니다.


CentOS 8에서는 특정 커널에서 Wireguard 도커 설치가 불안정하여 추천하지 않습니다.



오라클 클라우드 iptables 방화벽 초기화화기


오라클 클라우드의 경우 iptables가 강력하게 깔려있습니다.


그래서 Outline의 경우 다 열어주지 않으면 안되더라구요. 그래서 날리는 방향으로 진행하는게 좋다고 생각합니다.


어짜피 오라클 클라우드 웹 패널에서 관리가 가능하니깐 문제없습니다.



sudo iptables -F && sudo iptables -X && sudo netfilter-persistent save && sudo netfilter-persistent reload


위 내용을 한번에 넣어주면 완벽합니다.



도커 설치하기


우선 Docker와 docker compose를 설치해야 합니다.



sudo apt update -y && sudo apt install nano curl -y 


위 내용을 복사 후 붙여넣기 후 실행하면 필요한 패키지가 우선적으로 깔립니다.


Putty에서 붙여넣는 방법은 마우스 우클릭 한번 해주면 자동으로 붙습니다.



그리고 도커와 도커 컴포즈는 도커 공식 홈페이지 방식대로 설치하면 자동으로 다 깔립니다.


https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository


위 링크에서 1. Set up Docker's apt repository. 와 2.Install the Docker packages. 를 따라서 설치하세요.




도커 권한 설정


root 계정의 경우 권한 설정을 할 필요가 없지만 일반 계정이라면 docker를 바로 실행할 수 있게 권한을 주는 것이 좋습니다.



sudo usermod -aG docker $USER


위 명령어로 일반 계정이 docker 명령어를 sudo 없이 바로 실행할 수 있게 해줍니다.


SSH 창을 끄고 다시 접속하면, sudo 없이 바로 docker나 docker compose 명령어를 쓸 수 있습니다.



docker-compose 파일 생성하기



cd


우선 위와 같이 현재 유저의 home 폴더로 갑니다.



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: teddysun/v2ray
    container_name: v2ray
    volumes:
      - ./v2ray:/etc/v2ray
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - V2RAY_VMESS_AEAD_FORCED=false
    ports:
      - 51821:51821
      - 51822:51822


위 내용을 넣습니다. 수정할 수 있는 부분은 ports에 있는 51821,51822 부분입니다.


-------------------------------------------

* 2023년 11월 29일 이미지 소스를 바꾸었습니다.


기존 image: v2fly/v2fly-core

변경 image: teddysun/v2ray

-------------------------------------------


일단은 수정하지않고 위와 같이 진행해봅니다.


나중에 방화벽도 열어줘야되니깐요.


컨트롤 + O, 엔터, 컨트롤 + X를 누르면 저장 후 닫기가 됩니다.


Putty 상에서 저장 후 닫기는 위 명령어를 뜻하는 것입니다.


UUID 먼저 생성합니다.



cat /proc/sys/kernel/random/uuid


위 명령어를 내리면



$ cat /proc/sys/kernel/random/uuid
ee615b4a-67d4-40af-95b0-eda861814f33


위와 같이 생성되는 것을 메모장에 복사해둡니다.


반드시 자신만의 UUID를 만들어야 합니다. 접속하는데 ID 비번과 같은 역할을 합니다.



mkdir v2ray


위 명령어를 내리면 폴더를 생성하고



nano ./v2ray/config.json


위 명령어로 v2ray 설정파일 생성으로 들어갑니다.



{
"log" : {
    "access": "/etc/v2ray/access.log",
    "error": "/etc/v2ray/error.log",
    "loglevel": "warning"
    },
"inbounds": [
    {
    "port": 51821,
    "protocol": "vmess",
    "settings": {
        "clients": [
            {
        "id": "생성된 UUID 붙여넣으면 됩니다",
        "level": 0,
        "alterId": 100
            }
        ]
        }
    },
    {
    "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"
    }]
    }
}


위 내용을 넣고, 2가지를 바꿔주면 됩니다.


메모장에 복사해둔 내용을 생성된 UUID 붙여넣으면 됩니다 대신에 넣으면 됩니다.



"id": "ee615b4a-67d4-40af-95b0-eda861814f33",


위와 같이 넣어주면 되겠죠? 


반드시 자신의 UUID를 넣어주세요. ID와 비번 역할을 동시에 합니다.


그리고 shadowsocks용 비밀번호 대신에 자신이 원하는 비밀번호를 넣어주면 됩니다.


수정 후 컨트롤 + O, 엔터, 컨트롤 + X를 누르면 저장 후 빠져나옵니다.



실행하기



docker compose up -d


위 명령어를 내리면 wireguardv2ray를 동시에 실행합니다.



~$ docker compose up -d
Creating network "sammy_default" with the default driver
Pulling wireguard (linuxserver/wireguard:)...
latest: Pulling from linuxserver/wireguard
a0648e14f3d7: Pull complete
8f32220516a1: Pull complete
272a6146d1eb: Pull complete
8f6670fd7afe: Pull complete
08940ef2634d: Pull complete
8909d7b7a74f: Pull complete
Digest: sha256:d28973a4fe4f873d1af8238c61b4120411449a4eff8c51913504a5771c051a5b
Status: Downloaded newer image for linuxserver/wireguard:latest
Pulling v2ray (v2fly/v2fly-core:)...
latest: Pulling from v2fly/v2fly-core
df20fa9351a1: Pull complete
326f265b50a0: Pull complete
a5ff762995cc: Pull complete
2c6b146db8e1: Pull complete
5f8017a3d958: Pull complete
Digest: sha256:d5f0f332564a791cda755a7ed52123d0fd37fd2b7843ec3d6d05b4474762bd9e
Status: Downloaded newer image for v2fly/v2fly-core:latest
Creating wireguard ... done
Creating v2ray     ... done


위와 같이 다운받고 실행되는 것을 볼 수 있습니다.



Outline 설치방법



위 명령어를 내리면 끝입니다.



~$ sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"
> Verifying that Docker is installed .......... OK
> Verifying that Docker daemon is running ..... OK
> Creating persistent state dir ............... OK
> Generating secret key ....................... OK
> Generating TLS certificate .................. OK
> Generating SHA-256 certificate fingerprint .. OK
> Writing config .............................. OK
> Starting Shadowbox .......................... OK
> Starting Watchtower ......................... OK
> Waiting for Outline server to be healthy .... OK
> Creating first user ......................... OK
> Adding API URL to config .................... OK
> Checking host firewall ...................... BLOCKED
OK


CONGRATULATIONS! Your Outline server is up and running.


To manage your Outline server, please copy the following line (including curly
brackets) into Step 2 of the Outline Manager interface:


{"apiUrl":"https://34.64.85.175:25228/5g4WxTQ8KGMHQgybOvTRbw","certSha256":"71F58631C4FDBCC8677A38EEA2D6A570B43859CE6B38FEE6E39699BCD7EE8A78"}


You won’t be able to access it externally, despite your server being correctly
set up, because there's a firewall (in this machine, your router or cloud
provider) that is preventing incoming connections to ports 25228 and 13776.


Make sure to open the following ports on your firewall, router or cloud provider:
- Management port 25228, for TCP
- Access key port 13776, for TCP and UDP


위와 같이 실행되는 것을 볼 수 있습니다.


여기서 중요한 것이 2가지가 있습니다. 우선



{"apiUrl":"https://34.64.85.175:25228/5g4WxTQ8KGMHQgybOvTRbw","certSha256":"71F58631C4FDBCC8677A38EEA2D6A570B43859CE6B38FEE6E39699BCD7EE8A78"}


위 내용입니다. 메모장에 복사해둡니다.



Wireguard와 v2ray는 사용자가 스스로 포트를 선택할 수 있는데요.


Outline의 경우 랜덤으로 주어지기 때문에 Outline을 설치한 후 방화벽을 설정해주는게 좋습니다.


그래서 Outline의 경우



- Management port 25228, for TCP
- Access key port 13776, for TCP and UDP


위와 같이 25228은 TCP만 열면되고, 13776은 TCP/UDP 모두 열어줘야 됩니다.


Outline의 포트는 설치 직후 알 수 있습니다. 랜덤이기 때문에 저와 같게 설정하면 안됩니다.


반드시 자신의 화면에 나온 포트를 열어줘야 됩니다.


앞선 설정에서 wireguard와 v2ray에서 51820의 UDP, 51821 TCP, 51822 TCP를 사용하기로 선택했기 때문에 해당 포트도 열어줘야 됩니다.



방화벽 열어주기


구글 클라우드의 Ubuntu 20.04 LTS는 방화벽이 깔려있지 않습니다. 


따라서 구글 클라우드 웹 패널에서만 방화벽을 열어주면 됩니다.



오라클 클라우드 Ubuntu 20.04 LTS의 iptables 방화벽은 제일 처음에 해제해줬으니 오라클 클라우드 방화벽 작업 방법으로 넘어가면 됩니다.


---


만약에 운영체제에서 ufw를 사용한다면 각각의 포트를 열어줄 수 있습니다.



sudo ufw allow 22/tcp
sudo ufw allow 13776/tcp
sudo ufw allow 13776/udp
sudo ufw allow 25228/tcp
sudo ufw allow 51820/udp
sudo ufw allow 51821/tcp
sudo ufw allow 51822/tcp


위와 같이 한줄씩 명령어를 넣으면 될 것입니다.


참고로 13776과 25228은 반드시 Outline 프로그램을 설치 후 나온 포트로 바꿔줘야 합니다.



CentOS처럼 firewall를 사용한다면 각각의 포트를 열어줄 수 있습니다.



sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=13776/tcp
sudo firewall-cmd --permanent --add-port=13776/udp
sudo firewall-cmd --permanent --add-port=25228/tcp
sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --permanent --add-port=51821/tcp
sudo firewall-cmd --permanent --add-port=51822/tcp
sudo firewall-cmd --reload


위와 같이 한줄씩 명령어를 넣으면 될 것입니다.


참고로 13776과 25228은 반드시 Outline 프로그램을 설치 후 나온 포트로 바꿔줘야 합니다.


그리고 각 클라우드 사업자의 방화벽 설정도 열어줘야 됩니다.



구글 클라우드 방화벽 작업 방법


a79b90336042072ef956ccee99daaaff_1601137812_0037.png


위와 같이 작업해주면 됩니다.



오라클 클라우드 방화벽 작업 방법


네트워킹 -> 가상 클라우드 네트워크 -> 선택 -> 보안 목록 -> Default Security List for xxxxxxxxx -> 수신 규칙 추가


a79b90336042072ef956ccee99daaaff_1601137833_3327.png

a79b90336042072ef956ccee99daaaff_1601137834_7204.png


위와 같이 TCP와 UDP를 각각 추가해주면 됩니다.



Wireguard 접속 방법


https://www.wireguard.com/install/ 


위 링크에서 윈도우, 맥, 안드로이드, iOS에 맞는 접속 프로그램을 받을 수 있습니다.



SSH에서



sudo cat appdata/config/peer1/peer1.conf


위 명령어로 wireguard의 접속 정보를 얻을 수 있습니다.



~$ sudo cat appdata/config/peer1/peer1.conf
[Interface]
Address = 10.13.13.2
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ListenPort = 51820
DNS = 10.13.13.1


[Peer]
PublicKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Endpoint = 134.164.185.75:51820
AllowedIPs = 0.0.0.0/0, ::/0


대략 위와 같이 나오는데요.


wireguard 어플 또는 프로그램에서 Interface와 Peer에 직접 입력하거나


해당 내용을 메모장에서 wiregurad.conf 파일로 만들어서 가져오는 방법도 있습니다.


폰의 경우 conf 파일 또는 QR코드로 가져오는 방법이 있습니다.


QR코드는



docker compose logs wireguard


위 명령어를 내리면 나올 것입니다. 그걸 wireguard 어플에서 QRcode를 찍으면 자동으로 어플에 입력됩니다.



PC에서 접속하는 방법


f7a2e1b5b614d9816ea128dc3323a843_1605360283_8494.png


위와 같이 Import tunnel from file 을 클릭한 후 conf 파일을 불러오면 됩니다.


f7a2e1b5b614d9816ea128dc3323a843_1605360283_8862.png 


위와 같이 Active를 클릭하면 접속됩니다.

 


휴대폰 어플로 접속하는 방법


f7a2e1b5b614d9816ea128dc3323a843_1605359690_9344.jpg


위와 같이 오른쪽 밑의 + 버튼을 클릭하면


f7a2e1b5b614d9816ea128dc3323a843_1605359694_0644.jpg


위와 같이 3가지 방식으로 정보를 입력할 수 있습니다.


1번 : conf 파일을 가져오는 방법

2번 : 휴대폰 카메라로 QR코드를 읽어서 가져오는 방법

3번 : 수동을 입력하는 방법입니다.


QR코드가 제일 간단하겠죠?


f7a2e1b5b614d9816ea128dc3323a843_1605359694_1037.jpg


위와 같이 오른쪽에 토클을 터치하면


f7a2e1b5b614d9816ea128dc3323a843_1605359694_1745.jpg


위와 같이 파란색으로 바뀌면서 바로 활성화됩니다.


 


v2ray 접속 방법


윈도우, 리눅스, MacOS : https://www.v2ray.com/ko/awesome/tools.html


윈도우 클라이언트 Netch : https://github.com/NetchX/Netch/releases


안드로이드 : https://www.v2ray.com/ko/ui_client/android.html


iOS : https://github.com/v2fly/v2ray-core/releases


현재 BifrostV 어플이 안된다고 합니다. v2rayNG 어플이 된다고 합니다.


예시로 안드로이드 BifrostV 접속 방법을 알려드리겠습니다.


f7a2e1b5b614d9816ea128dc3323a843_1605361248_3874.jpg 


어플 실행 후 위와 같이 오른쪽 위에 +문서 모양을 누른 후


f7a2e1b5b614d9816ea128dc3323a843_1605361248_4308.jpg
 

Manual Settings를 터치합니다.


f7a2e1b5b614d9816ea128dc3323a843_1605361248_3317.jpg 


위와 같이 아래쪽 모양의 단추를 터치하면 VMess와 Shadowsocks를 선택해서 추가할 수 있습니다.


1. VMess


Profile Name : 아무거나

Host : 서버의 IP 주소

Port : 51821

UserId : UUID 생성해서 붙여넣은 바로 그것

AlterID : 100

Security : auto

Level : 0


선택 후 오른쪽 위에 체크 표시를 누르면 저장됩니다.


2. Shadowsocks


Profile Name : 아무거나

Host : 서버의 IP 주소

Port : 51822

Password : shadowsocks용 비밀번호 대신 넣은 것

Encrypt Method : aes-128-gcm


선택 후 오른쪽 위에 체크 표시를 누르면 저장됩니다.


그 후 접속하고 싶은 것을 선택 후 오른쪽 밑에 빨간 아이콘을 터치하면 접속됩니다.



Outline 접속 방법


1. Outline Manager 설치하기


https://getoutline.org/ko/home


위 링크에 가서 가운데  쯤에 보면 "서버 생성 및 액세스 공유"가 있는데요.


윈도우, 리눅스, macOS별로 Outline Manager를 받을 수 있습니다.


프로그램을 설치한 후 열어보면 Outline을 설정할 클라우드 서비스를 선택하세요. 라고 나오는데요.


오른쪽 밑에 어디서든 Outline 설정을 누릅니다.


1 서버에 로그인하고 이 명령어를 실행하세요. < - 이미 실행했으므로 넘어갑니다.


2 여기에 설치 출력을 붙여넣으세요. < -  메모장에 저장해두었던 Outline apiUrl로 시작하는 내용을 붙여넣으면 됩니다. 그리고 완료를 누르면 서버가 추가됩니다.


a79b90336042072ef956ccee99daaaff_1601137925_0678.png
 


그리고 위와 같이 새 키 추가를 클릭 후 오른쪽에 공유아이콘을 누르면 액세스 공유가 뜨는데요.


스크롤을 내려보면 액세스 키 복사가 있습니다.


ss:// ~~ 로 시작하는 내용이 제일 중요합니다.


이 내용을 복사 후 폰으로 넘겨줍니다.



2. Outline 어플에서 연결하기


https://getoutline.org/ko/home


위 링크 제일 밑에 보면 "연결 시작"이 있습니다. 자신의 운영체제에 맞게 선택 후 OUTLINE 받기를 클릭하여 설치합니다.


ss:// 로 시작하는 내용을 복사 후 어플을 실행하면 자동으로 액세스 키가 감지됨이라고 뜨고 서버 추가를 할 수 있습니다. 연결을 누르면 바로 접속됩니다.


f7a2e1b5b614d9816ea128dc3323a843_1605361827_1814.jpg


위와 같이 서버 추가를 터치합니다.


f7a2e1b5b614d9816ea128dc3323a843_1605361827_2394.jpg


위와 같이 액세스 키를 붙여넣기 하면 됩니다.


f7a2e1b5b614d9816ea128dc3323a843_1605361827_3016.jpg


복사 후 어플에 접속하면 자동으로 인식하기도 합니다. 서버 추가를 터치합니다.


f7a2e1b5b614d9816ea128dc3323a843_1605361827_3607.jpg
 

서버가 추가되면 연결을 누르면 됩니다.



참고사이트


시놀로지에 v2ray 설치하는 방법 : https://www.clien.net/service/board/lecture/13580823


v2ray 도커 설치방법 : https://guide.v2fly.org/app/docker-deploy-v2ray.html


오라클 클라우드에 v2ray 설치하는 방법 : https://itreport.tistory.com/614


Wireguard 도커 이미지 : https://hub.docker.com/r/linuxserver/wireguard


Outline 홈페이지 : https://getoutline.org/

관련자료

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

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

댓글 215 / 22 페이지

도커님의 댓글

E: Package 'docker-ce' has no installation candidate
E: Unable to locate package docker-ce-cli
E: Unable to locate package containerd.io
E: Couldn't find any package by glob 'containerd.io'

도커 CE 에러입니다.
이후에 도커 명령어 실행시 도커가 없다고 나오는거같습니다.

ubuntu@instance-20240423-1044:~$ sudo usermod -aG docker $USER
usermod: group 'docker' does not exist

기존에 설치했는데 지금은 안되는 초보라서 질문 자주하게되네요 감사합니다..

우성짱님의 댓글의 댓글

https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

일단은 이 방법으로 도커를 설치해보세요.

뉴비님의 댓글

귀한 정보를 공유해주셔서 감사합니다. 덕분에 오라클 서버 잘 활용할 것 같습니다.
전체 34 / 1 페이지
RSS

최근글


새댓글


알림 0