VPS 프록시 설정 튜토리얼: 초보자를 위한 상세 가이드

@naiyue777
중국어2026년 6월 06일
224K
487
86
40
1.2K

TL;DR

본 튜토리얼은 VPS, Cloudflare, 그리고 Xray (VLESS+Vision)를 사용하여 개인용 프록시 서버를 설정하는 방법을 단계별로 안내하며, 안정적이고 안전한 인터넷 연결을 보장합니다.

안녕하세요, 저는 Nayue입니다. 최근에 VPS 설정에 대해 좀 알아봤어요. codex 선생님 덕분에 codex에게 하나하나 물어보면서 정말 다 해결할 수 있었고, 성공한 김에 글을 써서 여러분과 공유하고 싶었습니다.

도움이 되길 바라며, 혹시 잘못된 부분이 있으면 알려주세요~

1. 왜 도메인과 VPS가 필요한가

단순히 검열을 우회하는 것이 목적이라면, 기성 프록시를 사는 것이 가장 쉽습니다. 하지만 노드 구성, 프로토콜 선택, 인증서 관리, 클라이언트 구독 방식을 직접 제어하고 싶다면, 직접 VPS를 구축하는 것이 더 제어하기 쉽고 장기적으로 사용하기 좋습니다.

이 글의 목표는 여러분이 자신만의 프록시를 갖도록 돕는 것이지만, 제 튜토리얼이 가장 포괄적이거나 완벽하지는 않습니다. 더 많은 기능과 더 안전한 구성을 위해서는 더 많은 튜토리얼을 공부해야 합니다. 이 튜토리얼의 목적은 빠르게 시작할 수 있도록 하는 것입니다.

최종 결과는 다음과 같습니다: 여러분만의 도메인이 생깁니다. 예: node.example.com.

이 도메인은 여러분이 구매한 VPS를 가리킵니다. 프록시 서비스는 VPS에서 실행되고, 클라이언트는 이 도메인을 통해 VPS에 연결되며, VPS는 대상 웹사이트에 접속합니다.

전체 관계는 다음과 같이 이해할 수 있습니다:

text
1모바일 / 컴퓨터 클라이언트
2
3node.example.com
4
5VPS 퍼블릭 서버
6
7대상 웹사이트

여기에는 두 가지 핵심 요소가 있습니다: 도메인과 VPS입니다.

도메인의 역할은 안정적이고 읽기 쉬우며 인증서 서명이 가능한 진입점을 제공하는 것입니다. 이론적으로 VPS IP를 사용하여 직접 연결할 수도 있지만, 실제로는 권장되지 않습니다.

그 이유는 세 가지입니다:

첫째, 도메인은 마이그레이션이 쉽습니다. VPS IP가 변경되거나, 회선 품질이 저하되거나, 공급자를 변경하는 경우 도메인의 DNS 레코드만 새 IP로 변경하면 되며, 클라이언트는 동일한 도메인에 계속 연결됩니다.

둘째, 도메인을 사용하면 TLS 인증서를 쉽게 신청할 수 있습니다. 이 글에서는 TLS 방식을 사용하며, 클라이언트는 연결 시 인증서를 확인합니다. 도메인으로 인증서를 신청하는 것이 더 자연스럽고 일반 HTTPS 서비스 사용 방식에 가깝습니다.

셋째, 도메인은 이후 관리에 편리합니다. 예를 들어, 메인 노드의 이름을 다음과 같이 지정할 수 있습니다:

node.example.com

백업 노드:

node2.example.com

구독 서비스:

sub.example.com

이것이 IP 주소를 외우는 것보다 훨씬 명확합니다.

VPS의 역할은 퍼블릭 서버를 제공하는 것입니다. 공인 IP, 안정적인 네트워크, 충분한 트래픽이 필요하며, SSH를 통해 로그인하여 서비스를 설치할 수 있어야 합니다.

이 글에서는 Ubuntu 22.04 시스템을 사용합니다. 구성은 매우 높을 필요가 없으며, 개인 사용에는 보통 1C2G면 충분합니다. 실제로 집중해야 할 것은 데이터 센터 위치, 대역폭, 월간 트래픽입니다.

이 솔루션은 개인 학습 및 자가 사용에만 적합합니다. 낯선 사람과 노드를 공유하지 말고, 구독 링크, QR 코드, UUID 또는 서버 IP와 같은 민감한 정보를 공개 페이지에 게시하지 마십시오.

2. 준비: 도메인, VPS, Cloudflare 계정, SSH 도구

시작하기 전에 이번에 사용할 것들을 준비합니다. 이 부분은 복잡하지 않지만, 한 번에 정리해두는 것이 좋습니다. 나중에 문제가 생겨 왔다 갔다 하지 않도록 말이죠.

이번에 제가 실제로 사용한 조합은 다음과 같습니다:

text
1도메인 등록 기관: Porkbun
2DNS 관리: Cloudflare 무료 요금제
3VPS 지역: 홍콩
4VPS 시스템: Ubuntu 22.04
5VPS 사양: 1C2G / 100Mbps / 30G 디스크 / 월 300G 트래픽
6서버 스크립트: v2ray-agent
7프록시 코어: Xray-core
8최종 프로토콜: VLESS + TCP + TLS + Vision
9컴퓨터 클라이언트: Clash Verge
10모바일 클라이언트: Shadowrocket

어떤 분들은 "홍콩 VPS를 샀는데 AI는 어떻게 구독하나요?"라고 물을 수도 있습니다.

ㅎㅎ, 걱정 마세요. 이 VPS는 AI를 위한 것이 아닙니다. 목표가 해외 AI를 사용하는 것이라면, 해당하는 안정적인 VPS를 찾아 구매하세요. 제 VPS 제공업체를 그대로 따라 할 필요는 없습니다. X에는 많은 VPS 추천이 있습니다.

2.1 도메인

