Debian 12에서 WireGuard Point-to-Site VPN을 구성하는 방법

예시 시나리오: 마야는 카페에서 작업할 때 데비안 12 VPS를 개인 VPN 엔드포인트로 사용합니다. 그녀의 노트북은 암호화된 WireGuard 터널을 통해 VPS에 연결되고 IPv4 인터넷 트래픽을 해당 서버를 통해 전송해야 합니다. 이 예시는 실제 테스트 결과를 보고하는 것이 아니며, 아래에 표시된 공용 IP 주소, 키 및 터미널 출력은 예시 또는 대표적인 설정입니다.

이 설정은 지점 간 VPN(클라이언트 하나와 서버 하나)입니다. 데비안에서 제공하는 WireGuard 도구, 단일 피어, IPv4 포워딩 및 IPv4 NAT를 사용합니다. VPS에 공용 또는 포트 포워딩된 IPv4 주소가 있고, sudo 권한으로 관리할 수 있으며, UDP 포트 51820에 접근할 수 있다고 가정합니다. 이 가이드에서는 라우팅된 IPv6 또는 VPS 뒤의 사설 네트워크 구성은 다루지 않습니다.

주소와 접근 경로를 먼저 계획하세요.

이 예제에서는 서버와 Maya의 첫 번째 클라이언트에 10.8.0.0/24각각 다른 서브넷 마스크를 사용하여 VPN을 구성 합니다 . 클라이언트의 Wi-Fi, 사무실 또는 클라우드 네트워크와 겹치지 않는 서브넷을 사용하십시오. 서브넷 충돌이 발생하면 핸드셰이크가 성공하더라도 트래픽이 잘못된 경로로 전송될 수 있습니다.10.8.0.110.8.0.2

WireGuard는 공개 키 인증을 사용합니다. 서버는 클라이언트의 공개 키가 필요하고, 클라이언트는 서버의 공개 키가 필요합니다. 각 개인 키는 해당 키를 소유한 장치에 보관됩니다. Debian의 WireGuard 설명서에는 패키지 및 피어 설정 방법이 설명되어 있으며, WireGuard 빠른 시작 가이드에는 키 생성 및 연결 유지 동작에 대한 내용이 나와 있습니다. 자세한 내용은 Debian WireGuard 설명서 와 WireGuard 빠른 시작 가이드를 참조하십시오 .

데비안 12 서버 구성

1. 도구를 설치하세요

패키지 인덱스를 업데이트하고 WireGuard와 nftables를 설치하세요. nftables는 IPv4 마스커레이드 규칙 예제를 제공합니다. VPS에서 다음 명령어를 실행하세요.

sudo apt update
sudo apt install wireguard nftables

Debian은 메타패키지와 해당 도구를 통해 WireGuard를 패키징합니다 wireguard. 서버에서 이미 UFW, firewalld 또는 공급자 관리 규칙과 같은 방화벽 관리자를 사용하는 경우, 추가하기 전에 현재 활성화된 규칙 세트를 확인하십시오. 기존 방화벽 구성을 이 예제로 대체하지 마십시오.

데비안 터미널에 `apt update` 명령과 WireGuard 및 nftables 패키지 설치 과정이 표시됩니다.
터미널에 패키지 설치 단계가 표시됩니다. 패키지 출력은 미러 및 시스템 상태에 따라 다를 수 있습니다.

2. 공개적으로 접근 가능한 인터페이스를 찾고 착신 전환을 활성화합니다.

Debian이 외부 IPv4 주소에 접근하기 위해 사용하는 인터페이스가 무엇인지 라우팅 테이블에 문의하십시오.

ip route get 1.1.1.1

예시에서는 경로에 를 사용합니다 . 사용하시는 VPS에서는 또는 eth0와 같은 다른 이름이 표시될 수 있습니다 . 나중에 NAT 규칙에서 출력된 이름을 사용하십시오. 또한 서버의 공용 IPv4 주소 또는 DNS 이름을 기록해 두십시오. 서버가 라우터 뒤에 있는 경우, 해당 라우터에서 Debian 호스트로 UDP 51820 포트를 포워딩해야 합니다.ens3enp1s0

완전한 터널링을 위해서는 IPv4 포워딩이 필요합니다. 지금 활성화하고 재부팅 후에도 설정이 유지되도록 하십시오.

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sysctl net.ipv4.ip_forward

