가이드
Linux에서 VPN 설정하는 방법
프로바이더 자체 저장소의 클라이언트, 시스템 자체 도구에서 구성 파일을 사용하는 대안, 다른 어느 환경보다 Linux에서 더 자주 발생하는 DNS 유출 문제, 그리고 터미널에서 수행하는 점검을 다룹니다. Ubuntu 26.04 LTS와 NetworkManager를 기준으로 작성했습니다.
시작하기 전에
이 가이드는 하나를 대신 골라주지 않습니다
아래의 모든 단계는 어떤 프로바이더를 사용하든 동일하므로 여기서는 특정 프로바이더를 언급하지 않습니다. 선택은 별도의 작업이며, 다운로드 페이지가 아니라 공개된 점수를 기준으로 선택하는 레지스터에서 이루어집니다.
클라이언트는 프로바이더 자체 저장소에서, 프로바이더 자체 지침에 있는 서명 키와 함께 설치하세요. 포럼이나 블로그의 한 줄짜리 설치 명령을 터미널에 절대 붙여 넣지 마세요. 해당 명령은 root 권한으로 실행되며, 무엇을 받아왔는지 알 수 없습니다. 서명된 저장소의 패키지는 확인할 수 있지만, 셸로 파이프된 스크립트는 확인할 수 없습니다.
클라이언트 설치
Linux에는 두 가지 방법이 있으며, 둘 다 정당한 방법입니다. 첫 번째는 프로바이더 자체 클라이언트입니다. 이 방법을 사용하면 킬 스위치, 서버 선택 기능, DNS 처리가 기본으로 제공됩니다. 두 번째는 시스템 자체 도구에서 구성 파일을 사용하는 방법이며, 이 가이드의 마지막 섹션에서 그 대가를 설명합니다.
- 프로바이더 웹사이트에 로그인한 뒤 계정 영역에서 Linux 지침을 엽니다. 지침에 저장소, 키, 패키지가 명시되어 있으므로 그 내용만 따르세요.
- 배포판의 패키지 관리자로 저장소와 키를 추가한 다음 패키지를 설치합니다. 키가 있어야 패키지 관리자가 변조된 패키지를 거부할 수 있으므로, 키 없이 추가한 저장소는 여러분이 신뢰를 전제로 받아들인 저장소입니다.
- 클라이언트 서비스를 활성화하여 부팅 시 시작되게 합니다. 클라이언트는 보통 root로 실행되는 데몬과 이에 연결되는 데스크톱 앱으로 구성됩니다. 터널은 데몬이 관리하며, 부팅 시부터 유지되어야 하는 킬 스위치에는 부팅 시부터 실행 중인 데몬이 필요합니다.
- 클라이언트에 로그인합니다. 앱에서 로그인하거나, 계정 영역에서 제공하는 토큰을 사용해 명령줄에서 로그인할 수 있습니다. 기기 이름은 신원을 드러내지 않는 것으로 지정하세요.
- 아직 연결하지 마세요. 먼저 설정을 엽니다. 아래 세 가지 중 두 가지는 대부분의 클라이언트에서 기본적으로 꺼져 있습니다.
확인할 가치가 있는 세 가지 설정
클라이언트 메뉴는 서로 다르지만 설정 자체는 다르지 않습니다. 이름이 낯설다면 세 항목 모두 용어집에 설명이 있습니다.
킬 스위치
터널이 끊겼을 때 트래픽이 조용히 일반 네트워크로 되돌아가지 않고 모든 트래픽을 차단합니다. Linux에서는 클라이언트가 작성하는 방화벽 규칙으로 작동합니다. 터널 인터페이스와 터널 자체의 엔드포인트를 제외한 모든 트래픽이 삭제됩니다. 기능을 켜고, 클라이언트에서 제공한다면 항상 켜짐 또는 lockdown 형태를 선택하세요. 그래야 연결 중일 때만이 아니라 부팅 시부터 규칙이 유지됩니다. 이 스위치의 목적은 킬 스위치 페이지에서 설명합니다.
터널 내부의 DNS
다른 모든 트래픽은 터널 안에 있어도 이름 조회만 터널 밖으로 나갈 수 있습니다. Linux에서 이 유출이 가장 자주 발생하는 이유는 리졸버가 동적으로 작동하기 때문입니다. Ubuntu에서 이 역할을 하는 것은 systemd-resolved입니다. 각 인터페이스에는 자체 리졸버가 있으며, DNS의 기본 경로를 가진 리졸버가 더 구체적인 도메인에 일치하지 않는 모든 요청에 응답합니다. 클라이언트는 터널 인터페이스를 통해 이 기본 리졸버를 프로바이더의 리졸버로 지정해야 합니다. DNS는 제3자가 아닌 프로바이더 자체의 것으로 설정하세요. 조회만 볼 수 있는 두 번째 당사자가 하나 더 생기기 때문입니다. 유출이 발생하는 방식은 DNS 유출 페이지에서 설명합니다.
프로토콜
문제가 발생하지 않는 한 최신 기본값으로 두세요. 프로토콜 페이지에서 현재 사용되는 것과 레거시인 것을 확인할 수 있습니다. 연결 문제를 해결하기 위해 클라이언트가 더 오래된 옵션을 제공한다면, 이는 그 사실을 알고 선택한 뒤 나중에 되돌려야 하는 절충입니다. 레지스터는 프로바이더가 여전히 제공하는 가장 약한 프로토콜을 표시하며, 이를 직접 선택하는 것은 그 표시를 스스로 선택하는 것입니다.
실제로 작동하는지 확인
연결한 다음 추측하지 말고 확인하세요. 터미널에서 다음 세 가지를 순서대로 점검합니다.
- 주소가 변경되었는지 확인합니다.
curl로 ‘내 IP는 무엇인가’를 알려주는 서비스를 호출하거나 브라우저에서 열고, 국가가 선택한 출구 위치와 일치하는지 확인합니다. 공용 주소에ip route get을 실행했을 때 Wi-Fi나 Ethernet 인터페이스가 아니라 터널 인터페이스가 표시되어야 합니다. - 조회가 터널 내부에서 이루어지는지 확인합니다.
resolvectl status를 실행합니다. 터널 인터페이스에 프로바이더의 리졸버와 DNS 기본 경로가 표시되어야 하며, 물리 인터페이스의 리졸버는 사용되지 않아야 합니다. 브라우저의 DNS 유출 테스트는 추가 확인 수단입니다. 인터넷 프로바이더에 속한 항목이 표시되면 DNS 설정이 적용되지 않은 것입니다. - 킬 스위치가 설명대로 작동하는지 확인합니다. 다운로드를 실행한 상태에서
systemctl stop으로 클라이언트 서비스를 중지하거나,ip link set … down으로 터널 인터페이스를 내립니다. 클라이언트에 요청하지 않고 터널을 끊는 방식입니다. 전송이 즉시 중단되어야 합니다. 계속 진행된다면 그 스위치는 장식에 불과합니다.
더 긴 테스트 모음과 각 테스트로 확인할 수 있는 것과 확인할 수 없는 것은 별도 가이드에서 설명합니다.
이 점검으로 확인되는 것
+트래픽이 선택한 국가의 출구 서버를 통해 나가고 있습니다
+조회에 응답하는 리졸버는 터널 내부에 있는 프로바이더의 리졸버입니다
+터널이 끊기면 조용히 되돌아가지 않고 연결이 차단됩니다
이 점검으로 확인되지 않는 것
−프로바이더가 무엇을 보존하는지는 알려주지 않습니다 — 이는 문서에 관한 문제이며 보존 페이지에서 답을 확인할 수 있습니다
−익명으로 만들어 주지는 않습니다. 브라우저와 로그인 상태는 그대로입니다. VPN이 보호하지 않는 것을 확인하세요
−오늘 테스트를 통과했다고 해서 다음 패키지 업데이트나 다음 커널에서도 문제가 없다는 약속은 아닙니다
구성 파일을 사용하는 방법과 그 대가
대부분의 프로바이더는 계정 영역에서 일반적으로 사용되는 두 프로토콜의 구성 파일을 공개합니다. WireGuard 파일은 연결 편집기에서 NetworkManager로 가져오거나 nmcli connection import를 사용해 가져올 수 있으며, wg-quick에서도 동일하게 작동합니다. OpenVPN 파일도 OpenVPN 플러그인을 사용해 같은 방식으로 가져옵니다. 터널과 시스템 자체 인터페이스 전환 기능은 사용할 수 있지만, 프로바이더가 파일에 넣지 않은 기능은 제공되지 않습니다.
잃게 되는 것은 클라이언트의 나머지 기능입니다. 직접 방화벽 규칙을 작성하지 않는 한 킬 스위치가 없습니다. NetworkManager로 가져온 파일의 연결이 끊기면 트래픽은 일반 네트워크로 돌아갑니다. DNS 처리도 없습니다. 파일의 DNS 줄만 적용되며, 이 줄이 없는 파일은 첫 번째 문제 해결 과정에서 확인해야 할 유출 원인입니다. 서버 선택 기능도 없습니다. 파일 하나가 출구 하나에 해당하므로 출구를 바꾸려면 다른 파일을 사용해야 합니다. 파일은 계정 영역에서 생성하고 비공개로 보관하세요. WireGuard 파일에는 프로바이더가 여러분을 식별하는 데 사용하는 개인 키가 들어 있습니다.
이 방법은 서버, 헤드리스 머신 또는 클라이언트를 지원하지 않는 배포판에 적합합니다. 노트북에서는 클라이언트를 우선 사용하세요. 클라이언트가 제공하는 스위치는 구성 파일로는 구현할 수 없는 기능입니다.
작동하지 않을 때
터널은 연결되어 있지만 DNS가 여전히 인터넷 프로바이더로 전송됩니다
전형적인 Linux 유출입니다. DNS를 설정하지 않은 구성 파일은 systemd-resolved가 터널 외부에서 네트워크가 전달한 리졸버를 사용하게 합니다. resolvectl status를 실행하세요. 터널 인터페이스에 프로바이더의 리졸버가 표시되고 DNS 기본 경로를 전달해야 하며, 기본 경로에는 더하기 기호가 표시됩니다.
구성에 DNS 줄을 추가하거나 NetworkManager의 연결에서 DNS를 설정한 뒤 다시 연결하세요. 프로바이더 자체 클라이언트는 이 설정을 직접 적용하며, 이것이 클라이언트를 우선 사용해야 하는 이유 중 하나입니다.
터널이 끊기면 모든 작동이 멈춰 불편합니다
킬 스위치가 제 역할을 하는 것입니다. 터널이 끊기면 일반 네트워크로 조용히 되돌아가는 대신 연결이 끊깁니다. 스위치를 끄지 말고 다시 연결하세요.
한 네트워크에서 자주 끊기고 다른 곳에서는 거의 끊기지 않는다면 프로토콜을 한 번 바꿔 보고 더 가까운 출구 위치를 선택하세요. 해당 네트워크에서 어떤 프로토콜도 유지되지 않는다면 네트워크가 VPN 트래픽을 차단하는 것이며, 이 가이드에서는 더 다루지 않습니다.
클라이언트가 매번 sudo 또는 비밀번호를 요구합니다
네트워크 인터페이스 생성은 권한이 필요한 작업이며, 백그라운드 서비스를 설치하지 않는 클라이언트는 매번 요청해야 합니다. 대부분의 클라이언트는 root로 실행되는 데몬과 이에 연결되는 데스크톱 앱을 설치합니다. 반복되는 요청은 서비스가 실행 중이 아니거나 활성화되지 않았다는 뜻입니다.
프로바이더 지침에 있는 서비스 이름을 사용해 systemctl status로 상태를 확인하고, 부팅 시 시작되도록 활성화하세요.
테스트 페이지에 IPv6 주소가 표시됩니다
터널은 IPv4를 전달하지만 머신에는 터널 외부의 IPv6 경로가 여전히 있으므로, IPv6를 우선하는 트래픽이 VPN을 우회합니다. IPv6를 터널링하지 않는 프로바이더는 인터페이스에서 IPv6를 비활성화해야 하며, 더 나은 클라이언트는 이를 처리합니다.
파일에서 연결을 구성했다면 NetworkManager의 연결에서 IPv6를 비활성화하거나 sysctl로 끈 뒤 다시 테스트하세요. 두 번째 주소 체계를 열어 둔 터널은 반쪽짜리 터널입니다.
같은 절차, 다른 기기
다른 플랫폼들
모든 플랫폼은 한 페이지의 탭이 아니라 각자의 가이드를 가진다. 설치 프로그램이 열리는 순간부터 절차가 갈라지므로, 세 플랫폼에 한 번에 답하려는 페이지는 어느 것도 제대로 답하지 못한다.