도메인은 Porkbun, Namecheap, Cloudflare Registrar와 같은 플랫폼에서 구매할 수 있습니다. 이번에는 Porkbun을 사용했으며, 연간 약 11달러로 적당한 가격입니다.

도메인을 구매할 때는 도메인 자체만 구매하면 되며, 추가 웹 호스팅 서비스는 필요하지 않습니다. 나중에 VPS에서 서비스를 직접 구성할 것이고, 인증서는 무료 Let's Encrypt를 사용하여 신청할 것입니다.

구매 시 다음 사항을 확인하는 것이 좋습니다:

text
1도메인 구매 성공
2Whois 프라이버시 보호 활성화
3자동 갱신 활성화
4계정 2FA 활성화
5추가 웹 호스팅 미구매
6추가 유료 SSL 미구매

다시 말씀드리지만, 도메인을 구매하는 것은 웹사이트를 만드는 것이 아니라 VPS에 안정적인 접근 경로를 제공하기 위함입니다.

예를 들어, 나중에 다음과 같은 서브도메인을 구성할 것입니다:

node.example.com

이것을 VPS의 공인 IP로 지정합니다. 클라이언트가 연결할 때 이 도메인에 접속하며, VPS IP를 직접 입력하지 않습니다.

naiyue777 - inline image

2.2 Cloudflare 계정

Cloudflare는 여기서 DNS 관리를 담당하며, 반드시 Cloudflare에서 도메인을 구매할 필요는 없습니다.

제 실제 방식은 다음과 같습니다:

text
1Porkbun에서 도메인 구매
2Cloudflare에서 DNS 관리

즉, Porkbun의 Nameservers를 Cloudflare에서 할당한 두 개의 Nameservers로 변경합니다. 그러면 모든 DNS 레코드는 앞으로 Cloudflare에서 구성됩니다.

이 단계는 나중에 자세히 설명하겠습니다. 지금은 Cloudflare 계정을 준비하고 무료 요금제를 선택하기만 하면 됩니다.

https://dash.cloudflare.com/https://dash.cloudflare.com/)를 엽니다.

등록/로그인 후:

text
1사이트 추가
2
3도메인 입력 (예: xxx.com), 루트 도메인 입력
4
5무료 요금제 선택
6
7Cloudflare가 기존 DNS 레코드 스캔
8
9계속

Cloudflare는 마지막에 두 개의 네임서버를 제공하며, 형식은 다음과 같습니다:

text
1xxxx.ns.cloudflare.com
2yyyy.ns.cloudflare.com
naiyue777 - inline image

2.3 VPS

VPS는 실제로 서비스를 실행하는 머신입니다. 공인 IPv4, SSH 접근이 필요하며, 80 및 443 포트를 사용할 수 있어야 합니다.

저는 Global Cloud에서 구매했습니다. https://my.locvps.net/idcSystem.aspxhttps://my.locvps.net/idcSystem.aspx)?

광고하는 것이 아닙니다. 요구 사항은 각자 다르므로 필요에 따라 다른 곳에서 필요한 VPS를 구매하시면 됩니다.

naiyue777 - inline image

2.4 SSH 로그인 도구

저는 Mac의 내장 터미널을 사용하여 VPS에 로그인합니다. macOS는 추가 SSH 도구가 필요하지 않습니다. 터미널만 열면 됩니다.

SSH 로그인 명령 형식은 다음과 같습니다:

text
1ssh root@<VPS_IP> -p <SSH_PORT>
2예시:
3ssh root@203.0.113.10 -p 43781

2.5 클라이언트 소프트웨어

서버 설정이 완료된 후, 컴퓨터나 휴대폰에 노드를 가져와야 합니다.

이번에 주로 사용한 두 가지 클라이언트는 다음과 같습니다:

text
1Mac: Clash Verge
2iPhone: Shadowrocket

Clash Verge는 구독 가져오기에 적합합니다. 나중에 v2ray-agent가 ClashMeta 형식의 구독을 생성하며, 이를 Clash Verge에 직접 추가할 수 있습니다.

Shadowrocket은 iPhone에서 단일 노드를 테스트하는 데 적합합니다. 구독에 특정 Shadowrocket 형식이 없더라도 설치 스크립트가 출력하는 vless:// 링크를 복사하여 수동으로 가져올 수 있습니다.

3. 도메인을 Cloudflare에 연결하기

도메인을 구매한 후 다음 단계는 DNS 관리를 Cloudflare에 넘기는 것입니다.

아까 그 두 개의 네임서버를 기억하시나요? 이제 그것들을 구성할 것입니다.

이 두 Nameservers의 역할은 전 세계 DNS 시스템에 다음을 알리는 것입니다:

이제부터 이 도메인의 DNS 레코드는 Cloudflare에서 관리됩니다.

즉, Porkbun은 여전히 도메인 등록 기관이지만 DNS 레코드는 Cloudflare 관리로 이전됩니다.

Porkbun을 예로 들어 수정 방법을 보여드리겠습니다. 다른 플랫폼에서 구매했다면 직접 수정 방법을 찾아보시기 바랍니다.

도메인 세부 정보로 들어가서 Nameservers 구성을 찾습니다.

원래 Porkbun Nameservers를 Cloudflare에서 제공한 두 개로 교체합니다.

naiyue777 - inline image
naiyue777 - inline image
naiyue777 - inline image

저장 후 Porkbun의 Nameserver 영역에 이 두 Cloudflare 주소가 표시되어야 합니다.

이 단계를 저장한다고 해서 전 세계에 즉시 적용되는 것은 아닙니다. DNS 변경 사항이 전파되는 데는 일반적으로 몇 분에서 몇 시간까지 시간이 걸립니다. Cloudflare 페이지에도 다음과 같은 메시지가 표시됩니다:

귀하의 도메인이 Cloudflare를 가리키는지 확인 중입니다.

이는 정상입니다. 공식 안내에는 1~2시간 또는 최대 24시간이 소요될 수 있다고 나와 있습니다. 실제로 이번에는 잠시만 기다렸습니다.