마지막 명령은 다음을 보고해야 합니다 net.ipv4.ip_forward = 1. 이 설정은 패킷 전달을 허용하지만, 그 자체로 방화벽을 열거나 NAT를 제공하지는 않습니다.

데비안 터미널에는 eth0을 통한 경로와 IPv4 포워딩이 활성화된 것이 표시됩니다.
경로 조회는 아웃바운드 IPv4에 사용되는 인터페이스를 식별하고, sysctl은 포워딩이 켜져 있는지 확인합니다.

3. 서버 키와 클라이언트 키 쌍을 생성합니다.

Debian 호스트에 제한적인 파일 권한으로 서버 키를 생성합니다.

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'

가능하면 클라이언트 장치에서 클라이언트 키 쌍을 생성하십시오. Linux 클라이언트의 경우 다음 wireguard-tools이 설치되어 있어야 합니다.

umask 077
wg genkey | tee client.key | wg pubkey > client.pub

휴대폰의 경우, WireGuard 공식 앱에서 새 터널을 생성하고 프로필 키를 자동으로 생성하도록 하세요. 클라이언트의 공개 키만 서버로 복사합니다. 이 키는 client.key절대 서버 설정 파일에 붙여넣거나 채팅으로 전송하지 말고, 반드시 비공개로 유지해야 합니다. 데비안 북웜(Debian Bookworm) wg(8)설명서 에서 주요 명령어와 인터페이스 필드에 대한 정보를 확인할 수 있습니다.

4. 서버 인터페이스를 생성하고 피어를 추가합니다.

다음 구조로 생성하십시오 /etc/wireguard/wg0.conf. 각 대문자 자리 표시자를 해당 실제 키로 바꾸십시오. 서버의 개인 키는 로컬에서 읽어오고 sudo cat /etc/wireguard/server.key, 클라이언트의 공개 키는 peer 섹션에 배치하십시오.

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

개인 키가 포함되어 있으므로 파일을 보호하십시오.

sudo chown root:root /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf

AllowedIPs = 10.8.0.2/32이 피어에 VPN 주소를 할당하고 다른 피어가 해당 주소를 사용하는 것을 방지합니다. 모든 추가 장치에 고유한 키 쌍과 와 같은 별도의 주소를 제공하십시오 10.8.0.3/32. 별도의 해지 또는 ID 관리가 필요한 경우 여러 장치에서 하나의 클라이언트 프로필을 재사용하지 마십시오.

데비안 터미널에 WireGuard 키 생성 및 클라이언트 피어와의 wg0 인터페이스가 표시됩니다.
서버 인터페이스에는 전용 터널 주소가 있는 피어 하나가 표시됩니다. 표시된 키 자료는 예시일 뿐입니다.

5. IPv4 NAT를 추가하고 WireGuard 포트를 허용합니다.

예시로 제시된 전체 IPv4 터널의 경우, 나가는 패킷은 10.8.0.0/24소스 NAT를 사용하여 공용 인터페이스를 통해 나가야 합니다. 서버의 기존 nftables 구성 또는 방화벽 관리자에 동일한 규칙을 추가하십시오. 다음은 해당 규칙을 보여주는 독립 실행형 nftables 표입니다. eth02단계에서 찾은 인터페이스로 교체하십시오.

table ip wg_nat {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    ip saddr 10.8.0.0/24 oifname "eth0" masquerade
  }
}

데비안의 nftables를 사용하는 경우 nftables.service, 부팅 시 서비스가 로드하는 구성에 테이블을 병합하고, sudo nft -c -f /etc/nftables.conf다시 로드하기 전에 전체 파일의 유효성을 검사하십시오. 적용하기 전에 현재 구성이 기존 규칙을 삭제하는지 또는 대체하는지 확인하십시오. NAT만으로는 트래픽을 차단하는 포워드 체인 정책을 재정의할 수 없습니다. wg0활성 방화벽에서 WAN 인터페이스로의 포워딩과 반환 트래픽을 허용해야 합니다. 데비안 nft(8)매뉴얼 에서 nftables 규칙 로딩 및 NAT 문에 대한 설명을 참조하십시오.

VPS 제공업체 방화벽과 호스트 방화벽 모두에서 인바운드 UDP 51820 포트를 허용하십시오. 이 WireGuard 터널에 대해 TCP 51820 포트는 열지 마십시오. 방화벽 정책을 변경하는 동안 SSH 액세스 규칙은 그대로 유지하고, 방화벽 재부팅으로 인해 연결이 끊어질 수 있는 경우 제공업체 콘솔 또는 다른 복구 경로를 사용하십시오.

