이 글은 Linux 그래픽 데스크톱 사용자를 대상으로 합니다. 시스템 아키텍처에 맞는 deb 또는 rpm 패키지를 선택해 패키지 관리자로 설치합니다. 이어서 로컬 프록시 포트를 확인하고 현재 사용자의 자동 실행 항목을 만든 다음, 로그인 시 실행·시스템 프록시·TUN 권한 문제를 구분해 살펴봅니다. 명령은 Bash 기준이며, 특정 버전의 파일명에 의존하지 않고 실제 패키지 이름과 실행 경로를 확인합니다.
1. Linux 배포판과 설치 패키지 아키텍처
v2rayN은 연결 설정을 관리하고 프록시 코어를 실행하는 데스크톱 클라이언트입니다. 데스크톱 패키지를 설치한다고 해서 백그라운드 프록시 서비스까지 배포되는 것은 아닙니다. 이 글의 절차는 GNOME, KDE Plasma 등 그래픽 세션에 로그인한 상태를 전제로 합니다. 원격 터미널만 사용하는 서버에는 데스크톱 자동 실행 절차를 그대로 적용하기 어렵습니다.
먼저 아래 두 명령을 실행합니다. /etc/os-release로 배포판을 확인하고 uname -m으로 시스템 아키텍처를 확인합니다. 기기 이름에 ‘64비트’라고 적혀 있다는 이유만으로 x64 패키지를 선택하지 마세요. ARM64도 64비트 아키텍처입니다.
cat /etc/os-release
uname -m
Debian / Ubuntu
- 패키지 형식
- deb
- 설치 도구
- apt
- x64 아키텍처 이름
- amd64
- ARM64 아키텍처 이름
- arm64
dpkg-deb로 패키지 정보를 확인한 뒤, apt로 저장소에서 충족할 수 있는 의존성을 처리합니다.
Fedora
- 패키지 형식
- rpm
- 설치 도구
- dnf
- x64 아키텍처 이름
- x86_64
- ARM64 아키텍처 이름
- aarch64
rpm의 아키텍처 필드는 시스템과 일치해야 하며, deb 패키지를 그대로 설치할 수 없습니다.
다운로드 페이지의 Linux 항목에서 알맞은 패키지를 선택하세요. x86_64 시스템에는 x64, aarch64 시스템에는 ARM64 패키지를 선택합니다. 아래 절차는 일반적인 쓰기 가능 시스템을 기준으로 합니다. 루트 파일 시스템이 불변인 배포판은 해당 시스템의 소프트웨어 배포 방식에 맞춰 별도로 처리해야 하며, dnf install을 통한 호스트 설치가 가능하다고 가정해서는 안 됩니다.
2. deb·rpm 패키지 로컬 설치 명령
클라이언트 다운로드 페이지에서 설치 패키지를 저장합니다. 아키텍처별 파일을 여러 개 내려받아 잘못 선택하지 않도록 원래 파일명을 유지하는 것이 좋습니다. 아래 명령은 로컬 파일 경로를 입력하도록 안내합니다. Bash의 Tab 자동 완성을 사용할 수 있으며, 입력할 때 경로를 따옴표로 감싸지 마세요. 각 명령 묶음은 같은 터미널 세션에서 순서대로 실행해야 합니다.
Debian / Ubuntu: apt로 deb 설치
read -r -e -p 'deb 파일 경로: ' package
package=$(realpath -- "$package")
dpkg-deb --field "$package" Package Version Architecture
sudo apt update
sudo apt install "$package"
먼저 dpkg-deb로 패키지 이름, 버전, 아키텍처를 확인한 다음 설치합니다. apt에는 저장소 패키지 이름이 아니라 로컬의 절대 경로를 전달합니다. apt는 활성화된 소프트웨어 저장소에서 의존성을 해결할 수 있지만, 현재 배포판 저장소에 없는 라이브러리 버전을 제공할 수는 없습니다.
Fedora: dnf로 rpm 설치
read -r -e -p 'rpm 파일 경로: ' package
package=$(realpath -- "$package")
rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE} %{ARCH}\n' "$package"
sudo dnf install "$package"
rpm -qp는 설치할 파일의 정보를 조회할 뿐, 프로그램을 설치하지 않습니다. 실제 설치는 dnf가 담당하며 의존성을 처리하고 트랜잭션을 기록합니다. 서명이나 출처 관련 안내가 표시되면 먼저 다운로드한 곳과 패키지 정보를 확인하세요. 설치를 진행하려고 검사를 바로 끄지 마세요.
로컬 패키지는 패키지 관리자로 설치
권장apt install 또는 dnf install에서 로컬 파일을 지정하세요. 의존성 해결, 파일 소유권, 이후 삭제 작업이 시스템 패키지 데이터베이스에 기록됩니다. 업그레이드 시 충돌 정보도 명확하게 확인할 수 있습니다.
적합한 경우: 일반적인 Debian, Ubuntu, Fedora 데스크톱 설치
수동 압축 해제 및 확인
파일만 추출하면 디렉터리 구조를 확인할 수 있지만, 전체 설치 과정이 자동으로 실행되지는 않습니다. 메뉴 항목이나 의존성이 준비된다는 보장도 없습니다. 압축 해제에 성공했다고 클라이언트 설치가 완료된 것은 아닙니다.
적합한 경우: 패키지 내용 확인 및 패키징 문제 파악. 일상적인 설치에는 권장하지 않습니다.
3. 첫 실행과 로컬 프록시 확인
설치가 끝나면 데스크톱 앱 메뉴에서 v2rayN을 검색해 실행합니다. 처음에는 일반 사용자로 인터페이스를 열고, 전체 데스크톱 프로그램을 sudo로 실행하지 마세요. 관리자 권한으로 실행하면 root 소유의 설정 파일이 만들어질 수 있고, 데스크톱 세션 권한과 네트워크 권한이 뒤섞일 수 있습니다.
-
클라이언트 실행
앱 메뉴에서 v2rayN을 검색합니다. 실행 항목이 보이지 않으면 먼저 설치가 완료됐는지 확인한 다음, 다음 절의 방법으로 실제 .desktop 파일을 찾으세요. 실행 파일 경로를 짐작해서 지정하지 마세요.
-
연결 가져오기
기존 연결 공유 링크를 복사한 다음, 메인 창의 ‘서버’ 메뉴에서 클립보드 가져오기 명령을 선택합니다. 버전에 따라 메뉴 이름이 다를 수 있으므로, 가져온 서버 주소와 포트가 예상한 값인지 확인하세요.
-
서버 선택
서버 목록에서 사용할 항목을 선택한 뒤 마우스 오른쪽 버튼 메뉴에서 ‘활성 서버로 설정’을 선택합니다. 로그에 설정 오류나 포트 충돌이 없는지 확인한 다음 테스트를 진행하세요.
-
수신 포트 확인
‘설정’ → ‘매개변수 설정’에서 로컬 수신 포트와 프록시 프로토콜을 확인하고 코어 실행 로그와 대조합니다. 아래 예시는 10808 포트를 사용합니다. 실제로 해당 포트에서 SOCKS 연결을 사용하는 경우에만 실행하세요.
먼저 터미널에서 프록시를 명시적으로 지정하는 경로를 확인한 뒤 데스크톱 시스템 프록시를 설정하세요. 이렇게 하면 서버 연결 문제와 데스크톱 환경 설정 문제를 구분할 수 있습니다. 아래 세 숫자는 진단 명령의 고정 인수이며, 속도 측정 결과나 모든 버전의 기본 설정을 뜻하지 않습니다.
ss -lntp 'sport = :10808'
curl --proxy socks5h://127.0.0.1:10808 \
--head --max-time 15 https://v2rayguanwang.com/
socks5h는 대상 호스트 이름의 DNS 조회를 SOCKS 프록시에서 처리한다는 뜻입니다. Connection refused가 나오면 먼저 로컬 수신 상태를 확인하세요. 프록시 연결은 됐지만 TLS 오류나 원격 연결 시간 초과가 발생하면 노드 설정, 시스템 시간, 외부 네트워크를 확인합니다. HTTP 응답을 받았다는 사실은 이번 요청이 응답을 받았다는 뜻일 뿐, 모든 앱이 프록시를 사용한다는 의미는 아닙니다.
4. 데스크톱 자동 실행: 로그인 후 v2rayN 실행
데스크톱 사용자에게 ‘부팅 시 자동 실행’은 보통 그래픽 데스크톱에 로그인한 뒤 클라이언트를 실행한다는 뜻입니다. XDG 자동 실행 디렉터리인 ~/.config/autostart/는 바로 이 용도로 제공됩니다. 컴퓨터가 켜져 있어도 로그인 전에는 실행되지 않으며, 로그아웃 후 독립적인 시스템 서비스처럼 계속 작동하지도 않습니다.
우선 데스크톱 환경의 시작 프로그램 관리 화면에서 앱을 추가하세요. 직접 설정해야 한다면 설치 패키지가 제공하는 데스크톱 항목을 재사용합니다. 기존 항목에는 올바른 Exec, 아이콘, 실행 인수가 이미 들어 있어, 경로를 추측해 /opt/ 아래에 직접 작성하는 것보다 안전합니다.
find /usr/share/applications "$HOME/.local/share/applications" \
-maxdepth 1 -type f -iname '*v2rayn*.desktop' -print 2>/dev/null
출력이 없다면 설치 패키지의 파일 목록을 확인할 수 있습니다. deb는 dpkg-deb --contents "$package", rpm은 rpm -qpl "$package"를 사용합니다. 여기서 package는 앞서 입력한 설치 패키지 경로입니다. 다른 터미널을 사용 중이라면 변수를 다시 설정해야 합니다. 실제로 설치된 데스크톱 항목을 찾은 다음 아래 복사 명령을 실행하세요.
read -r -e -p '설치된 desktop 파일 경로: ' desktop
if test -f "$desktop"; then
install -Dm644 -- "$desktop" "$HOME/.config/autostart/v2rayn.desktop"
grep -E '^(Type|Name|Exec|TryExec|Hidden|OnlyShowIn|NotShowIn|X-GNOME-Autostart-enabled)=' \
"$HOME/.config/autostart/v2rayn.desktop"
else
printf '%s\n' '파일이 없습니다. 데스크톱 항목 경로를 다시 확인하세요.'
fi
- 실행 대상 확인:
Exec는 설치된 프로그램을 가리켜야 합니다.TryExec가 있다면 해당 명령도 실제로 존재해야 합니다. 원본 파일의 인수와 이스케이프 규칙을 유지하세요. - 비활성화 설정 확인:
Hidden=true가 있으면 텍스트 편집기에서Hidden=false로 바꾸세요. GNOME 환경에X-GNOME-Autostart-enabled=false가 있으면 활성화 상태인지 확인하고 필요하면 수정합니다. - 데스크톱 제한 확인:
OnlyShowIn과NotShowIn은 적용할 데스크톱 환경을 제한할 수 있습니다. 의미를 확인한 뒤에만 수정하고, 모든 항목을 무작정 삭제하지 마세요. - 중복 실행 항목 확인: 클라이언트 자체 자동 실행 설정, 데스크톱 시작 프로그램 관리자, 수동으로 만든 파일 중 하나만 활성화해 여러 인스턴스가 동시에 실행되지 않게 하세요.
저장한 뒤 클라이언트를 정상 종료하고 로그아웃한 다음 다시 로그인합니다. 창만 닫았다고 프로세스가 종료됐다고 판단하지 마세요. 설정에 따라 창이 트레이로 최소화될 수 있습니다. 다시 로그인한 후 인터페이스, 코어 로그, 수신 포트를 각각 확인하세요. 트레이 아이콘만 보인다고 프록시가 작동한다고 단정할 수는 없습니다.
5. 자동 실행 확인, 업그레이드 및 복구
자동 실행 테스트는 그래픽 세션과 네트워크 세션 두 단계로 확인해야 합니다. 데스크톱이 먼저 시작되어도 무선 네트워크, DNS 조회, 원격 연결은 아직 준비되지 않았을 수 있습니다. 부팅 직후 시간 초과 로그가 한 번 나왔다고 설치 실패로 단정하지 말고, 네트워크를 사용할 수 있게 된 뒤 프록시를 지정해 다시 요청하세요.
| 확인 항목 | 조치 | 결과 해석 |
|---|---|---|
| 프로그램 실행 여부 | pgrep -af '[v]2rayN' | 주 프로세스를 확인합니다. 프로세스 이름으로 찾을 수 없으면 데스크톱 시스템 모니터에서 확인하세요. |
| 코어의 수신 여부 | ss -lntp 'sport = :10808' | 실제 설정에 맞게 포트를 바꾸세요. 수신 대기 중이 아니면 먼저 코어 로그를 확인합니다. |
| 사용자 세션 오류 | journalctl --user -b --no-pager -n 100 | 이번 실행의 사용자 로그를 확인하세요. 데스크톱에서 실행 출력이 기록되는지는 환경에 따라 다릅니다. |
| 수동 자동 실행 비활성화 | rm -- "$HOME/.config/autostart/v2rayn.desktop" | 이 글에서 만든 사용자 시작 항목만 삭제합니다. 클라이언트는 제거되지 않습니다. |
업그레이드 전에 클라이언트의 내보내기 기능으로 연결 설정을 저장하고, 로컬 수신 포트, 라우팅 모드, 사용 중인 코어를 기록하세요. 설정 디렉터리를 백업할 때는 현재 클라이언트 화면이나 로그에서 실제 경로를 확인해야 합니다. 다른 운영체제의 경로를 Linux에 그대로 적용하지 마세요. 설정에는 연결 인증 정보가 포함될 수 있으므로 백업 파일에 대한 접근도 제한하세요.
새 패키지를 다운로드한 뒤 같은 패키지 관리자로 설치하세요. 업그레이드 전에 클라이언트를 종료해 이전 프로세스가 계속 실행되면서 버전을 잘못 판단하지 않도록 합니다. 직접 복사한 자동 실행 파일은 시스템 데스크톱 항목의 변경 사항을 자동으로 반영하지 않습니다. 업그레이드 후 Exec 경로가 바뀌었다면 파일을 다시 복사하고 비활성화 설정도 확인하세요. 이전 버전으로 되돌리면 새 버전이 저장한 설정을 읽지 못할 수도 있으므로 작업 전에 해당 버전의 백업을 보관하세요.
6. 의존성·데스크톱 세션·프록시 문제 해결
apt에서 의존성을 충족할 수 없다고 합니다. 강제로 설치해도 되나요?
먼저 패키지 아키텍처와 지원되는 배포판을 확인한 뒤, sudo apt update를 실행해 소프트웨어 저장소에 접근할 수 있는지 확인하세요. 이전에 dpkg로 설치하다 설정이 끝나지 않은 패키지가 있다면 sudo apt --fix-broken install을 실행할 수 있습니다. 실행 전에 설치되거나 삭제될 항목 목록을 확인하세요. 현재 저장소에 필요한 라이브러리 버전이 없다면 의존성을 무시해도 실행 문제는 해결되지 않습니다.
rpm은 설치됐지만 메뉴를 눌러도 반응이 없으면 어떻게 하나요?
먼저 실제 .desktop 파일의 Exec 값을 확인하세요. 터미널에서 재현하려면 그 안의 실행 파일 경로와 고정 인수를 사용하세요. %U, %F 같은 데스크톱 필드 코드를 터미널 인수로 그대로 입력하면 안 됩니다. 로그에 공유 라이브러리가 없다고 표시되면 로그에 나온 정확한 라이브러리 이름으로 dnf provides를 실행해 제공 패키지를 확인한 뒤 의존성을 설치할지 호환되는 패키지로 바꿀지 결정하세요.
재부팅 후 창이 보이지 않습니다. 자동 실행에 실패한 건가요?
먼저 그래픽 데스크톱에 로그인한 다음 시스템 모니터, 트레이, 로컬 수신 상태를 확인하세요. 일부 데스크톱은 트레이를 기본으로 표시하지 않으므로 프로세스가 이미 실행 중일 수 있습니다. 프로세스도 없다면 사용자 autostart 파일의 Exec, Hidden, 데스크톱 제한 항목을 확인하고, 다른 사용자의 홈 디렉터리에 시작 항목을 만들지 않았는지도 살펴보세요.
curl에서는 프록시가 되는데 브라우저는 달라진 게 없어요. 왜 그런가요?
프록시를 명시적으로 지정한 연결은 되지만 데스크톱 프록시는 적용되지 않았다는 뜻입니다. GNOME에서는 ‘설정’ → ‘네트워크’ → ‘네트워크 프록시’를, KDE Plasma에서는 ‘시스템 설정’ → ‘네트워크’ → ‘프록시’를 확인하세요. 메뉴 이름은 데스크톱 버전에 따라 다를 수 있습니다. 브라우저 자체의 프록시 정책도 확인하고, SOCKS 포트를 HTTP 프록시만 받는 입력란에 넣지 마세요.
일반 프록시는 되는데 TUN에서 권한 부족 오류가 납니다.
/dev/net/tun이 있는지 확인하고 현재 버전의 TUN 권한 상승 안내를 살펴보세요. 컨테이너, 제한된 세션, 보안 정책 때문에 네트워크 인터페이스를 만들지 못할 수 있습니다. 오류를 없애려고 전체 그래픽 클라이언트를 계속 root로 실행하지 마세요. 출처를 알 수 없는 프로그램에 네트워크 관리 권한을 함부로 부여하지도 마세요. 일반 프록시를 계속 사용할 수 있도록 유지한 다음 TUN 권한은 별도로 해결하세요.
문제를 진단할 때 배포판 이름, uname -m 출력, 패키지 버전, 데스크톱 환경, 처음 확인된 명확한 오류를 기록하세요. 로그를 공유하기 전에 구독 주소, 연결 식별 정보, 서버 인증 정보를 삭제하세요. 설치, 실행, 포트 수신, 앱의 프록시 사용은 서로 다른 단계입니다. 순서대로 확인하면 반복해서 재설치하는 것보다 문제를 쉽게 찾을 수 있습니다.