수정 후 Cloudflare로 돌아가서 확인을 기다립니다.

성공하면 Cloudflare에 다음과 같은 메시지가 표시됩니다:

귀하의 도메인이 이제 Cloudflare에 의해 보호됩니다.

또는 사이트 상태가 Active로 표시됩니다.

이 상태는 다음을 의미합니다:

도메인이 Cloudflare에 성공적으로 연결되었습니다. 이후 DNS 레코드는 Cloudflare에서 구성할 수 있습니다.

이 단계가 완료되기 전에는 서버 스크립트 설치를 서두르지 않는 것이 좋습니다. 나중에 인증서를 신청하고 도메인 IP를 확인하는 과정이 올바른 DNS 전파에 의존하기 때문입니다. DNS가 완전히 전환되지 않은 상태에서 진행하면 나중에 도메인 확인 실패가 발생할 가능성이 높습니다.

Cloudflare 페이지에 성공이 표시된 후에는 명령어로 한 번 더 확인하는 것이 좋습니다.

Mac 터미널에서 다음을 실행합니다:

dig +short NS example.com

정상적으로 Cloudflare의 Nameservers가 반환되어야 합니다.

여전히 Porkbun의 Nameservers가 반환된다면 DNS 관리가 아직 Cloudflare로 완전히 전환되지 않은 것입니다. 이때는 노드 구성을 계속하지 말고 잠시 기다린 후 다시 확인하세요.

4. DNS 구성: 레코드 추가 및 그레이 클라우드 유지

도메인이 Cloudflare에 연결된 후 다음 단계는 Cloudflare에서 실제로 VPS를 가리키는 DNS 레코드를 추가하는 것입니다.

여기서 실제로 사용한 것은 다음과 같습니다:

text
1루트 도메인: xxx.com
2노드 도메인: node.xxx.com
3VPS IPv4: xx.xx.xx.xx
4Cloudflare 레코드 상태: DNS only

4.1 Cloudflare DNS 페이지로 이동

Cloudflare에 로그인하여 사이트로 들어간 다음 다음을 엽니다:

text
1DNS → Records

여기에서 Cloudflare에서 스캔되었거나 이미 존재하는 DNS 레코드를 볼 수 있습니다.

도메인이 방금 Porkbun에서 이전된 경우 일부 기본 레코드가 표시될 수 있습니다. 예:

text
1A 레코드
2CNAME 레코드
3MX 레코드
4TXT 레코드

이것들은 먼저 삭제할 수 있습니다. 새로 직접 구성할 것입니다.

'node'를 노드 도메인으로 사용할 계획이므로 'node'에 대한 레코드를 추가해야 합니다.

4.2 A 레코드 추가

클릭:

text
1Add record

그런 다음 입력합니다:

text
1Type: A
2Name: node
3Content: VPS 공인 IPv4
4TTL: Auto
5Proxy status: DNS only
naiyue777 - inline image

4.3 여기서 반드시 그레이 클라우드를 선택해야 하는 이유

Cloudflare의 Proxy status에는 두 가지 일반적인 상태가 있습니다:

text
1Proxied: 주황색 구름
2DNS only: 회색 구름

이 글에서는 반드시 선택해야 합니다:

DNS only

즉, 회색 구름입니다.

차이점은 간단히 이렇게 이해할 수 있습니다:

회색 구름: Cloudflare는 DNS 확인만 담당하며, 클라이언트가 직접 연결합니다.

주황색 구름: 클라이언트가 먼저 Cloudflare에 연결되고, Cloudflare가 이를 원본 사이트로 전달합니다.

블로그, 공식 사이트 또는 정적 페이지와 같은 일반 웹사이트의 경우 주황색 구름을 사용하면 Cloudflare의 CDN, WAF, 캐싱을 사용하고 원본 IP를 숨길 수 있습니다.

하지만 이 튜토리얼은 다음을 사용합니다:

VLESS + TCP + TLS + Vision

일반 HTTP 웹사이트 리버스 프록시 시나리오가 아닙니다. 클라이언트가 VPS의 Xray 서비스와 직접 연결을 설정할 수 있도록 하려면 이 'node' 레코드는 회색 구름으로 유지되어야 합니다.

4.4 DNS가 VPS로 확인되는지 확인

DNS 레코드를 저장한 후 Mac 터미널에서 다음을 실행합니다:

text
1dig @1.1.1.1 +short A [도메인, 예: node.example.com]
2dig @8.8.8.8 +short A [도메인, 예: node.example.com]
3dig @223.5.5.5 +short A [도메인, 예: node.example.com]

정상적인 결과는 VPS IP를 반환해야 합니다.

참고: 컴퓨터에 프록시가 활성화되어 있고 TUN 모드를 사용하는 경우 터미널 출력에 영향을 미칠 수 있습니다. 이 확인을 수행하기 전에 TUN 모드를 끄십시오.

5. 서버 초기화

먼저 SSH를 통해 서버에 로그인합니다:

text
1예시:
2ssh root@203.0.113.10 -p 43781

처음 로그인할 때 터미널에서 서버 지문을 신뢰할지 묻는 메시지가 표시될 수 있습니다:

text
1Are you sure you want to continue connecting (yes/no/[fingerprint])?

yes를 입력합니다.

그런 다음 root 비밀번호를 입력합니다.

로그인 후 먼저 패키지 목록을 업데이트합니다:

text
1apt update
2apt upgrade -y

도중에 파란색 또는 보라색 구성 인터페이스에서 멈추더라도 창을 닫지 마십시오. Ubuntu는 특정 패키지를 업그레이드할 때 로컬 구성 파일을 유지할지 묻습니다.

이번에 두 개의 구성 파일 프롬프트를 만났습니다.

첫 번째는:

naiyue777 - inline image

두 번째는:

text
1/etc/cloud/cloud.cfg