nftables 구성 보기에서 eth0을 통해 VPN 서브넷 10.8.0.0/24에 대한 IPv4 마스킹이 표시됩니다.
이 규칙은 선택된 WAN 인터페이스를 통해 나가는 VPN IPv4 트래픽과 일치하며 마스커레이드를 적용합니다.

클라이언트를 구성하고 연결합니다.

6. 고객 프로필을 작성하세요

WireGuard 클라이언트 앱에서 새 터널을 생성하거나 Linux 클라이언트에 다음과 같은 구성을 저장하세요. 개인 키, 서버 공개 키 및 엔드포인트는 실제 값으로 바꿔야 합니다. 아래의 TEST-NET 주소는 예시일 뿐이며 실제 서버에 연결되지 않습니다.

[Interface]
Address = 10.8.0.2/32
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0IPv4 목적지로의 라우팅은 터널을 통해 이루어지므로, 이는 완전한 IPv4 터널 옵션입니다. WireGuard 서버 주소에만 도달하는 좁은 분할 터널의 경우, 10.8.0.0/24대신 를 사용하십시오. 서버 뒤의 LAN에 도달하려면 클라이언트의 설정에 해당 LAN의 실제 서브넷을 포함하고 AllowedIPs, 반환 경로 또는 적절한 NAT를 추가하고, 서버 방화벽을 통해 트래픽을 허용해야 합니다. 이러한 단계는 LAN 라우터에 따라 다르므로 이 예제에서는 다루지 않습니다.

PersistentKeepalive = 25NAT 뒤에 있는 클라이언트가 유휴 시간 후에도 연결 상태를 유지하도록 도와줍니다. 이 기능은 선택 사항이며, WireGuard 설명서에 따르면 대부분의 사용자는 필요하지 않지만 NAT 매핑이 열려 있어야 하는 유용한 간격으로 25초를 권장합니다. 이 DNS필드는 일부 클라이언트와 WireGuard 기반 클라이언트에서 지원됩니다 wg-quick. 앱에서 이 필드를 무시하는 경우 해당 앱 자체의 제어 기능을 통해 DNS를 설정하십시오.

클라이언트 구성 편집기에는 WireGuard 주소, 엔드포인트, 전체 IPv4 경로 및 유지 관리 필드가 표시됩니다.
클라이언트 프로필은 서버를 통해 IPv4를 라우팅합니다. TEST-NET 엔드포인트는 실제 주소가 아니라 자리 표시자입니다.

7. 터널을 시작하고 핸드셰이크를 확인하세요.

데비안 시스템에서 부팅 시 인터페이스를 활성화하려면 다음 명령을 사용하십시오.

sudo systemctl enable --now wg-quick@wg0
sudo wg show

UDP 51820 포트에 접속할 수 있게 되면 클라이언트 프로필을 가져오거나 활성화하십시오. 에서 wg show예상되는 피어가 나타나는지, latest handshake클라이언트가 트래픽을 전송한 후 업데이트되는지 확인하십시오. wg-quick(8)Debian Bookworm 설명서에는 systemd 유닛에서 사용하는 인터페이스 설정 도우미에 대한 설명이 있습니다.

핸드셰이크 실패는 우선 연결 가능성 또는 키 불일치를 나타냅니다. 엔드포인트 주소와 포트, UDP 방화벽 규칙, 클라이언트 프로필의 서버 공개 키, 클라이언트 공개 키 wg0.conf, 그리고 올바른 시스템 시간을 확인하십시오. 핸드셰이크 후에도 트래픽이 작동하지 않는 경우는 일반적으로 포워딩, NAT, 경로 중복 또는 방화벽 포워드 체인 규칙과 관련이 있습니다.

데비안 터미널에는 wg-quick 서비스가 활성화되어 있고 트래픽 카운터와 함께 피어 핸드셰이크가 표시됩니다.
서비스가 활성화되었으며 피어 디스플레이에는 핸드셰이크 및 전송 필드가 포함됩니다. 값은 예시일 뿐입니다.

8. 트래픽을 확인하고 IPv6 제한 사항을 이해하십시오.

클라이언트가 연결되면 먼저 서버의 터널 주소를 테스트한 다음 외부 IPv4 주소 확인 서비스에서 보이는 공용 IPv4 주소를 확인합니다.

