이 Xray VLESS Reality 서버 설정 가이드는 VPS에 최신 프록시를 배포하는 과정을 안내합니다. Reality 전송 보안 계층을 사용하는 VLESS는 현재 가장 많이 요청되는 자체 호스팅 프록시 설정입니다 . 기존 VPN과 달리 고유한 핸드셰이크나 고정 패킷 서명을 생성하지 않습니다. Reality는 실제 인기 웹사이트(대상)의 TLS 1.3 핸드셰이크를 복제하므로, 네트워크를 모니터링하는 DPI 시스템에서는 서버에 대한 연결이 해당 웹사이트를 방문하는 것과 동일하게 보입니다. 서버가 핸드셰이크 중에 대상 사이트의 실제 인증서를 잠시 전달하기 때문에, 식별할 수 있는 가짜 또는 자체 서명된 인증서가 없습니다.
프로토콜 스택은 다음과 같습니다. XTLS Vision (암호화된 TLS 레코드를 원시 소켓 수준에서 복사하여 연결 속도를 높이는 흐름 제어 모드 ) 위에서 실행되는 VLESS (인증을 처리하는 경량의 상태 비저장 프록시 프로토콜), Reality (앞서 설명한 위장 계층)로 보호됩니다. 이 세 가지 모두 기존 V2Ray/V2Fly 프로젝트의 후속 프로젝트로 활발하게 유지 관리되고 있는 Xray-core에서 파생되었습니다.
이 가이드는 웹 패널이나 Docker를 사용하지 않고 명령줄에서만 Xray 서버를 수동으로 설정하는 방법을 설명합니다. VPS에서 최소한의 리소스만 사용하는 방식입니다. 도메인 이름이나 TLS 인증서 구매도 필요하지 않습니다. Reality는 대상 사이트의 인증서를 빌려와 핸드셰이크를 수행하며 자체 인증서는 제시하지 않습니다. 다음으로, your_IP 부분에는 할당된 IP 주소를 입력해야 합니다.
필요한 사항: Ubuntu 22.04/24.04 또는 Debian 11/12가 설치된 VPS, 루트 액세스 권한, VPS의 IP 주소, 그리고 TCP 포트 443이 비어 있어야 합니다(웹 서버, 패널 또는 기타 프록시가 이미 사용 중이어서는 안 됨).
아직 서버가 없으신가요? 서버 주문 및 결제 방법을 참조하세요.
다른 자체 호스팅 옵션과 먼저 비교해 보시겠습니까? WireGuard 기반 대안으로는 AmneziaWG 서버 배포 가이드를 참조하거나, 검열에 강한 최신 프로토콜인 Hysteria2 및 TUIC 설정 방법을 참조하십시오.
서버에 연결 중
윈도우(PuTTY)
PuTTY를 열고 호스트 이름 필드에 VPS IP 주소를 입력한 다음 포트를 22로 설정하고 VPS 제공업체에서 이메일로 보내준 비밀번호를 사용하여 root로 로그인하세요.
서버 IP 주소: 사용자의 IP 주소
로그인 계정: root
비밀번호: 당신의 비밀번호
- PuTTY를 열고 호스트 이름 필드에 VPS IP 주소를 입력하세요.
- 포트를 22로 설정하세요.
- 루트 계정으로 로그인하세요.
- VPS 제공업체에서 이메일로 보내준 비밀번호를 사용하세요. 그러면 서버 셸 프롬프트가 나타날 것입니다.
PuTTY/SSH를 통한 연결에 대한 자세한 안내는 SSH를 통해 Linux 서버에 연결하는 방법을 참조하세요.
리눅스/macOS (터미널)
ssh root@your_IP
아래의 모든 명령은 동일한 SSH 세션 내에서 서버에서 실행됩니다. 이는 2장부터 6장까지의 내용과 10장의 서버 측 검사에 해당합니다. 7장부터 9장까지의 내용(VPN 클라이언트 설치 및 구성)은 프록시가 실행되어야 하는 사용자의 Windows/Android/iOS 기기에서 실행됩니다. 각 장에서는 서버에 접근해야 하는 명령이 있는지 여부를 명시적으로 설명합니다.
서버 준비
시스템 업데이트
무엇을 설치하기 전에 패키지 목록을 새로 고치고 설치된 패키지를 업그레이드하십시오.
apt update -y && apt upgrade -y
apt 업그레이드 후 세션이 중단되는 것은 예상되는 현상입니다(dbus/polkit 재시작). SSH를 통해 다시 연결하십시오.
커널이 업그레이드되면 계속 진행하기 전에 재부팅하는 것이 좋습니다. (apt 및 Linux 패키지 관리자 작동 방식에 대한 자세한 내용은 Linux 패키지 관리자를 참조하세요 .) 다음 명령어로 확인하세요.
cat /var/run/reboot-required
파일이 이미 존재하는 경우, 먼저 '재부팅' 명령어로 재부팅하고 약 30초 정도 기다린 후 다시 연결하십시오.
이 가이드에서 사용하는 도구를 설치하세요.
apt install -y curl wget unzip openssl ufw qrencode
Xray 설치 프로그램 자체에 curl과 unzip이 필요하고, openssl은 4절에서 짧은 ID를 생성하며, ufw는 아래에서 구성하는 방화벽이고, qrencode는 7절에서 완성된 클라이언트 링크를 스캔 가능한 QR 코드로 변환합니다.
시스템 시계를 확인하세요
Reality의 핸드셰이크에는 타임스탬프 검사(maxTimeDiff 필드, 기본적으로 비활성화되어 있지만 알아두면 유용함)가 포함되어 있으며, 시계가 눈에 띄게 오차가 발생하면 서버의 다른 부분에서 일반 TLS 인증서 유효성 검사가 제대로 작동하지 않을 수 있습니다. 시계가 동기화되었는지 확인하십시오.
timedatectl status
"시스템 시계 동기화됨"이 "아니요"로 표시되면 다음 명령으로 활성화하십시오.
timedatectl set-ntp true
방화벽(UFW)을 구성합니다.
UFW 규칙에 대한 자세한 내용은 Linux에서 방화벽 구성하기를 참조하세요.
SSH용 22/tcp 포트(이 규칙을 건너뛰면 서버 접근 권한을 잃을 위험이 있습니다)와 Xray가 수신 대기하는 443/tcp 포트(일반 HTTPS 트래픽에서 사용하는 포트와 동일하며, Reality에 적합한 이유이기도 합니다)를 열어야 합니다.
ufw allow 22/tcp
ufw allow 443/tcp
ufw --force enable
ufw status
두 규칙 모두 ufw 상태 출력에서 ALLOW로 표시되어야 합니다.
VLESS Reality Server용 Xray-core 설치
Xray-core 프로젝트(XTLS)는 바이너리를 systemd 서비스로 설치하는 공식 설치 및 업그레이드 스크립트를 제공합니다. 타사 스크립트를 bash 셸에 연결하기 전에 반드시 검토하십시오. 이 스크립트는 프로젝트 자체 저장소에서 가져온 것입니다.
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
실행 파일이 제 위치에 있는지 확인하고 설치된 버전을 점검하십시오.
/usr/local/bin/xray version
명령 출력 결과가 페이지별로 나뉘어 표시되고 멈춘 것처럼 보이면, 버튼을 누르십시오. Q 종료하려면 Xray 바이너리가 설치됩니다. /usr/local/bin/xray그리고 해당 구성 파일은 다음 위치에 저장됩니다. /usr/local/etc/xray/.
기존 설치를 업그레이드하는 데에도 동일한 설치 스크립트를 사용할 수 있습니다. (제거, 지리 데이터 전용 업데이트 및 로그 순환을 포함한) 모든 옵션 목록을 보려면 다음 명령을 실행하십시오.
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" --help
키 및 자격 증명 생성
실체 인증은 네 가지 데이터에 기반합니다. 지금 이 네 가지 데이터를 모두 생성하세요. 생성된 데이터는 5절의 서버 구성에 붙여넣어야 합니다.
클라이언트에 대한 UUID를 생성합니다.
/usr/local/bin/xray uuid
이것은 VLESS 사용자 ID입니다. 클라이언트가 서버에 인증하는 데 사용되므로 자격 증명처럼 취급하십시오. 액세스 권한을 부여하려는 추가 장치 또는 사용자마다 명령을 다시 실행하십시오.
Reality X25519 키 쌍을 생성합니다.
/usr/local/bin/xray x25519
이 명령은 PrivateKey , Password , Hash32 세 줄을 출력합니다 . PrivateKey는 서버 설정에만 사용되며 절대 공유해서는 안 됩니다. Password는 해당 공개 키입니다. 이름과는 달리 모든 클라이언트가 입력하는 값입니다. Xray는 사용자가 실수로 공개 키를 유출하는 것을 방지하기 위해 이 필드의 이름을 PublicKey에서 Password로 변경했습니다. Hash32는 별도의 VLESS 암호화 기능에만 사용되며 Reality 설정에는 필요하지 않습니다.
짧은 ID를 생성하세요
openssl rand -hex 8
이렇게 하면 서로 다른 클라이언트 또는 클라이언트 그룹을 구분하는 데 사용되는 16자리의 16진수 문자열이 생성됩니다. 서버와 클라이언트는 동일한 값을 사용해야 합니다.
현실 목표를 선택하고 테스트하세요.
목표는 서버가 모방하는 TLS 핸드셰이크를 수행하는 실제 웹사이트입니다. 해당 웹사이트는 TLS 1.3 및 HTTP/2를 지원해야 하며, Cloudflare와 같은 CDN 뒤에 위치해서는 안 됩니다(Xray는 Reality 인증에 실패한 모든 트래픽을 목표로 바로 전달하므로 CDN을 통해 전달되는 목표는 서버를 해당 CDN의 오픈 릴레이로 만들 수 있습니다). 또한, 적절한 지연 시간 프로필을 위해 VPS와 거의 동일한 네트워크 지역에 호스팅되는 것이 이상적입니다. 서버에서 직접 후보 웹사이트를 테스트해 보세요.
/usr/local/bin/xray tls ping www.microsoft.com:443
URL이 아닌 호스트 이름을 직접 사용하세요. Reality 테스트 대상으로 흔히 사용되는 도메인으로는 안정적이고 TLS 1.3을 지원하며 CDN을 거치지 않는 www.microsoft.com, addons.mozilla.org, dl.google.com 등이 있습니다. 몇 가지 도메인을 테스트해보고 VPS 위치에서 안정적으로 응답하는 도메인을 선택하세요. 선택한 호스트 이름은 대상 도메인과 5절의 serverNames 항목에 동일하게 사용됩니다.
서버 설정 작성
설치 프로그램에 포함된 설정 파일을 백업한 다음, 해당 파일을 편집 모드로 엽니다.
cp /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.orig
nano /usr/local/etc/xray/config.json
편집을 위해 구성 파일을 엽니다.
nano /usr/local/etc/xray/config.json
아래 템플릿으로 전체 파일을 교체하고, 4절에서 확인한 UUID, 개인 키, 짧은 ID, 대상 호스트 이름(그리고 2절에서 443에서 변경한 경우 해당 포트 번호)을 자신의 것으로 대체하십시오.
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"users": [
{
"id": "YOUR-UUID-HERE",
"flow": "xtls-rprx-vision",
"email": "client1"
}
],
"decryption": "none"
},
"streamSettings": {
"method": "raw",
"security": "reality",
"realitySettings": {
"show": false,
"target": "www.microsoft.com:443",
"serverNames": ["www.microsoft.com"],
"privateKey": "YOUR-SERVER-PRIVATE-KEY",
"shortIds": ["YOUR-SHORT-ID"]
}
}
}
],
"outbounds": [
{ "protocol": "freedom", "tag": "direct" },
{ "protocol": "blackhole", "tag": "blocked" }
]
}
Ctrl+O(WriteOut) 키를 눌러 파일을 저장하세요.
파일 이름을 확인하려면 Enter 키를 누르십시오.
Ctrl+X를 눌러 nano를 종료하세요.
중요 필드는 다음과 같습니다. users[].id는 4절에서 확인한 UUID입니다. users[].flow는 XTLS Vision을 활성화합니다. method(이전에는 network라고 불렀음)는 Reality에서 요구하는 일반 TCP 기반 전송 방식인 RAW 전송 방식을 선택합니다. target과 serverNames는 4절에서 테스트한 사이트 이름입니다. privateKey는 서버 측 X25519 키이며, Password 값과는 다릅니다. shortIds는 클라이언트가 사용할 수 있는 모든 단축 ID 목록입니다. 나중에 사용자를 추가하려면 users 배열에 각 사용자의 UUID와 이메일 레이블을 지정하여 객체를 추가한 다음 서비스를 다시 시작하십시오.
Xray 26.3.27 버전부터 명시적인 minClientVer 필드가 없는 Reality 인바운드 요청은 서버 자체 코어 버전을 기본값으로 사용합니다. 따라서 이전 버전의 클라이언트 앱(구형 v2rayN, v2rayNG 또는 이전 Xray 코어를 포함하는 Streisand 빌드)은 연결되지 않고 대상 서버의 대체 페이지로 리디렉션되며, 클라이언트에는 오류가 발생하지 않고 서버 로그에도 이상 징후가 나타나지 않습니다. 이전에 정상적으로 작동하던 클라이언트가 업데이트 후 갑자기 시간 초과되는 경우, 먼저 클라이언트 앱을 업데이트해 보세요. 업데이트가 불가능한 경우 realitySettings 파일에 "minClientVer": "25.9.11"(또는 다른 이전 버전)을 추가하세요. 단, 이 경우 이전 클라이언트의 TLS 지문이 최신 브라우저와 약간 호환되지 않을 수 있습니다.
유효성 검사 및 재시작
실제 서비스를 재시작하기 전에 구성을 테스트하세요. 이렇게 하면 프록시가 다운되기 전에 JSON 오타 및 지원되지 않는 필드를 감지할 수 있습니다.
/usr/local/bin/xray run -test -c /usr/local/etc/xray/config.json
서비스 시작 및 자동 시작 활성화
새로운 설정으로 Xray를 다시 시작하고 재부팅 시 자동으로 시작되도록 설정하십시오.
systemctl enable --now xray
systemctl restart xray
systemctl status xray --no-pager
상태가 활성(실행 중)으로 표시되어야 합니다. 포트 443에서 실제로 무언가가 수신 대기 중인지 확인하십시오.
ss -lntp | grep ':443'
Xray가 시작되지 않으면 가장 빠른 방법은 systemd 저널을 확인하는 것입니다(리눅스 로그 읽는 법에 대한 자세한 내용은 " 리눅스 로그 읽는 방법 및 위치 "를 참조하세요 ).
journalctl -u xray -n 50 --no-pager
클라이언트 연결 링크 구축
Xray 클라이언트는 구성 파일 대신 단일 vless:// 공유 링크를 가져옵니다. 섹션 4에서 생성된 값을 사용하여 해당 링크를 구성하십시오(클라이언트 앱의 공유 링크 형식은 JSON 필드 자체는 이제 method라고 불리지만 전송에 대해 여전히 이전 이름인 type=tcp를 사용합니다).
YOUR-UUID — Xray UUID에서 가져온 값 (예: a1b2c3d4-e5f6-7890-abcd-ef1234567890)
YOUR-PASSWORD-PUBLIC-KEY — 여기서 비밀번호는 xray x25519의 비밀번호입니다(개인 키가 아닙니다!).
YOUR-SHORT-ID — openssl rand -hex 8에서 가져온 값 (예: a1b2c3d4e5f67890)
your_IP — (서버의 IP 주소)
SNI — www.microsoft.com (또는 대상 웹사이트)
vless://YOUR-UUID-HERE@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server
링크 예시:
vless://a1b2c3d4-e5f6-7890-abcd-ef1234567890@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=xyz_public_key_here&sid=a1b2c3d4e5f67890&type=tcp&flow=xtls-rprx-vision#My-Xray-Server
pbk는 xray x25519의 암호 값(공개 키이며 개인 키가 아님)이고, sni는 대상 호스트 이름과 일치하며, # 뒤의 텍스트는 클라이언트에서 자유롭게 이름을 변경할 수 있는 표시 레이블입니다.
모바일 기기에서 바로 스캔할 수 있도록 QR 코드로 변환하세요.
qrencode -o ~/vless-client.png "vless://YOUR-UUID@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server"
또는 파일을 저장하지 않고 터미널에 바로 출력할 수도 있습니다.
qrencode -t ansiutf8 "vless://YOUR-UUID@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server"
scp 명령어를 사용하여 PNG 파일을 자신의 컴퓨터로 복사하세요. 서버가 아닌 컴퓨터의 터미널(또는 Windows의 PowerShell)에서 실행하세요.
scp root@your_IP:~/vless-client.png .
Windows에서 연결하기
이 섹션의 모든 작업은 SSH를 통하지 않고 Windows PC에서 수행됩니다. 클라이언트는 실제로 프록시를 사용할 장치에서 실행되어야 합니다.
v2rayN을 설치하세요
v2rayN은 Xray 코어를 포함하고 VLESS/Reality를 기본적으로 지원하는 무료 GUI 클라이언트로, 활발하게 유지보수되고 있습니다. 프로젝트 페이지 에서 최신 버전을 다운로드하세요.
Windows 64비트 .zip 파일을 다운로드하고(최신 v2rayN 버전부터는 자체 포함 빌드이므로 별도의 .NET 런타임이 필요하지 않습니다), 아무 곳에나 압축을 풀고 v2rayN.exe를 실행하세요.
서버를 가져옵니다
7절에서 생성된 vless:// 링크를 클립보드에 복사하거나(또는 scp를 사용하여 QR PNG 파일을 복사한 후 열기), v2rayN에서 서버를 선택한 다음 클립보드에서 일괄 URL 가져오기를 선택합니다(또는 내장 스캐너를 사용하여 QR 코드를 스캔합니다). 새 서버 프로필이 # 뒤에 설정한 레이블과 함께 목록에 나타납니다.
프로필을 마우스 오른쪽 버튼으로 클릭하고 활성 프로필로 선택한 다음, 기본 창의 도구 모음에서 시스템 프록시(또는 전체 시스템을 라우팅하는 TUN 모드)를 활성화합니다.
안드로이드에서 연결하기
여기서 일어나는 모든 일은 SSH를 통하지 않고 안드로이드 기기에서 발생합니다.
v2rayNG를 설치하세요
v2rayNG는 v2rayN의 안드로이드 버전으로, 동일한 개발자가 제작했으며 안드로이드에서 가장 널리 사용되는 Xray 클라이언트입니다. Google Play에서 설치하거나, 해당 지역에서 Play를 사용할 수 없는 경우 프로젝트 릴리스 페이지 에서 APK 파일을 직접 다운로드하세요.
서버를 가져옵니다
v2rayNG를 실행하고 오른쪽 상단의 + 버튼을 탭한 다음, vless:// 링크를 복사한 후 클립보드에서 구성 가져오기를 선택하거나, QR 코드를 스캔하고 7번 섹션에서 생성된 PNG 이미지를 카메라로 비춥니다. 가져온 프로필을 탭하여 선택한 다음, 하단의 원형 연결 버튼을 탭합니다. Android에서 처음 VPN 권한을 요청하는 메시지가 나타나면 승인하여 터널을 설정합니다.
iOS에서 연결하기
여기서 모든 작업은 SSH를 통하지 않고 iPhone 또는 iPad에서 수행됩니다. Apple의 App Store 지침에 따라 iOS용 Xray/VLESS 클라이언트는 일반적으로 무료이지만 경우에 따라 유료인 독립형 앱이며 시스템에 통합된 기능은 아닙니다.
Reality를 지원하는 클라이언트를 설치하세요.
Streisand는 Reality를 비롯한 여러 프로토콜을 지원하는 무료 오픈 소스 클라이언트입니다. 앱 스토어에서 검색 하거나 이 링크를 열어보세요.
앱 스토어 카탈로그는 스토어/지역에 따라 다르며 시간이 지남에 따라 변경될 수 있습니다. Streisand가 사용하시는 앱 스토어에 표시되지 않으면 VLESS+Reality를 지원하는 Happ, V2Box, V2rayTun 등의 다른 앱을 검색하여 사용해 보세요.
서버를 가져옵니다
vless:// 링크를 클립보드에 복사한 다음 클라이언트를 열고 '클립보드에서 추가'(또는 '가져오기') 옵션을 사용하거나, 7번 섹션의 QR 코드를 클라이언트의 내장 스캐너로 스캔하세요. 새 프로필을 활성화하면 iOS에서 처음 VPN 구성 권한을 요청하는데, Face ID, Touch ID 또는 암호를 통해 승인해야 합니다.
연결 확인
8번, 9번 또는 10번 섹션에서 터널이 활성화되면 (SSH 세션이 아닌) 본인의 장치로 돌아가 브라우저에서 "내 IP 주소는 무엇입니까?" 확인 도구를 엽니다. 표시되는 주소가 VPS의 IP 주소와 일치해야 합니다.
서버 측에서 확인하려면 systemd 저널에서 연결 활동을 확인하고 443번 포트에서 TCP 세션이 설정되었는지 확인하십시오.
journalctl -u xray -n 50 --no-pager
ss -tnp | grep ':443'
기본 "경고" 로그 레벨에서는 Xray가 개별 연결에 대한 자세한 정보를 출력하지 않습니다. 문제 해결 중에 더 자세한 정보를 확인해야 하는 경우, config.json 파일에서 "loglevel"을 "info"로 임시 설정하고 서비스를 재시작한 다음, 문제가 해결되면 다시 "경고"로 변경하십시오.
참조 :
|
분야 |
가치관 |
|
주소 |
VPS의 공용 IP 주소 |
|
포트 |
443 (섹션 2에서 열린 것과 동일한 포트) |
|
UUID / ID |
YOUR-UUID-HERE — 섹션 4에서 xray uuid를 사용하여 생성됨 |
|
흐름 |
xtls-rprx-vision — 양쪽이 일치해야 합니다. |
|
보안 |
현실 |
|
SNI / 서버 이름 |
섹션 4에서 테스트한 대상 호스트 이름(예: www.microsoft.com) |
|
지문(fp) |
크롬 — 지원되는 uTLS 지문입니다. 클라이언트에서 설정해야 합니다. |
|
공개 키 / pbk |
xray x25519의 비밀번호 값은 절대 개인 키가 아닙니다. |
|
간략 ID/SID |
openssl rand -hex 8 명령으로 생성되었습니다. shortIds의 값과 일치해야 합니다. |
맺음말
이 가이드를 따르면 VPS에서 자체 Xray VLESS+Reality 서버가 실행되며, 도메인이나 인증서를 관리할 필요 없이 일반 웹사이트로 연결되는 HTTPS 트래픽처럼 위장됩니다. 이 서비스는 systemd 유닛인 xray로 실행되며, 재부팅 후에도 별도의 조치 없이 유지됩니다.
config.json 파일의 users 배열에 xray uuid에서 가져온 새 UUID와 고유한 이메일 레이블을 사용하여 새 객체를 추가한 다음 서비스를 다시 시작하고(systemctl restart xray) 7절에 설명된 대로 해당 사용자에게 공유 링크를 생성하여 언제든지 새 클라이언트를 추가할 수 있습니다. 사용자 또는 장치별로 별도의 UUID를 사용하면 다른 사용자에게 영향을 주지 않고 특정 사용자의 권한을 취소할 수 있습니다.
서버가 가동된 후에도 꾸준히 유지하면 좋은 몇 가지 습관:
- Xray를 최신 패치 상태로 유지하십시오. 3절의 설치 스크립트를 주기적으로 다시 실행하십시오. 이 스크립트는 기존 설치를 제자리에서 업그레이드합니다. 또한 5절에 설명된 minClientVer 동작을 고려하여 클라이언트 앱도 최신 상태로 유지하십시오.
- config.json 파일을 서버 외부의 안전한 곳에 백업해 두세요. 이 파일에는 서버의 Reality 개인 키와 각 클라이언트의 UUID가 저장되어 있습니다. 이 파일을 분실하면 모든 기기의 자격 증명을 다시 생성해야 합니다.
- 분실된 기기는 즉시 사용 권한을 취소하십시오. config.json 파일의 users 배열에서 해당 항목을 삭제하고 서비스를 다시 시작하십시오.
연결이 되지 않으면 다음 순서대로 확인하세요.
- 서비스 상태(systemctl status xray --no-pager) 및 저널(journalctl -u xray -n 50 --no-pager)을 확인하십시오.
- 방화벽 규칙(ufw status — 포트 443/tcp가 열려 있어야 함)
- 포트 443이 이미 다른 서비스에 의해 사용 중인지 확인합니다. (ss -lntp | grep ':443' 명령을 실행하면 xray만 표시되어야 합니다.)
- 클라이언트의 UUID, 공개 키, 쇼트 ID, SNI 및 플로우가 config.json과 정확히 일치해야 합니다. 문자 하나라도 일치하지 않으면 핸드셰이크가 오류 없이 실패합니다.
- Reality 타겟 자체, X-ray TLS 핑을 통해 :443, 사이트가 TLS 구성을 변경한 경우
Xray를 다른 옵션과 비교하고 싶으신가요? WireGuard 기반 대안으로는 AmneziaWG 서버 배포 가이드 와 서버에 WireGuard VPN을 설정하는 방법을 참조하시고, 손실이 많거나 심하게 필터링되는 네트워크에 적합한 검열 저항 프로토콜인 Hysteria2와 TUIC 설정 방법을 참고하세요 . 완전한 터널링 설정이 아닌 간단한 프록시만 필요한 경우, CentOS/ArchLinux에서 3proxy를 구성하는 것이 훨씬 가벼운 대안이며, Linux에서 VPN 서버 설정: PPTP 또는 OpenVPN? 은 설정은 간단하지만 DPI에 의해 감지 및 차단되기 쉬운 프로토콜을 다룹니다. 프록시가 활성화된 후 서버 보안을 강화하려면 Linux 사용자: 관리 및 권한을 참조하세요.