터미널 프롬프트는 다음과 같았습니다:

text
1cloud.cfg (Y/I/N/O/D/Z) [default=N] ?

여기서는 기본값인 N을 사용하기 위해 Enter를 바로 누릅니다.

업그레이드가 완료되기 전에 Ubuntu에서 다음과 같은 인터페이스가 나타날 수 있습니다:

text
1Daemons using outdated libraries
2Which services should be restarted?

일부 서비스가 여전히 이전 버전의 라이브러리를 로드하고 있는지 묻는 것입니다. 이러한 서비스를 다시 시작해야 합니까?

일반적으로 기본 선택 항목을 유지하고 OK를 선택합니다.

시스템 업데이트가 완료된 후 나중에 사용할 몇 가지 도구를 설치합니다:

text
1apt install -y curl wget sudo vim ufw lsof unzip socat jq qrencode dnsutils

이 도구들은 다음 용도로 사용됩니다:

text
1curl / wget: 스크립트 다운로드, 액세스 테스트
2ufw: 방화벽 구성
3lsof / ss: 포트 점유 확인
4unzip: 파일 압축 풀기
5socat: 인증서 신청 시 사용될 수 있음
6jq: JSON 처리
7qrencode: QR 코드 생성
8dnsutils: dig 명령어 제공

마지막 단계로 도메인이 서버를 가리키는지 확인합니다:

text
1curl -4 ifconfig.me
2dig +short A [도메인, 예: node.example.com]

이 두 결과는 일치해야 합니다.

6. 방화벽 구성 및 사전 설치 백업

VPS 초기화가 완료된 후 v2ray-agent 설치를 서두르지 마십시오. 먼저 두 가지 작업을 수행하십시오:

첫째, 방화벽을 구성하고 SSH, 80, 443 포트를 사용할 수 있는지 확인합니다.

둘째, 현재 주요 구성을 백업하여 나중에 문제가 발생할 경우 롤백을 용이하게 합니다.

이 단계는 복잡해 보이지 않지만 매우 중요합니다. 특히 방화벽은 순서가 잘못되면 서버에서 자신을 잠글 수 있습니다.

6.1 먼저 현재 로그인 포트 확인

방화벽을 구성하기 전에 현재 VPS에 로그인하는 데 사용 중인 포트를 확인하십시오.

로그인 명령이 다음과 같은 경우:

ssh root@203.0.113.10 -p 43781

SSH 포트는 다음과 같습니다:

43781

이 단계를 추측하지 마십시오. 많은 VPS 제공업체가 기본 포트 22를 사용하지 않고 사용자 지정 SSH 포트를 제공합니다. 이번에도 사용자 지정 포트를 받았습니다.

나중에 방화벽을 활성화했지만 이 포트를 허용하는 것을 잊으면 다음과 같은 상황이 발생할 수 있습니다:

현재 SSH 세션은 끊어지지 않지만 새 창에서는 서버에 다시 연결할 수 없습니다.

따라서 첫 번째 방화벽 규칙은 SSH 포트를 허용해야 합니다.

6.2 필요한 포트 허용

이 글의 뒷부분에서는 세 개의 포트가 필요합니다:

text
1SSH 포트: VPS에 원격 로그인용
280/tcp: HTTP 인증서 확인용
3443/tcp: 최종 프록시 서비스용

VPS에서 실행합니다:

text
1ufw allow 43781/tcp
2ufw allow 80/tcp
3ufw allow 443/tcp

SSH 포트가 43781이 아닌 경우 자신의 포트로 바꾸십시오.

실행 후 규칙을 먼저 확인할 수 있습니다:

ufw status verbose

다음과 같이 표시되면:

Status: inactive

괜찮습니다. 규칙이 추가되었지만 방화벽이 아직 활성화되지 않았음을 의미합니다.

6.3 UFW 방화벽 활성화

SSH 포트가 허용된 것을 확인한 후 UFW를 활성화합니다:

ufw enable

시스템이 프롬프트를 표시합니다:

y를 입력합니다.

그런 다음 다시 확인합니다:

ufw status verbose

일반적으로 다음과 같이 표시되어야 합니다:

text
1Status: active
2
3To Action From
4-- ------ ----
543781/tcp ALLOW Anywhere
680/tcp ALLOW Anywhere
7443/tcp ALLOW Anywhere
843781/tcp (v6) ALLOW Anywhere (v6)
980/tcp (v6) ALLOW Anywhere (v6)
10443/tcp (v6) ALLOW Anywhere (v6)

IPv6가 필요하지 않은 경우 지금은 v6 규칙을 무시해도 됩니다. 여기서 중요한 것은 IPv4 SSH, 80, 443이 모두 ALLOW여야 한다는 것입니다.

6.4 새 터미널을 열어 SSH 테스트

방화벽을 활성화한 후 현재 SSH 창을 즉시 닫지 마십시오.

올바른 방법은 현재 창을 열어 두고 Mac에서 새 터미널 창을 열어 VPS에 다시 로그인하는 것입니다.

실행합니다:

ssh root@203.0.113.10 -p 43781

새 창이 정상적으로 로그인할 수 있으면 방화벽이 SSH를 차단하지 않은 것입니다.

모든 것이 정상임을 확인한 후 다음 단계를 계속 진행합니다.

새 창이 로그인할 수 없지만 이전 창이 아직 열려 있는 경우 즉시 확인할 수 있습니다:

ufw status verbose

SSH 포트를 허용하는 것을 잊었는지 확인합니다. 실제로 잘못 구성된 경우 UFW를 일시적으로 비활성화할 수 있습니다:

ufw disable

그런 다음 다시 구성합니다.

6.5 사전 설치 백업

방화벽이 정상임을 확인한 후 백업을 시작합니다.

이 단계의 목적은 v2ray-agent를 설치하기 전에 주요 상태를 저장하는 것입니다. 나중에 스크립트가 Nginx, 인증서 디렉터리, Xray 구성을 변경합니다. 설치가 실패하면 적어도 설치 전 상태를 알 수 있습니다.