ping -c 3 10.8.0.1
curl -4 https://ifconfig.me

ICMP가 허용되어 있다면 ping 테스트는 서버에 도달해야 합니다. 외부 IPv4 주소 확인 결과, 이 풀 터널 설정에서는 VPS의 공용 송신 주소가 표시되어야 합니다. 공용 주소가 변경되지 않으면 AllowedIPs포워딩 설정, NAT 인터페이스 이름, 방화벽의 포워딩 정책을 확인하십시오.

이 예시는 IPv4 전용입니다. AllowedIPs = 0.0.0.0/0IPv6 라우팅을 지원하지 않으므로 IPv6 연결이 가능한 클라이언트도 터널 외부로 IPv6 트래픽을 전송할 수 있습니다. 따라서 이 구성을 완벽한 이중 ​​스택 개인 정보 보호 터널로 설명해서는 안 됩니다. WireGuard를 통해 IPv6를 전송하려면 터널에 IPv6 주소를 할당하고 라우팅해야 하며, IPv6 포워딩을 활성화하고 적절한 방화벽 및 라우팅 규칙을 구성한 후, ::/0해당 경로가 종단 간 정상적으로 작동하는 경우에만 클라이언트를 추가해야 합니다. 제공업체별 지원 여부는 다를 수 있습니다. 그렇지 않은 경우, 분할 터널 정책을 신중하게 선택하고 클라이언트의 IPv6 동작을 확인하십시오.

일반적인 스마트폰 VPN 화면에는 활성화된 노트북 VPN 프로필과 서버 및 터널 주소 정보가 표시됩니다.
일반 VPN 클라이언트 프로필이 활성화되어 있으며 서버 엔드포인트와 터널 IP 주소가 표시됩니다. 제어 방식은 앱에 따라 다릅니다.
데비안 터미널에서 IPv4 주소 확인 결과와 WireGuard 서버로의 핑 테스트 성공 여부가 표시됩니다.
터미널은 IPv4 송신 주소를 확인하고 서버의 WireGuard 주소로 핑을 보냅니다. 출력은 예시입니다.

흔히 발생하는 문제점 및 간단한 최종 점검

  • 핸드셰이크가 없는 경우, 공급자 및 호스트 방화벽 모두에서 수신 UDP 51820 포트가 활성화되어 있는지, 엔드포인트의 공용 IP 또는 DNS, 그리고 각 측의 피어 공개 키가 확인되었는지 확인하십시오.
  • 핸드셰이크는 성공했지만 웹사이트가 로드되지 않습니다.net.ipv4.ip_forward=1 NAT 규칙이 실제 송신 인터페이스를 사용하고 방화벽이 전달된 트래픽을 허용하는지 확인하십시오 .
  • 일부 네트워크에서만 오류가 발생합니다. 로컬 네트워크 또는 원격 네트워크와 중복 되는지 확인하십시오 10.8.0.0/24. 필요한 경우 터널 번호를 다시 지정하고 피어와 방화벽 규칙을 함께 업데이트하십시오.
  • 재부팅 전까지는 정상적으로 작동합니다.wg-quick@wg0 방화벽 및 sysctl 설정이 활성화되어 있고 시스템의 정상적인 구성 과정에서 해당 설정이 유지되는지 확인하십시오 .
  • IPv6는 여전히 로컬 연결을 사용합니다. 이는 IPv4 전용 예제에서는 예상되는 동작입니다. 전체 터널 개인 정보 보호 기능을 사용하기 전에 IPv6 터널 경로를 구성하고 테스트하십시오.

설정을 완료하기 전에 서버 서비스가 활성화되어 있는지, wg show최근 핸드셰이크가 보고되고 전송 카운터가 증가하는지, 클라이언트가 서버에 연결할 수 있는지 10.8.0.1, IPv4 송신 확인에서 서버의 공용 주소가 보고되는지 확인하십시오. 영구 방화벽 및 포워딩 설정이 적용된 후에만 재부팅하고 위의 확인 절차를 반복하십시오. 추가 피어의 경우, 별도의 키 쌍과 고유한 터널 IP 주소를 발급한 다음, 피어 항목을 삭제하고 인터페이스를 재부팅하여 장치를 제거하십시오.

댓글 남기기

Debian 12에서 WireGuard Point-to-Site VPN을 구성하는 방법