실행합니다:

mkdir -p /root/backup-before-v2ray-agent

Nginx 구성 백업:

Let's Encrypt 인증서 디렉터리 백업:

SSH 구성 백업:

naiyue777 - inline image

현재 포트 점유 기록:

ss -tulpn > /root/backup-before-v2ray-agent/ports-before.txt

현재 방화벽 상태 기록:

ufw status verbose > /root/backup-before-v2ray-agent/ufw-status.txt

마지막으로 백업 결과를 확인합니다:

ls -lah /root/backup-before-v2ray-agent

당시 제 출력은 다음과 비슷했습니다:

text
1total 28K
2drwxr-xr-x 4 root root 4.0K May 2 08:02 .
3drwx------ 6 root root 4.0K May 2 08:02 ..
4drwxr-xr-x 9 root root 4.0K May 2 07:56 letsencrypt
5drwxr-xr-x 8 root root 4.0K May 2 07:56 nginx
6-rw-r--r-- 1 root root 1.1K May 2 08:02 ports-before.txt
7-rw-r--r-- 1 root root 3.1K May 2 06:58 sshd_config
8-rw-r--r-- 1 root root 600 May 2 08:02 ufw-status.txt

6.6 현재 포트 점유 확인

v2ray-agent를 설치하기 전에 80과 443이 이미 점유되어 있는지 확인하는 것이 좋습니다.

실행합니다:

출력이 없으면 현재 80 또는 443에서 수신 대기 중인 프로세스가 없는 것입니다.

Nginx가 이미 설치된 경우 Nginx가 80 또는 443에서 수신 대기 중인 것을 볼 수 있습니다. 나중에 v2ray-agent 스크립트가 일반적으로 Nginx 구성을 처리하지만, 설치 전 상태를 적어도 알아야 합니다.

7. v2ray-agent 설치 및 Xray + VLESS Vision 선택

서버 준비가 완료되었으면 공식적으로 서버 프로그램을 설치할 수 있습니다.

이번에 사용한 것은 다음과 같습니다:

text
1서버 스크립트: v2ray-agent
2코어: Xray-core
3프로토콜: VLESS + TCP + TLS + Vision
4포트: 443
5도메인: node.example.com
6인증서: Let's Encrypt

7.1 설치 스크립트 다운로드 및 실행

VPS에서 실행합니다:

wget -P /root -N --no-check-certificate "https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh"; && chmod 700 /root/install.sh && /root/install.sh

이 명령은 세 가지 작업을 수행합니다:

text
1install.sh를 /root에 다운로드
2install.sh에 실행 권한 추가
3설치 스크립트 실행

실행했을 때 스크립트가 표시한 정보는 다음과 비슷했습니다:

text
1Author: mack-a
2Current version: v3.5.14
3Github: https://github.com/mack-a/v2ray-agent
4Description: Eight-in-one coexistence script

설치 스크립트가 실행된 후 기본 메뉴가 나타납니다:

text
11. Install
22. Custom combination installation
33. One-click no domain
44. Hysteria 2 management
55. REALITY management
66. Tuic management
77. User management
88. Fake site management
99. Certificate management
1010. CDN node management
11...

여기서 선택합니다:

Custom combination installation

이유는 우리가 명시적으로 선택하기를 원하기 때문입니다:

text
1Xray-core
2VLESS + TLS_Vision + TCP

스크립트가 우리를 도메인 없는 경로나 다른 기본 경로로 이끌도록 하지 마십시오.

7.2 코어 선택: Xray-core

사용자 지정 조합 설치에 들어간 후 스크립트는 코어를 선택하라는 메시지를 표시합니다:

text
1Function 1/1: Select core installation
2
31. Xray-core
42. sing-box

여기서 선택합니다:

Xray-core

이유는 클래식 Xray + VLESS Vision 방식을 사용할 것이며, 호환성이 성숙하고 Clash Verge 및 Shadowrocket과 같은 클라이언트가 지원할 수 있기 때문입니다.

입력:

1

그런 다음 Enter를 누릅니다.

7.3 프로토콜 선택: VLESS + TLS Vision + TCP

다음으로 스크립트는 프로토콜 목록을 표시합니다. 당시 본 옵션은 다음과 비슷했습니다:

text
10. VLESS+TLS_Vision+TCP [Recommended]
21. VLESS+TLS+WS [Recommended for CDN only]
33. VMess+TLS+WS [Recommended for CDN only]
44. Trojan+TLS [Not recommended]
57. VLESS+Reality+uTLS+Vision [Recommended]
612. VLESS+Reality+X_HTTP+TLS [CDN available]

여기서 선택합니다:

VLESS+TLS_Vision+TCP [Recommended]

입력:

0

그런 다음 Enter를 누릅니다.

7.4 기본 구성 요소 설치

프로토콜을 선택한 후 스크립트는 종속성 설치를 시작합니다.

본 과정은 다음과 비슷했습니다:

text
1Progress 1/12: Installing tools
2---> Checking and installing updates
3---> Installing unzip
4---> Installing socat
5---> Installing crontabs
6---> Installing jq
7---> Installing ping6
8---> Installing qrencode
9---> Installing nginx
10---> Installing acme.sh

나중에 사용될 여러 구성 요소가 여기에 설치됩니다:

text
1nginx: 가짜 사이트 및 로컬 포워딩 관련
2acme.sh: TLS 인증서 신청
3jq: 구성 처리
4qrencode: QR 코드 생성
5socat: 인증서 신청 중에 사용될 수 있음

이 단계는 새 머신에서 더 느릴 수 있습니다. 오랫동안 출력이 없으면 잠시 기다리십시오. 자주 중단하지 마십시오.

7.5 노드 도메인 입력

그런 다음 스크립트는 Nginx 및 인증서 초기화 프로세스를 시작하고 도메인을 입력하라는 메시지를 표시합니다:

Please enter the domain to be configured Example: www.v2ray-agent.com --->

도메인을 입력합니다. 예:

node.example.com

여기에는 루트 도메인이 아닌 전체 서브도메인을 입력해야 합니다.

7.6 포트 입력: 기본값 443 사용

도메인을 입력하면 스크립트에서 포트를 입력하라는 메시지가 표시됩니다.

포트를 입력하세요 [기본값: 443], 사용자 지정 포트 가능 [Enter 키를 누르면 기본값 사용]

여기서 바로 Enter 키를 눌러 기본값을 사용합니다.

443

제 스크립트에는 다음과 같이 표시되었습니다.

---> 포트: 443

방화벽에서 이미 허용했습니다.

443/tcp

따라서 여기서 바로 사용할 수 있습니다.

7.7 도메인 IP 확인 대기

포트가 확인되면 스크립트는 도메인 해석이 올바른지 확인합니다.

일반적으로 다음과 같은 내용이 표시됩니다.

text
1---> 도메인 IP 확인 통과
2---> Nginx 기본 구성 삭제 중
3---> Nginx가 성공적으로 시작되었습니다
4---> Nginx가 성공적으로 종료되었습니다
5---> 포트 443이 열려 있음 감지
6---> 도메인 IP 확인 중
7---> 현재 도메인 IP가 올바릅니다

이 작업이 실패하면 강제로 설치를 진행하지 마세요. 먼저 DNS 확인으로 돌아가십시오.

dig @1.1.1.1 +short A node.example.com

dig @8.8.8.8 +short A node.example.com

VPS IP가 반환되는지 확인하세요.

또한 Cloudflare에서 이 레코드가 회색 구름인지 확인하세요.

프록시 상태: DNS 전용

주황색 구름으로 설정된 경우 스크립트 감지 및 후속 연결에 문제가 발생할 수 있습니다.

7.8 TLS 인증서 신청

다음으로 인증서 신청 단계로 들어갑니다.

진행률 3/12: TLS 인증서 신청 중

스크립트가 질문합니다.

DNS API를 사용하여 인증서를 신청하시겠습니까 [NAT 지원]? [y/n]

여기서는 다음을 선택합니다.

n

이 VPS에는 공용 IPv4가 있고 포트 80과 443이 이미 허용되어 있으므로 DNS API를 사용하여 인증서를 신청할 필요가 없습니다.

그런 다음 스크립트에서 인증 기관을 선택하도록 합니다.

text
11. letsencrypt [기본값]
22. zerossl
33. buypass [DNS 신청 미지원]

여기서 바로 Enter 키를 눌러 기본값을 사용합니다.

letsencrypt

Let's Encrypt는 무료 인증서로 개인 사용에 충분합니다. 인증서 자체가 노드 이상을 유발하는 핵심 요소는 아닙니다. 실제로 보장해야 할 것은 다음과 같습니다.

올바른 도메인 해석

성공적인 인증서 신청

정상적인 갱신 작업

올바른 서버 구성

7.9 UUID 및 사용자 이름

나중에 스크립트에서 UUID를 입력하라는 메시지가 표시됩니다.

사용자 지정 UUID를 입력하세요 [필수 형식 준수], [Enter 키]를 누르면 무작위 UUID 생성

스크립트가 무작위로 생성하도록 바로 Enter 키를 누르는 것이 좋습니다.

그런 다음 사용자 이름을 입력하라는 메시지가 표시됩니다.

사용자 지정 사용자 이름을 입력하세요 [필수 형식 준수], [Enter 키]를 누르면 무작위 사용자 이름 생성

Enter 키를 눌러 무작위로 생성할 수도 있습니다. 식별하기 쉬운 이름을 입력할 수도 있지만, 실명, 전화번호, 이메일 또는 기타 개인 정보는 사용하지 마세요.

7.10 설치 후 계정 출력

설치가 완료되면 스크립트가 마지막 단계로 들어갑니다.

진행률 12/12: 계정

당시 제 출력은 다음과 같았습니다.

text
1VLESS TCP TLS_Vision [권장]
2일반 형식 (VLESS+TCP+TLS_Vision)
3vless://...
4형식화된 일반 텍스트 (VLESS+TCP+TLS_Vision)
5프로토콜 유형: VLESS
6주소: node.example.com
7포트: 443
8사용자 ID: ...
9보안: tls
10client-fingerprint: chrome
11전송 방식: tcp
12flow: xtls-rprx-vision
13계정 이름: ...
14QR 코드 VLESS

이는 서버가 VLESS Vision 노드를 생성했음을 나타냅니다.

7.11 Xray 및 Nginx 상태 확인

설치 후 클라이언트로 바로 가져오지 마세요. 먼저 VPS에서 서비스 상태를 확인하세요.

text
1systemctl status xray --no-pager
2systemctl status nginx --no-pager
3ss -tulpn | grep -E '(:443|:80|xray|nginx)'

제가 확인한 주요 결과는 다음과 같습니다.

text
1xray.service active (running)
2nginx.service active (running)
3xray listening on public *:443
4nginx listening on 127.0.0.1:31300 and 127.0.0.1:31302

이는 다음을 의미합니다.

공용 443 진입점은 Xray가接管하고, Nginx는 로컬 포트에서 가짜 사이트 또는 보조 서비스를 제공하며, 서비스가 정상적으로 시작되었습니다.

xray.service가 active (running) 상태가 아니면 먼저 로그를 확인해야 합니다. 클라이언트로 계속 가져오지 마세요.

다음을 실행할 수 있습니다.

journalctl -u xray --no-pager -n 80

8. 구독 링크 생성 및 Clash Verge 준비

이전 섹션의 설치 후 스크립트는 이미 단일 vless:// 노드 링크를 출력했습니다. 이 링크는 Shadowrocket과 같은 클라이언트에 직접 가져올 수 있습니다.