Debian 12에서 WireGuard Point-to-Site VPN을 구성하는 방법

원격 클라이언트 한 명을 위해 Debian 12 기반 WireGuard VPN 서버를 설정합니다. 키, IPv4 포워딩, nftables NAT, 방화벽 액세스 및 연결 확인을 구성합니다.

CIS 규정 준수를 위한 데비안 12 보안 강화 단계별 가이드

CIS 규정 준수를 위한 데비안 12 보안 강화 단계별 가이드

신중한 CIS 벤치마크 워크플로를 통해 Debian 12 워크스테이션의 보안을 강화하십시오. 올바른 프로파일을 선택하고, 안전하게 패치를 적용하고, 서비스 및 액세스 권한을 검토하고, nftables를 구성하고, 증거를 문서화하십시오.

저사양 RAM VPS에서 Debian 12 사용 시 MySQL 메모리 부족 오류(OOM) 발생을 줄이는 방법

저사양 RAM VPS에서 Debian 12 사용 시 MySQL 메모리 부족 오류(OOM) 발생을 줄이는 방법

Debian 12에서 MySQL OOM(메모리 부족) 오류를 진단하고, VPS 메모리 제한을 확인하고, 스왑을 구성하고, 데이터베이스 메모리 및 동시 실행을 튜닝하는 방법을 안내합니다. 단, 만능 해결책을 제시하는 것은 아닙니다.

OSTree 기반의 불변 시스템으로 데비안 데스크톱을 구축하는 방법

OSTree 기반의 불변 시스템으로 데비안 데스크톱을 구축하는 방법

가상 머신에서 데비안 기반 OSTree 데스크톱을 생성하고 테스트하는 방법을 알아보세요. 여기에는 시스템 트리 준비, 부팅 통합, 배포 검사 및 롤백이 포함됩니다.

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

Configure an SSHFS boot mount in Debian with SSH keys, fstab, and systemd automount. Includes reboot checks, permissions, timeouts, and troubleshooting.

서울·경기도 2026년 10월 집 관리 체크리스트: 바닥난방·창문 틈새·건조·가을 미세먼지

서울·경기도 2026년 10월 집 관리 체크리스트: 바닥난방·창문 틈새·건조·가을 미세먼지

서울·경기도의 2026년 10월 집 관리법을 확인하세요. 바닥난방·보일러 안전 점검, 창틀 패킹과 틈바람, 실내 건조·가습기 관리, 가을 미세먼지 환기 요령을 정리하고 세입자와 집주인의 확인 범위, 기후 평년값과 단기예보의 차이도 설명합니다.

2026년 10월 서울·경기도 텃밭에 무엇을 심을까? 채소·허브·꽃과 주차별 재배 체크리스트

2026년 10월 서울·경기도 텃밭에 무엇을 심을까? 채소·허브·꽃과 주차별 재배 체크리스트

2026년 10월 서울과 경기도에서 심기 좋은 채소·허브·꽃을 정리했습니다. 기상청 평년값과 9월 29일 현재 예보를 구분해 직파, 모종 정식, 실내 파종, 첫서리 대비와 주차별 할 일을 안내합니다.

2026년에 알아야 할 팟캐스팅 트렌드: 초보자를 위한 로드맵

2026년에 알아야 할 팟캐스팅 트렌드: 초보자를 위한 로드맵

팟캐스팅이 처음이신가요? 2026년 비디오, 콘텐츠 검색, 스크립트, AI, 분석, 수익 창출을 좌우하는 트렌드와 실용적인 출시 계획을 알아보세요.

UGC 마스터클래스: 신뢰를 얻고 행동을 유도하는 사용자 생성 콘텐츠(UGC) 구축하기

UGC 마스터클래스: 신뢰를 얻고 행동을 유도하는 사용자 생성 콘텐츠(UGC) 구축하기

진정성을 잃지 않고 고객 및 크리에이터 콘텐츠를 발굴, 허가, 브리핑, 게시 및 측정하는 실용적인 UGC 마스터클래스입니다.

커뮤니티 구축이 새로운 마케팅인 이유와 그렇지 않은 경우

커뮤니티 구축이 새로운 마케팅인 이유와 그렇지 않은 경우

커뮤니티 구축은 신뢰, 고객 유지, 피드백 및 지지를 강화할 수 있지만 모든 마케팅 채널을 대체할 수는 없습니다. 장단점을 비교하여 적합한 모델을 선택하세요.