하지만 Mac에서 Clash Verge를 사용하는 경우 구독 링크를 생성하는 것이 더 좋습니다.

구독 링크의 장점은 다음과 같습니다.

text
1클라이언트가 구독을 한 번만 추가하면 됩니다.
2노드 정보 변경 후 구독을 새로고침합니다.
3여러 사용자 또는 여러 노드를 더 쉽게 관리할 수 있습니다.
4Clash Verge가 ClashMeta 형식을 직접 사용할 수 있습니다.

실제로 구독을 생성할 때 v2ray-agent의 사용자 관리 기능을 사용했습니다.

text
1vasma
2→ 7. 사용자 관리
3→ 2. 구독 보기
4→ ClashMeta 형식 선택

8.1 v2ray-agent 메뉴 다시 열기

설치 스크립트가 완료되면 자동으로 바로 가기 명령어가 생성됩니다.

vasma

VPS에서 다음을 실행합니다.

vasma

그러면 v2ray-agent 메인 메뉴가 다시 열립니다.

메뉴에서 다음을 볼 수 있습니다.

text
11. 설치
22. 사용자 지정 조합 설치
33. 원클릭 도메인 없음
44. Hysteria 2 관리
55. REALITY 관리
66. Tuic 관리
77. 사용자 관리
88. 가짜 사이트 관리
99. 인증서 관리
1010. CDN 노드 관리
11...

여기서 선택합니다.

사용자 관리

8.2 구독 보기로 이동

사용자 관리로 들어가면 다음과 같은 메뉴가 표시됩니다.

text
1기능 1/1: 계정 관리
2
31. 계정 보기
42. 구독 보기
53. 다른 구독 관리
64. 사용자 추가
75. 사용자 삭제

여기서 선택합니다.

구독 보기

이 단계에서는 로컬 계정의 구독 콘텐츠를 다시 생성합니다.

스크립트는 다음과 같은 메시지도 표시합니다.

구독을 보면 로컬 계정의 구독이 다시 생성됩니다. md5 암호화 솔트 값을 수동으로 입력해야 합니다. 모르는 경우 임의의 값을 사용하세요. 이미 추가된 원격 구독의 콘텐츠에는 영향을 미치지 않습니다.

자신만 사용하는 경우 기본 임의 값을 사용하면 됩니다.

8.3 구독 포트 입력

스크립트가 다음을 요청합니다.

text
1구독 구성을 시작합니다. 구독 포트를 입력하세요.
2
3사용자 지정 포트를 입력하세요 [필수 형식 준수], 포트는 중복될 수 없습니다. [Enter 키]를 누르면 무작위 포트가 생성됩니다.

여기에는 두 가지 선택 사항이 있습니다.

Enter 키를 바로 누름: 스크립트가 무작위 포트를 생성합니다.

사용자 지정 포트를 수동으로 입력: 기억하기 쉽지만 기존 포트와 충돌할 수 없습니다.

초보자는 Enter 키를 바로 눌러 스크립트가 무작위 포트를 생성하도록 하는 것이 좋습니다.

사용자 지정 포트를 선택하는 경우 다음을 추가로 확인해야 합니다.

포트가 점유되지 않음

방화벽에서 이 포트를 허용함

제공업체의 보안 그룹에서도 이 포트를 허용함

변수를 줄이기 위해 첫 번째 구성에서는 무작위 포트를 사용하는 것이 더 쉽습니다.

8.4 가짜 사이트 프롬프트

스크립트가 다음을 요청할 수 있습니다.

가짜 사이트 추가 시작

가짜 사이트 설치가 감지되었습니다. 다시 설치하시겠습니까 [y/n]

이전에 VLESS Vision을 설치할 때 가짜 사이트를 이미 구성한 경우 일반적으로 다음을 선택합니다.

n

다시 설치하지 않음을 의미합니다.

다시 설치하는 것이 불가능한 것은 아니지만 초보자 튜토리얼에서 변수를 추가할 필요는 없습니다. 현재 목표는 구독 링크를 생성하는 것이지 가짜 사이트를 재구성하는 것이 아닙니다.

8.5 솔트 값 선택 방법

나중에 스크립트에서 솔트 값을 입력하라는 메시지가 표시됩니다.

솔트 값을 입력하세요. [Enter 키]를 누르면 무작위 값 사용

여기서 바로 Enter 키를 누르세요.

솔트의 역할은 다음과 같이 간단히 이해할 수 있습니다.

구독 관련 콘텐츠를 생성하는 데 사용되는 임의의 값

개인 사용의 경우 수동으로 지정할 필요가 없습니다. 임의의 값이 실제로 더 안전하며 고정된 문자열 재사용을 방지합니다.

8.6 ClashMeta 형식 구독 선택

구독이 생성되면 스크립트는 여러 형식을 표시합니다.

실제로 다음을 볼 수 있습니다.

기본값

ClashMeta

sing-box

Mac에서 Clash Verge를 사용하는 경우 다음을 선택하는 것이 좋습니다.

ClashMeta

그 이유는 Clash Verge가 ClashMeta 구성에 대한 지원이 더 좋고 VLESS Vision, fingerprint, flow와 같은 필드도 ClashMeta 형식에 더 적합하기 때문입니다.

다른 클라이언트를 사용하는 경우 클라이언트 지원에 따라 선택할 수 있습니다.

Clash Verge: ClashMeta

sing-box: sing-box

Shadowrocket: 일반적으로 단일 vless:// 링크를 직접 가져올 수 있음

"기본값" 형식을 Clash Verge에 그대로 복사하지 마세요. 가능하면 ClashMeta를 사용하세요.

8.7 구독 링크 저장

스크립트가 구독 링크를 출력한 후 ClashMeta 구독 링크를 복사하여 먼저 안전한 로컬 위치에 저장하세요.

참고: 공개 저장소에 저장하지 말고, 기사에 게시하지 말고, 스크린샷에 전체 링크를 표시하지 마세요.

이유는 간단합니다. 다른 사람이 구독 링크를 얻으면 노드를 직접 사용하여 VPS 트래픽을 소비하고 노드가 남용될 수 있습니다.

9. Clash Verge에 구독 가져오기 및 테스트

서버가 이미 설치되었고 구독 링크가 생성되었습니다. 이제 Mac에서 클라이언트를 구성합니다.

9.1 구독 추가

Clash Verge를 열고 구성 페이지로 이동합니다. 버전에 따라 인터페이스 텍스트가 약간 다를 수 있으며 일반적으로 다음과 같이 호출됩니다.

프로필

또는:

구성

새 구독을 추가하려면 클릭하고 이전 단계에서 생성된 ClashMeta 구독 링크를 입력합니다.

일반적으로 다음을 입력해야 합니다.

이름: 사용자 지정, 예: 내 VPS

유형: 원격

URL: ClashMeta 구독 링크

이름에 전체 구독 링크를 넣지 마세요.

입력 후 저장한 다음 구독을 업데이트하려면 클릭합니다.

구독이 정상이면 Clash Verge가 노드 구성을 가져와 노드 목록에 방금 생성된 VLESS Vision 노드를 표시합니다.

9.2 노드 선택

구독이 성공적으로 업데이트되면 노드 선택 페이지로 이동합니다.

일반적으로 하나 이상의 정책 그룹이 표시됩니다. 예:

ProxyAutoGlobalNodeName

방금 생성된 노드를 선택합니다.

9.3 시스템 프록시 또는 TUN 켜기

Clash Verge에는 일반적으로 두 가지 일반적인 스위치가 있습니다.

시스템 프록시

TUN 모드

간단히 이해:

시스템 프록시: 시스템 프록시 설정을 따르는 대부분의 애플리케이션이 Clash를 통과하도록 함

TUN 모드: 더 낮은 수준에서 더 많은 트래픽을 처리하며 시스템 프록시를 따르지 않는 일부 애플리케이션도 포함

처음 테스트할 때는 다음을 켤 수 있습니다.

시스템 프록시

그런 다음 브라우저를 사용하여 테스트 웹사이트에 액세스합니다.

일부 애플리케이션이 시스템 프록시를 따르지 않는 경우 TUN을 켜는 것을 고려하세요.

9.4 종료 IP 테스트

브라우저를 열고 다음을 방문하세요.

https://ifconfig.me

프록시가 작동하는 경우 페이지에 표시된 IP는 VPS의 종료 IP여야 하며 로컬 광대역 IP 또는 이동 통신사 IP가 아니어야 합니다.

터미널에서 다음을 실행할 수도 있습니다.

curl https://ifconfig.me

Clash Verge의 시스템 프록시가 터미널에서 작동하지 않는 경우 브라우저 페이지 결과를 기준으로 사용하세요.

9.5 외부 웹사이트 및 동영상 테스트

종료 IP가 정상이면 계속해서 여러 웹사이트를 테스트할 수 있습니다.

text
1Google
2YouTube
3GitHub
4Telegram
5실제로 액세스해야 하는 웹사이트

테스트할 때 홈페이지가 열리는지만 확인하지 말고 다음도 확인하세요.

웹페이지가 정상적으로 로드되는지 여부

text
1웹페이지가 정상적으로 로드되는지 여부
2동영상이 재생되는지 여부
3몇 분 동안 안정적인지 여부
4연결이 자주 끊기는지 여부
5속도가 예상에 부합하는지 여부

YouTube는 열리지만 동영상이 매우 버벅거리는 경우 구성 오류가 아닐 수 있습니다. 다음과 같은 이유일 수 있습니다.

text
1평균 VPS 회선 품질
2피크 시간 혼잡
3월별 트래픽 제한
4클라이언트 규칙이 올바르게 설정되지 않음

특정 웹사이트에서 오류가 보고되지만 다른 웹사이트는 정상인 경우 서버를 다시 설치하지 마세요. 다음 아이디어에 따라 판단할 수 있습니다.

text
1하나의 웹사이트만 비정상: 규칙, DNS 및 대상 사이트 제한을 우선 확인
2모든 웹사이트가 비정상: 노드 연결, 구독 및 서버 상태를 우선 확인
3모바일은 액세스 가능하지만 Mac은 불가능: Clash Verge / TUN / Fake-IP를 우선 확인
4VPS는 curl로 액세스 가능하지만 클라이언트는 불가능: 클라이언트 구성을 우선 확인

마지막 말

위의 모든 단계가 완료되면 축하합니다. 이제 나만의 프록시를 가지게 되었습니다!

다른 사람과 공유하지 않도록 각별히 주의하고, 특히 금전 거래에 관여하지 마세요. 매우 위험할 수 있습니다~

또한 이 튜토리얼은 시작을 위한 것임을 다시 한 번 강조합니다. 많은 전문가들이 추가 구성을 더 수행하거나 다른 프로토콜을 사용합니다. 직접 탐색해 보세요!

이 글은 YouMind에 의해 Markdown에서 자동 변환 및 포맷되었습니다.

원클릭 저장

YouMind로 바이럴 글을 AI 심층 읽기

소스를 저장하고, 핵심 질문을 던지고, 주장을 요약해 바이럴 글을 다시 활용할 수 있는 노트로 바꾸세요. 하나의 AI 워크스페이스에서 모두 할 수 있습니다.

YouMind 둘러보기
크리에이터를 위해

당신의 Markdown을 깔끔한 𝕏 글로

직접 쓴 장문을 올릴 때 이미지, 표, 코드 블록을 𝕏에 맞게 정리하는 일은 번거롭습니다. YouMind는 전체 Markdown 초안을 깔끔하고 바로 게시할 수 있는 𝕏 글로 바꿔 줍니다.

Markdown → 𝕏 사용해 보기

분석할 패턴 더 보기

최근 바이럴 아티클

더 많은 바이럴 아티클 보기