웹사이트 검색

Debian 11에서 WireGuard를 설정하는 방법


소개

테일스케일이 작동합니다.

WireGuard의 암호화는 피어 간에 암호화된 터널을 설정하기 위해 공개 및 개인 키에 의존합니다. WireGuard의 각 버전은 특정 암호화 암호 제품군을 사용하여 단순성, 보안 및 동료와의 호환성을 보장합니다.

이에 비해 IPSec과 같은 다른 VPN 소프트웨어는 전송 계층 보안(TLS) 및 인증서를 사용하여 시스템 간에 암호화된 터널을 인증하고 설정합니다. 다양한 버전의 TLS에는 수백 가지의 서로 다른 암호화 제품군 및 알고리즘에 대한 지원이 포함되어 있어 다양한 클라이언트를 지원할 수 있는 유연성이 뛰어나지만 TLS를 사용하는 VPN을 구성하는 데 더 많은 시간이 소요되고 복잡하며 오류가 발생하기 쉽습니다.

이 자습서에서는 Debian 11 서버에 WireGuard를 설정한 다음 IPv4 및 IPv6 연결(일반적으로 이중 스택 연결이라고 함)을 모두 사용하여 피어로 연결하도록 다른 시스템을 구성합니다. 또한 암호화된 P2P 터널에 VPN을 사용하는 것 외에도 게이트웨이 구성에서 WireGuard 서버를 통해 피어의 인터넷 트래픽을 라우팅하는 방법을 배웁니다.

이 자습서의 목적을 위해 다른 Debian 11 시스템을 WireGuard 서버에 대한 피어(클라이언트라고도 함)로 구성합니다. 이 시리즈의 후속 자습서에서는 Windows, macOS, Android 및 iOS 시스템과 장치에 WireGuard를 설치하고 실행하는 방법을 설명합니다.

참고: DigitalOcean Droplet에서 WireGuard를 설정할 계획이라면 많은 호스팅 제공업체와 마찬가지로 대역폭 초과 요금을 부과한다는 점에 유의하세요. 이러한 이유로 서버에서 처리하는 트래픽의 양을 염두에 두십시오. 자세한 내용은 이 페이지를 참조하십시오.

전제 조건

이 자습서를 따르려면 다음이 필요합니다.

  • 루트가 아닌 sudo 사용자와 방화벽이 활성화된 하나의 Debian 11 서버. 이를 설정하려면 Debian 11 자습서로 초기 서버 설정을 따를 수 있습니다. 이 가이드 전체에서 이를 WireGuard 서버라고 합니다.
  • WireGuard 서버에 연결하는 데 사용할 클라이언트 시스템이 필요합니다. 이 자습서에서는 이 컴퓨터를 WireGuard Peer라고 합니다. 이 자습서의 목적을 위해 로컬 컴퓨터를 WireGuard Peer로 사용하는 것이 좋지만 원하는 경우 원격 서버 또는 휴대폰을 클라이언트로 사용할 수 있습니다. 원격 시스템을 사용하는 경우 이 자습서의 뒷부분에 있는 모든 선택적 섹션을 따르십시오. 그렇지 않으면 시스템에서 잠글 수 있습니다.
  • WireGuard를 IPv6와 함께 사용하려면 해당 유형의 트래픽을 지원하도록 서버를 구성해야 합니다. WireGuard로 IPv6 지원을 활성화하고 DigitalOcean Droplet을 사용하는 경우 이 설명서 페이지 How to Enable IPv6 on Droplets를 참조하십시오. Droplet을 만들 때 또는 나중에 해당 페이지의 지침을 사용하여 IPv6 지원을 추가할 수 있습니다.

1단계 - WireGuard 설치 및 키 쌍 생성

이 튜토리얼의 첫 번째 단계는 서버에 WireGuard를 설치하는 것입니다. 시작하려면 WireGuard 서버의 패키지 색인을 업데이트하고 다음 명령을 사용하여 WireGuard를 설치하십시오. 이 세션에서 sudo를 처음 사용하는 경우 sudo 사용자의 암호를 제공하라는 메시지가 표시될 수 있습니다.

  1. sudo apt update
  2. sudo apt install wireguard

이제 WireGuard를 설치했으므로 다음 단계는 서버에 대한 개인 및 공개 키 쌍을 생성하는 것입니다. 내장된 wg genkeywg pubkey 명령을 사용하여 키를 생성한 다음 개인 키를 WireGuard의 구성 파일에 추가합니다.

기본적으로 파일은 서버의 모든 사용자가 읽을 수 있으므로 chmod 명령을 사용하여 방금 생성한 키에 대한 권한도 변경해야 합니다.

WireGuard용 개인 키를 생성하고 다음 명령을 사용하여 해당 권한을 변경합니다.

  1. wg genkey | sudo tee /etc/wireguard/private.key
  2. sudo chmod go= /etc/wireguard/private.key

sudo chmod go=... 명령은 루트 사용자만 개인 키에 액세스할 수 있도록 루트 사용자 이외의 사용자 및 그룹에 대한 파일에 대한 모든 권한을 제거합니다.

개인 키인 base64 인코딩 출력의 한 줄을 받아야 합니다. 명령의 tee 부분에서 나중에 참조할 수 있도록 출력 복사본도 /etc/wireguard/private.key 파일에 저장됩니다. 이 섹션의 뒷부분에서 WireGuard의 구성 파일에 추가해야 하므로 출력되는 개인 키를 주의해서 기록해 두십시오.

다음 단계는 개인 키에서 파생되는 해당 공개 키를 만드는 것입니다. 다음 명령을 사용하여 공개 키 파일을 만듭니다.

  1. sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

이 명령은 |(파이프) 연산자를 사용하여 함께 연결된 세 개의 개별 명령으로 구성됩니다.

  • sudo cat /etc/wireguard/private.key: 이 명령은 개인 키 파일을 읽고 표준 출력 스트림으로 출력합니다.
  • wg pubkey: 두 번째 명령은 첫 번째 명령의 출력을 표준 입력으로 사용하고 이를 처리하여 공개 키를 생성합니다.
  • sudo tee /etc/wireguard/public.key: 마지막 명령은 공개 키 생성 명령의 출력을 가져와 /etc/wireguard/public이라는 파일로 리디렉션합니다. 키.

명령을 실행하면 WireGuard 서버의 공개 키인 base64 인코딩 출력의 한 줄을 다시 받게 됩니다. 공개 키를 서버에 연결하는 모든 피어에 배포해야 하므로 참조용으로 어딘가에 복사합니다.

2단계 - IPv4 및 IPv6 주소 선택

이전 섹션에서는 WireGuard를 설치하고 서버에서 들어오고 나가는 트래픽을 암호화하는 데 사용할 키 쌍을 생성했습니다. 이 섹션에서는 서버에 대한 구성 파일을 만들고 서버가 재부팅될 때 자동으로 시작되도록 WireGuard를 설정합니다. 또한 WireGuard 서버 및 피어와 함께 사용할 개인 IPv4 및 IPv6 주소를 정의합니다.

IPv4 및 IPv6 주소를 모두 사용하려는 경우 이 두 섹션을 모두 따르십시오. 그렇지 않으면 VPN의 네트워크 요구 사항에 해당하는 섹션의 지침을 따르십시오.

2(a)단계 - IPv4 범위 선택

WireGuard 서버를 IPv4 피어와 함께 사용하는 경우 서버에는 클라이언트 및 터널 인터페이스에 사용할 프라이빗 IPv4 주소 범위가 필요합니다. 다음 예약된 주소 블록에서 임의의 범위의 IP 주소를 선택할 수 있습니다(이러한 블록이 할당되는 방법에 대해 자세히 알아보려면 RFC 1918 사양을 방문하십시오).

  • 10.0.0.0에서 10.255.255.255(10/8 접두사)
  • 172.16.0.0에서 172.31.255.255(172.16/12 접두어)
  • 192.168.0.0에서 192.168.255.255로(192.168/16 접두사)

이 자습서의 목적을 위해 예약된 IP의 첫 번째 범위에서 IP 주소 블록으로 10.8.0.0/24를 사용합니다. 이 범위는 최대 255개의 서로 다른 피어 연결을 허용하며 일반적으로 다른 비공개 IP 범위와 주소가 겹치거나 충돌하지 않아야 합니다. 이 예제 범위가 네트워크와 호환되지 않는 경우 네트워크 구성에서 작동하는 주소 범위를 자유롭게 선택하십시오.

WireGuard 서버는 개인 터널 IPv4 주소 범위에서 단일 IP 주소를 사용합니다. 여기서는 10.8.0.1/24를 사용하지만 10.8.0.1에서 10.8.0.255 범위의 모든 주소를 사용할 수 있습니다. 10.8.0.1/24와 다른 것을 사용하는 경우 선택한 IP 주소를 기록해 둡니다. 이 IPv4 주소를 3단계 - WireGuard 서버 구성 생성에서 정의한 구성 파일에 추가합니다.

2(b)단계 - IPv6 범위 선택

WireGuard를 IPv6와 함께 사용하는 경우 RFC 4193의 알고리즘을 기반으로 고유한 로컬 IPv6 유니캐스트 주소 접두사를 생성해야 합니다. WireGuard 서버와 함께 사용하는 주소는 가상 터널 인터페이스와 연결됩니다. 프라이빗 IPv6 주소의 예약된 fd00::/8 블록 내에서 임의의 고유한 IPv6 접두사를 생성하려면 몇 가지 단계를 완료해야 합니다.

RFC에 따르면 고유한 IPv6 접두사를 얻기 위해 권장되는 방법은 일련 번호 또는 장치 ID와 같은 시스템의 고유한 식별 값과 시간을 결합하는 것입니다. 그런 다음 해당 값은 해시되고 잘려서 예약된 개인 IP 블록 내에서 고유한 주소로 사용할 수 있는 비트 집합이 생성됩니다. fd00::/8.

WireGuard 서버에 대한 IPv6 범위 생성을 시작하려면 다음 명령과 함께 date 유틸리티를 사용하여 64비트 타임스탬프를 수집합니다.

  1. date +%s%N

초(date 명령의 %s) 및 나노초(%N)인 다음과 같은 숫자를 받게 됩니다. 코드>) 1970-01-01 00:00:00 UTC 이후:

Output
1650301699497770167

이 섹션의 뒷부분에서 사용할 값을 어딘가에 기록하십시오. 다음으로 /var/lib/dbus/machine-id 파일에서 서버의 machine-id 값을 복사합니다. 이 식별자는 시스템에 고유하며 서버가 존재하는 한 변경되지 않아야 합니다.

  1. cat /var/lib/dbus/machine-id

다음과 같은 출력이 표시됩니다.

/var/lib/dbus/machine-id
610cef4946ed46da8f71dba9d66c67fb

이제 타임스탬프를 machine-id와 결합하고 SHA-1 알고리즘을 사용하여 결과 값을 해시해야 합니다. 이 명령은 다음 형식을 사용합니다.

printf <timestamp><machine-id> | sha1sum

타임스탬프 및 머신 ID 값을 대체하는 명령을 실행합니다.

  1. printf 1650301699497770167610cef4946ed46da8f71dba9d66c67fb | sha1sum

다음과 같은 해시 값을 받게 됩니다.

Output
442adea1488d96388dae9ab816045b24609a6c18 -

sha1sum 명령의 출력은 16진수이므로 출력은 두 문자를 사용하여 데이터의 단일 바이트를 나타냅니다. 예를 들어 예제 출력의 4f26은 해시된 데이터의 처음 두 바이트입니다.

RFC의 알고리즘에는 해시된 출력의 최하위(후행) 40비트 또는 5바이트만 필요합니다. cut 명령을 사용하여 해시에서 마지막 5개의 16진수 인코딩 바이트를 인쇄합니다.

  1. printf 442adea1488d96388dae9ab816045b24609a6c18 | cut -c 31-

-c 인수는 지정된 문자 집합만 선택하도록 cut 명령에 지시합니다. 31- 인수는 cut에게 위치 31부터 입력 줄의 끝까지 모든 문자를 인쇄하도록 지시합니다.

다음과 같은 출력을 받아야 합니다.

Output
24609a6c18

이 예제 출력에서 바이트 집합은 다음과 같습니다. 24 60 9a 6c 18 .

이제 생성한 5바이트에 fd 접두사를 추가하여 고유한 IPv6 네트워크 접두사를 구성할 수 있습니다. 가독성을 위해 2바이트마다 : 콜론으로 구분합니다. 고유한 접두사의 각 서브넷은 총 18,446,744,073,709,551,616개의 가능한 IPv6 주소를 보유할 수 있으므로 편의를 위해 서브넷을 /64의 표준 크기로 제한할 수 있습니다.

이전에 /64 서브넷 크기로 생성된 바이트를 사용하면 결과 접두사는 다음과 같습니다.

Unique Local IPv6 Address Prefix
fd24:609a:6c18::/64

fd24:609a:6c18::/64 범위는 서버 및 피어의 WireGuard 터널 인터페이스에 개별 IP 주소를 할당하는 데 사용할 것입니다. 서버에 IP를 할당하려면 마지막 :: 문자 뒤에 1을 추가합니다. 결과 주소는 fd24:609a:6c18::1/64입니다. 피어는 범위의 모든 IP를 사용할 수 있지만 일반적으로 피어를 추가할 때마다 값을 하나씩 증가시킵니다. fd24:609a:6c18::2/64. IP를 기록하고 이 자습서의 다음 섹션에서 WireGuard 서버 구성을 진행합니다.

3단계 - WireGuard 서버 구성 생성

WireGuard 서버 구성을 생성하기 전에 다음 정보가 필요합니다.

  1. 1단계 — WireGuard 설치 및 키 쌍 생성에서 사용 가능한 개인 키가 있는지 확인하십시오.\n
  2. IPv4와 함께 WireGuard를 사용하는 경우 2단계(a) — IPv4 범위 선택에서 서버에 대해 선택한 IP 주소가 필요합니다. 이 예에서는 10.8.0.1/24<입니다. /마크>.
  3. WireGuard를 IPv6와 함께 사용하는 경우 2(b)단계 — IPv6 범위 선택에서 생성한 서버의 IP 주소가 필요합니다. 이 예에서 IP는 fd24:609a:6c18::1/64입니다.

필요한 개인 키와 IP 주소가 있으면 nano 또는 다음 명령을 실행하여 원하는 편집기를 사용하여 새 구성 파일을 만듭니다.

  1. sudo nano /etc/wireguard/wg0.conf

강조 표시된 base64_encoded_private_key_goes_here 값 대신 개인 키를 대체하고 Address 줄의 IP 주소로 파일에 다음 줄을 추가합니다. 다른 포트에서 WireGuard를 사용하려면 ListenPort 줄을 변경할 수도 있습니다.

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_private_key_goes_here Address = 10.8.0.1/24, fd24:609a:6c18::1/64 ListenPort = 51820 SaveConfig = true

SaveConfig 줄은 WireGuard 인터페이스가 종료될 때 모든 변경 사항이 구성 파일에 저장되도록 합니다.

/etc/wireguard/wg0.conf 파일을 저장하고 닫습니다. nano를 사용하는 경우 CTRL+X를 누른 다음 YENTER를 눌러 확인할 수 있습니다. 이제 WireGuard VPN 서버 사용 계획에 따라 구축할 수 있는 초기 서버 구성이 있습니다.

4단계 - WireGuard 서버의 네트워크 구성 조정

서버의 서비스에만 액세스하기 위해 WireGuard를 사용하여 피어를 WireGuard 서버에 연결하는 경우 이 섹션을 완료할 필요가 없습니다. WireGuard 서버를 통해 WireGuard 피어의 인터넷 트래픽을 라우팅하려면 자습서의 이 섹션에 따라 IP 전달을 구성해야 합니다.

전달을 구성하려면 nano 또는 원하는 편집기를 사용하여 Wireguard Server에서 /etc/sysctl.conf 파일을 엽니다.

  1. sudo nano /etc/sysctl.conf

WireGuard와 함께 IPv4를 사용하는 경우 파일 맨 아래에 다음 줄을 추가합니다.

net.ipv4.ip_forward=1

WireGuard와 함께 IPv6을 사용하는 경우 파일 맨 아래에 다음 줄을 추가합니다.

net.ipv6.conf.all.forwarding=1

IPv4와 IPv6을 모두 사용하는 경우 두 줄을 모두 포함해야 합니다. 완료되면 파일을 저장하고 닫습니다.

파일을 읽고 현재 터미널 세션에 대한 새 값을 로드하려면 다음을 실행하십시오.

  1. sudo sysctl -p
Output
net.ipv6.conf.all.forwarding = 1 net.ipv4.ip_forward = 1

이제 WireGuard 서버는 가상 VPN 이더넷 장치에서 들어오는 트래픽을 서버의 다른 장치로, 거기에서 공용 인터넷으로 전달할 수 있습니다. 이 구성을 사용하면 서버의 IP 주소를 통해 WireGuard 피어의 모든 웹 트래픽을 라우팅할 수 있으며 클라이언트의 공용 IP 주소는 효과적으로 숨겨집니다.

그러나 트래픽이 서버를 통해 올바르게 라우팅되기 전에 일부 방화벽 규칙을 구성해야 합니다. 이러한 규칙은 WireGuard 서버 및 피어와 주고받는 트래픽이 적절하게 흐르도록 합니다.

5단계 - WireGuard 서버의 방화벽 구성

이 섹션에서는 WireGuard 서버의 구성을 편집하여 서버와 클라이언트 사이의 트래픽이 올바르게 라우팅되도록 하는 방화벽 규칙을 추가합니다. 이전 섹션과 마찬가지로 VPN으로 제한된 리소스에 액세스하기 위해 컴퓨터 간 연결에 WireGuard VPN만 사용하는 경우 이 단계를 건너뜁니다.

서버의 방화벽을 통해 WireGuard VPN 트래픽을 허용하려면 클라이언트 연결을 올바르게 라우팅하기 위해 즉석에서 동적 NAT(네트워크 주소 변환)를 제공하는 iptables 개념인 매스커레이딩을 활성화해야 합니다.

먼저 ip route 하위 명령을 사용하여 WireGuard 서버의 공용 네트워크 인터페이스를 찾습니다.

  1. ip route list default

공용 인터페이스는 "dev\라는 단어 뒤에 오는 이 명령의 출력 내에서 발견되는 문자열입니다. 예를 들어 이 결과는 아래에 강조 표시된 eth0라는 인터페이스를 보여줍니다.

Output
default via 203.0.113.1 dev eth0 proto static

다음 단계에서 iptables 규칙에 추가할 것이므로 장치 이름을 기록해 두십시오.

WireGuard 서버에 방화벽 규칙을 추가하려면 nano 또는 원하는 편집기를 사용하여 /etc/wireguard/wg0.conf 파일을 다시 엽니다.

  1. sudo nano /etc/wireguard/wg0.conf

SaveConfig=true 줄 뒤의 파일 맨 아래에 다음 줄을 붙여넣습니다.

/etc/wireguard/wg0.conf
. . . PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

PostUp 라인은 WireGuard 서버가 가상 VPN 터널을 시작할 때 실행됩니다. 여기 예제에서는 3개의 ufwiptables 규칙을 추가합니다.

  • ufw route allow in on wg0 out on eth0 - 이 규칙은 wg0 VPN에서 들어오는 IPv4 및 IPv6 트래픽 전달을 허용합니다. 서버의 eth0 네트워크 인터페이스에 대한 인터페이스. 이전 섹션에서 구성한 net.ipv4.ip_forwardnet.ipv6.conf.all.forwarding sysctl 값과 함께 작동합니다.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE - 이 규칙은 가장을 구성하고 wg0 VPN 인터페이스에 들어오는 IPv4 트래픽을 재작성하여 WireGuard Server의 공개 IPv4 주소에서 직접 발생한 것처럼 보입니다.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE - 이 규칙은 가장을 구성하고 wg0 VPN 인터페이스에 들어오는 IPv6 트래픽을 재작성하여 WireGuard Server의 공개 IPv6 주소에서 직접 발생한 것처럼 보입니다.

PreDown 규칙은 WireGuard 서버가 가상 VPN 터널을 중지할 때 실행됩니다. 이러한 규칙은 PostUp 규칙의 반대이며 VPN이 중지될 때 VPN 인터페이스에 대한 전달 및 위장 규칙을 실행 취소하는 기능을 합니다.

두 경우 모두 VPN에 적합한 IPv4 및 IPv6 규칙을 포함하거나 제외하도록 구성을 편집합니다. 예를 들어 IPv4만 사용하는 경우 ip6tables 명령으로 행을 제외할 수 있습니다.

반대로 IPv6만 사용하는 경우 ip6tables 명령만 포함하도록 구성을 편집합니다. ufw 줄은 IPv4 및 IPv6 네트워크 조합에 대해 존재해야 합니다. 완료되면 파일을 저장하고 닫습니다.

WireGuard 서버에서 방화벽을 구성하는 마지막 부분은 WireGuard UDP 포트 자체에서 들어오고 나가는 트래픽을 허용하는 것입니다. 서버의 /etc/wireguard/wg0.conf 파일에서 포트를 변경하지 않은 경우 열 포트는 51820입니다. 구성을 편집할 때 다른 포트를 선택한 경우 다음 UFW 명령에서 대체해야 합니다.

전제 조건 자습서를 따를 때 SSH 포트를 여는 것을 잊은 경우 여기에도 추가하십시오.

  1. sudo ufw allow 51820/udp
  2. sudo ufw allow OpenSSH

참고: 다른 방화벽을 사용 중이거나 UFW 구성을 사용자 정의한 경우 추가 방화벽 규칙을 추가해야 할 수 있습니다. 예를 들어 VPN 연결을 통해 모든 네트워크 트래픽을 터널링하기로 결정한 경우 포트 53 트래픽이 DNS 요청에 허용되고 80 와 같은 포트가 허용되는지 확인해야 합니다. 및 443은 각각 HTTP 및 HTTPS 트래픽에 대한 것입니다. VPN을 통해 사용 중인 다른 프로토콜이 있는 경우 이에 대한 규칙도 추가해야 합니다.

이러한 규칙을 추가한 후 UFW를 비활성화했다가 다시 활성화하여 UFW를 다시 시작하고 수정한 모든 파일에서 변경 사항을 로드합니다.

  1. sudo ufw disable
  2. sudo ufw enable

ufw status 명령을 실행하여 규칙이 적용되었는지 확인할 수 있습니다. 실행하면 다음과 같은 출력이 표시됩니다.

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- 51280/udp ALLOW Anywhere 22/tcp ALLOW Anywhere 51280/udp (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6)

이제 WireGuard 서버가 피어에 대한 전달 및 위장을 포함하여 VPN의 트래픽을 올바르게 처리하도록 구성되었습니다. 방화벽 규칙이 있으면 WireGuard 서비스 자체를 시작하여 피어 연결을 수신 대기할 수 있습니다.

6단계 - WireGuard 서버 시작

WireGuard는 내장 wg-quick 스크립트를 사용하여 systemd 서비스로 실행되도록 구성할 수 있습니다. wg 명령을 수동으로 사용하여 VPN을 사용하려고 할 때마다 터널을 생성할 수 있지만 이렇게 하면 반복적이고 오류가 발생하기 쉬운 수동 프로세스가 됩니다. 대신 systemctl을 사용하여 wg-quick 스크립트의 도움으로 터널을 관리할 수 있습니다.

systemd 서비스를 사용한다는 것은 서버가 실행되는 동안 언제든지 VPN에 연결할 수 있도록 부팅 시 시작하도록 WireGuard를 구성할 수 있음을 의미합니다. 이렇게 하려면 systemctl에 추가하여 정의한 wg0 터널에 대해 wg-quick 서비스를 활성화합니다.

  1. sudo systemctl enable wg-quick@wg0.service

이 명령은 서비스 이름의 일부로 터널 wg0 장치 이름의 이름을 지정합니다. 이 이름은 /etc/wireguard/wg0.conf 구성 파일에 매핑됩니다. 이 이름 지정 방식은 서버를 사용하려는 만큼 별도의 VPN 터널을 생성할 수 있음을 의미합니다.

예를 들어 터널 장치와 prod의 이름이 있을 수 있으며 해당 구성 파일은 /etc/wireguard/prod.conf가 됩니다. 각 터널 구성에는 서로 다른 IPv4, IPv6 및 클라이언트 방화벽 설정이 포함될 수 있습니다. 이러한 방식으로 각각 고유한 IP 주소와 라우팅 규칙이 있는 서로 다른 여러 피어 연결을 지원할 수 있습니다.

이제 서비스를 시작합니다.

  1. sudo systemctl start wg-quick@wg0.service

다음 명령을 사용하여 WireGuard 서비스가 활성화되어 있는지 다시 확인하십시오. 출력에 active (running)가 표시되어야 합니다.

  1. sudo systemctl status wg-quick@wg0.service
Output
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2022-04-18 17:22:13 UTC; 2s ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 98834 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 98834 (code=exited, status=0/SUCCESS) CPU: 193ms Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] wg setconf wg0 /dev/fd/63 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -4 address add 10.8.0.1/24 dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -6 address add fd24:609a:6c18::1/64 dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip link set mtu 1420 up dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ufw route allow in on wg0 out on ens3 Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added (v6) Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE Apr 18 17:22:13 thats-my-jam systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

출력에는 가상 wg0 장치를 만들고 구성 파일에 추가한 IPv4 및 IPv6 주소를 할당하는 데 사용되는 ip 명령이 표시됩니다. 이러한 규칙을 사용하여 터널 문제를 해결하거나 VPN 인터페이스를 수동으로 구성하려는 경우 wg 명령 자체를 사용할 수 있습니다.

서버가 구성되어 실행 중이면 다음 단계는 클라이언트 시스템을 WireGuard 피어로 구성하고 WireGuard 서버에 연결하는 것입니다.

7단계 - WireGuard 피어 구성

WireGuard 피어 구성은 WireGuard 서버 설정과 유사합니다. 클라이언트 소프트웨어가 설치되면 공개 키와 개인 키 쌍을 생성하고 피어의 IP 주소를 결정하고 피어의 구성 파일을 정의한 다음 wg-를 사용하여 터널을 시작합니다. 빠른 스크립트.

다음 단계를 사용하여 키 쌍 및 구성을 생성하여 VPN에 원하는 만큼 피어를 추가할 수 있습니다. VPN에 여러 피어를 추가하는 경우 충돌을 방지하기 위해 개인 IP 주소를 추적해야 합니다.

WireGuard 피어를 구성하려면 다음 apt 명령을 사용하여 WireGuard 패키지가 설치되어 있는지 확인하십시오. WireGuard 피어에서 다음을 실행합니다.

  1. sudo apt update
  2. sudo apt install wireguard

WireGuard 피어의 키 쌍 생성

다음으로 서버에서 사용한 것과 동일한 단계를 사용하여 피어에서 키 쌍을 생성해야 합니다. 피어 역할을 할 로컬 시스템 또는 원격 서버에서 계속 진행하고 다음 명령을 사용하여 피어의 개인 키를 생성합니다.

  1. wg genkey | sudo tee /etc/wireguard/private.key
  2. sudo chmod go= /etc/wireguard/private.key

다시 한 줄의 개인 키인 base64 인코딩 출력을 받게 됩니다. 출력 사본도 /etc/wireguard/private.key에 저장됩니다. 이 섹션의 뒷부분에서 WireGuard 피어의 구성 파일에 추가해야 하므로 출력되는 개인 키를 주의해서 기록해 두십시오.

다음으로 다음 명령을 사용하여 공개 키 파일을 만듭니다.

  1. sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

WireGuard Peer의 공개 키인 base64 인코딩 출력의 한 줄을 다시 받게 됩니다. 암호화된 연결을 설정하려면 공개 키를 WireGuard 서버에 배포해야 하므로 참조용으로 어딘가에 복사하십시오.

WireGuard 피어의 구성 파일 생성

이제 키 쌍이 있으므로 WireGuard Server에 대한 연결을 설정하는 데 필요한 모든 정보가 포함된 피어에 대한 구성 파일을 생성할 수 있습니다.

구성 파일에 대한 몇 가지 정보가 필요합니다.

  • 피어에서 생성한 base64 인코딩 개인 키입니다.\n
  • WireGuard 서버에서 정의한 IPv4 및 IPv6 주소 범위.\n
  • WireGuard 서버의 base64 인코딩 공개 키입니다.
  • WireGuard 서버의 공용 IP 주소 및 포트 번호입니다. 일반적으로 이것은 IPv4 주소이지만 서버에 IPv6 주소가 있고 클라이언트 시스템에 인터넷에 대한 IPv6 연결이 있는 경우 IPv4 대신 이것을 사용할 수 있습니다.\n

이 모든 정보를 가지고 nano 또는 선호하는 편집기를 사용하여 WireGuard Peer 시스템에서 새 /etc/wireguard/wg0.conf 파일을 엽니다.

  1. sudo nano /etc/wireguard/wg0.conf

파일에 다음 줄을 추가하고 필요에 따라 다양한 데이터를 강조 표시된 섹션으로 대체합니다.

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.**2**/24 Address = fd24:609a:6c18::**2**/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd24:609a:6c18::/64 Endpoint = 203.0.113.1:51820

첫 번째 Address 줄이 이전에 선택한 10.8.0.0/24 서브넷의 IPv4 주소를 어떻게 사용하는지 확인하십시오. 이 IP 주소는 서버의 IP와 다른 한 서브넷의 모든 주소가 될 수 있습니다. 피어를 추가할 때마다 주소를 1씩 증가시키는 것이 일반적으로 IP를 할당하는 가장 쉬운 방법입니다.

마찬가지로 두 번째 Address 행이 이전에 생성한 서브넷의 IPv6 주소를 사용하고 서버 주소를 1씩 증가시키는 방법에 주목하십시오. 다시 말하지만, 다른 주소를 사용하기로 결정한 경우 범위의 모든 IP가 유효합니다.

파일의 다른 주목할만한 부분은 마지막 AllowedIPs 행입니다. 이 두 IPv4 및 IPv6 범위는 대상 시스템에 어느 한 범위의 IP 주소가 있는 경우 VPN을 통해서만 트래픽을 보내도록 피어에 지시합니다. AllowedIPs 지시문을 사용하여 피어의 VPN이 VPN의 다른 피어 및 서비스에만 연결하도록 제한하거나 VPN을 통해 모든 트래픽을 터널링하고 WireGuard 서버를 사용하도록 설정을 구성할 수 있습니다. 게이트웨이로.

IPv4만 사용하는 경우 후행 fd24:609a:6c18::/64 범위(, 쉼표 포함)를 생략합니다. 반대로 IPv6만 사용하는 경우 fd24:609a:6c18::/64 접두사만 포함하고 10.8.0.0/24 IPv4 범위는 제외합니다.

두 경우 모두 VPN을 통해 피어의 모든 트래픽을 전송하고 WireGuard 서버를 모든 트래픽의 게이트웨이로 사용하려는 경우 전체 트래픽을 나타내는 0.0.0.0/0을 사용할 수 있습니다. IPv4 주소 공간 및 전체 IPv6 주소 공간에 대한 ::/0.

(선택 사항) 터널을 통해 모든 트래픽을 라우팅하도록 피어 구성

0.0.0.0/0 또는 ::/0 경로를 사용하여 터널을 통해 모든 피어의 트래픽을 라우팅하도록 선택했고 피어가 원격 시스템인 경우 이 섹션의 단계를 완료해야 합니다. 피어가 로컬 시스템인 경우 이 섹션을 건너뛰는 것이 가장 좋습니다.

SSH 또는 공용 IP 주소를 사용하는 다른 프로토콜을 통해 액세스하는 원격 피어의 경우 피어의 wg0.conf 파일에 몇 가지 추가 규칙을 추가해야 합니다. 이러한 규칙은 연결될 때 터널 외부에서 피어 시스템에 계속 연결할 수 있도록 합니다. 그렇지 않으면 터널이 설정될 때 일반적으로 공용 네트워크 인터페이스에서 처리되는 모든 트래픽이 wg0 터널 인터페이스를 우회하도록 올바르게 라우팅되지 않아 원격 시스템에 액세스할 수 없게 됩니다.

먼저 피어 시스템이 기본 게이트웨이로 사용하는 IP 주소를 결정해야 합니다. 다음 ip route 명령을 실행합니다.

  1. ip route list table main default

다음과 같은 출력이 표시됩니다.

Output
default via 203.0.113.1 dev eth0 proto static

나중에 사용할 수 있도록 게이트웨이의 강조 표시된 IP 주소 203.0.113.1와 장치 eth0를 기록해 둡니다. 장치 이름이 다를 수 있습니다. 그렇다면 다음 명령에서 eth0 대신 이를 대체하십시오.

다음으로 ip address show 명령으로 장치를 검사하여 피어 시스템의 공용 IP를 찾습니다.

  1. ip -brief address show eth0

다음과 같은 출력이 표시됩니다.

Output
eth0 UP 203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

이 예제 출력에서 강조 표시된 203.0.113.5 IP(후행 /20 없음)는 에 할당된 공용 주소입니다. WireGuard 피어 구성에 추가해야 하는 >eth0 장치.

이제 nano 또는 원하는 편집기로 WireGuard Peer의 /etc/wireguard/wg0.conf 파일을 엽니다.

  1. sudo nano /etc/wireguard/wg0.conf

[Peer] 줄 앞에 다음 4줄을 추가합니다.

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

이 라인은 사용자 지정 라우팅 규칙을 만들고 피어 시스템에 대한 공용 트래픽이 기본 게이트웨이를 사용하도록 사용자 지정 경로를 추가합니다.

  • PostUp = ip rule add table 200 from 203.0.113.5 - 이 명령은 200 번호가 지정된 테이블에서 라우팅 항목을 확인하는 규칙을 만듭니다. IP가 피어 시스템의 공용 203.0.113.5 주소와 일치할 때.
  • PostUp = ip route add table 200 default via 203.0.113.1 - 이 명령은 200 테이블에서 처리 중인 모든 트래픽이 WireGuard 인터페이스 대신 라우팅에 203.0.113.1 게이트웨이를 사용하십시오.

PreDown 줄은 터널이 종료될 때 사용자 지정 규칙과 경로를 제거합니다.

참고: 테이블 번호 200은 이러한 규칙을 구성할 때 임의적입니다. 2에서 252 사이의 값을 사용하거나 /etc/iproute2/rt_tables 파일에 레이블을 추가한 다음 숫자 값 대신 이름을 참조하여 사용자 지정 이름을 사용할 수 있습니다.

Linux에서 라우팅 테이블이 작동하는 방법에 대한 자세한 내용은 Linux를 사용한 IP 계층 네트워크 관리 가이드를 참조하십시오.

VPN을 통해 모든 피어의 트래픽을 라우팅하는 경우 5단계 — WireGuard 서버의 방화벽 구성에서 WireGuard 서버에 올바른 sysctliptables 규칙을 구성했는지 확인하십시오. .

(선택 사항) WireGuard 피어의 DNS 확인자 구성

WireGuard 서버를 모든 피어의 트래픽에 대한 VPN 게이트웨이로 사용하는 경우 DNS 확인자를 지정하는 줄을 [Interface] 섹션에 추가해야 합니다. 이 설정을 추가하지 않으면 DNS 요청이 VPN에 의해 보호되지 않거나 ISP(인터넷 서비스 공급자) 또는 기타 제3자에게 공개될 수 있습니다.

WireGuard를 사용하여 VPN 네트워크 또는 피어 투 피어 구성의 리소스에 액세스하는 경우에만 이 섹션을 건너뛸 수 있습니다.

피어 구성에 DNS 확인자를 추가하려면 먼저 WireGuard 서버가 사용 중인 DNS 서버를 확인합니다. WireGuard 서버에서 다음 명령을 실행하여 이 예제와 다른 경우 eth0 대신 이더넷 장치 이름을 대체합니다.

  1. resolvectl dns eth0

다음과 같은 출력을 받아야 합니다.

Output
Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

출력되는 IP 주소는 서버가 사용 중인 DNS 해석기입니다. 필요에 따라 이들 중 일부 또는 전부를 사용하거나 IPv4 또는 IPv6만 사용하도록 선택할 수 있습니다. 사용할 리졸버를 기록해 둡니다.

다음으로 선택한 확인자를 WireGuard Peer의 구성 파일에 추가해야 합니다. WireGuard Peer로 돌아가 nano 또는 원하는 편집기를 사용하여 /etc/wireguard/wg0.conf 파일을 엽니다.

  1. sudo nano /etc/wireguard/wg0.conf

[Peer] 줄 앞에 다음을 추가합니다.

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

다시 말하지만 IPv4 및 IPv6에 대한 기본 설정 또는 요구 사항에 따라 필요에 따라 목록을 편집할 수 있습니다.

다음 단계에서 VPN에 연결되면 DNS leak test.com과 같은 사이트를 사용하여 VPN을 통해 DNS 쿼리를 보내고 있는지 확인할 수 있습니다.

서버에서 실행한 것처럼 resolvectl dns 명령으로 피어가 구성된 확인자를 사용하고 있는지 확인할 수도 있습니다. VPN 터널에 대해 구성한 DNS 확인자를 표시하는 다음과 같은 출력을 받아야 합니다.

Output
Global: 67.207.67.2 67.207.67.3 . . .

이러한 모든 DNS 해석기 설정이 완료되면 이제 피어의 공개 키를 서버에 추가하고 피어에서 WireGuard 터널을 시작할 준비가 되었습니다.

8단계 - 피어의 공개 키를 WireGuard 서버에 추가

피어를 서버에 연결하기 전에 피어의 공개 키를 WireGuard 서버에 추가하는 것이 중요합니다. 이 단계를 통해 VPN을 통해 트래픽을 연결하고 라우팅할 수 있습니다. 이 단계를 완료하지 않으면 WireGuard 서버는 피어가 터널을 통해 트래픽을 보내거나 받는 것을 허용하지 않습니다.

다음을 실행하여 WireGuard Peer에 대해 base64로 인코딩된 공개 키의 복사본이 있는지 확인합니다.

  1. sudo cat /etc/wireguard/public.key
Output
PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

이제 WireGuard Server에 로그인하고 다음 명령을 실행합니다.

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd24:609a:6c18::2

명령의 allowed-ips 부분은 쉼표로 구분된 IPv4 및 IPv6 주소 목록을 사용합니다. 피어가 자신에게 할당할 수 있는 IP 주소를 제한하려는 경우 개별 IP를 지정하거나 피어가 VPN 범위의 모든 IP 주소를 사용할 수 있는 경우 예제와 같은 범위를 지정할 수 있습니다. 또한 두 피어가 동일한 allowed-ips 설정을 가질 수 없음에 유의하십시오.

기존 피어에 대한 allowed-ips를 업데이트하려면 동일한 명령을 다시 실행할 수 있지만 IP 주소는 변경해야 합니다. 여러 IP 주소가 지원됩니다. 예를 들어 기존 10.8.0.2fd24:609a:6c18에 10.8.0.100과 같은 IP를 추가하기 위해 방금 추가한 WireGuard 피어를 변경하려면 다음을 수행합니다. :2 IP인 경우 다음을 실행합니다.

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd24:609a:6c18::2

피어를 추가하는 명령을 실행했으면 wg 명령을 사용하여 서버의 터널 상태를 확인하십시오.

  1. sudo wg
Output
interface: wg0 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= private key: (hidden) listening port: 51820 peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed ips: 10.8.0.2/32, fd24:609a:6c18::/128

peer 줄에 WireGuard Peer의 공개 키, IP 주소 또는 IP를 할당하는 데 사용할 수 있는 주소 범위가 어떻게 표시되는지 확인하십시오.

이제 서버에서 피어의 연결 매개변수를 정의했으므로 다음 단계는 피어에서 터널을 시작하는 것입니다.

9단계 - WireGuard 피어를 터널에 연결

이제 서버와 피어가 IPv4, IPv6, 패킷 전달 및 DNS 확인 선택을 지원하도록 구성되었으므로 피어를 VPN 터널에 연결할 차례입니다.

특정 사용 사례에 대해서만 VPN을 켜고 싶을 수 있으므로 wg-quick 명령을 사용하여 수동으로 연결을 설정합니다. 서버에서와 같이 터널 시작을 자동화하려면 wq-quick 명령을 사용하는 대신 6단계 - WireGuard 서버 시작 섹션의 해당 단계를 따르십시오.

VPN을 통해 모든 트래픽을 라우팅하고 DNS 전달을 설정한 경우 터널을 시작하기 전에 WireGuard Peer에 resolvconf 유틸리티를 설치해야 합니다. 이를 설정하려면 다음 명령을 실행하십시오.

  1. sudo apt install resolvconf

터널을 시작하려면 WireGuard Peer에서 다음을 실행합니다.

  1. sudo wg-quick up wg0

다음과 같은 출력이 표시됩니다.

Output
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.8.0.2/24 dev wg0 [#] ip -6 address add fd24:609a:6c18::2/64 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a tun.wg0 -m 0 -x

피어에 할당한 강조 표시된 IPv4 및 IPv6 주소를 확인합니다.

피어의 AllowedIPs0.0.0.0/0::/0로 설정하는 경우(또는 VPN에 대해 선택한 경우) 출력은 다음과 유사합니다.

Output
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.8.0.2/24 dev wg0 [#] ip -6 address add fd24:609a:6c18::2/64 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a tun.wg0 -m 0 -x [#] wg set wg0 fwmark 51820 [#] ip -6 route add ::/0 dev wg0 table 51820 [#] ip -6 rule add not fwmark 51820 table 51820 [#] ip -6 rule add table main suppress_prefixlength 0 [#] ip6tables-restore -n [#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820 [#] ip -4 rule add not fwmark 51820 table 51820 [#] ip -4 rule add table main suppress_prefixlength 0 [#] sysctl -q net.ipv4.conf.all.src_valid_mark=1 [#] iptables-restore -n

이 예에서 피어 구성의 AllowedIPs에 해당하는 명령이 추가한 강조 표시된 경로를 확인하십시오.

wg 명령을 사용하여 피어의 터널 상태를 확인할 수 있습니다.

  1. sudo wg
Output
interface: wg0 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= private key: (hidden) listening port: 49338 fwmark: 0xca6c peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= endpoint: 203.0.113.1:51820 allowed ips: 10.8.0.0/24, fd24:609a:6c18::/64 latest handshake: 1 second ago transfer: 6.50 KiB received, 15.41 KiB sent

서버에서 상태를 다시 확인할 수도 있으며 유사한 출력을 받게 됩니다.

ip routeip -6 route 명령을 사용하여 피어가 VPN을 사용하고 있는지 확인하십시오. VPN을 모든 인터넷 트래픽의 게이트웨이로 사용하는 경우 CloudFlare의 1.1.1.12606:4700:4700::1111 DNS 리졸버.

WireGuard만 사용하여 VPN의 리소스에 액세스하는 경우 게이트웨이 자체와 같은 유효한 IPv4 또는 IPv6 주소를 이러한 명령으로 대체하십시오. 예: 10.8.0.1 또는 fd24:609a:6c18::1.

  1. ip route get 1.1.1.1
Output
1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000 cache

wg0 장치가 사용되고 피어에 할당한 IPv4 주소 10.8.0.2를 확인합니다. 마찬가지로 IPv6을 사용하는 경우 다음을 실행합니다.

  1. ip -6 route get 2606:4700:4700::1111
Output
2606:4700:4700::1111 from :: dev wg0 table 51820 src fd24:609a:6c18::2 metric 1024 pref medium

피어에 할당한 wg0 인터페이스와 IPv6 주소 fd24:609a:6c18::2를 다시 확인하십시오.

피어에 브라우저가 설치되어 있는 경우 ipv6-test.com을 방문하여 피어가 VPN을 통해 트래픽을 라우팅하고 있는지 확인할 수도 있습니다.

피어에서 VPN 연결을 끊을 준비가 되면 wg-quick 명령을 사용하십시오.

  1. sudo wg-quick down wg0

VPN 터널이 종료되었음을 나타내는 다음과 같은 출력을 받게 됩니다.

Output
[#] ip link delete dev wg0 [#] resolvconf -d tun.wg0 -f

피어의 AllowedIPs0.0.0.0/0::/0로 설정하는 경우(또는 VPN에 대해 선택한 경우) 출력은 다음과 유사합니다.

Output
[#] ip rule delete table 200 from 203.0.113.5 [#] ip route delete table 200 default via 203.0.113.1 [#] ip -4 rule delete table 51820 [#] ip -4 rule delete table main suppress_prefixlength 0 [#] ip -6 rule delete table 51820 [#] ip -6 rule delete table main suppress_prefixlength 0 [#] ip link delete dev wg0 [#] resolvconf -d tun.wg0 -f [#] iptables-restore -n [#] ip6tables-restore -n

VPN에 다시 연결하려면 피어에서 wg-quick up wg0 명령을 다시 실행하십시오. WireGuard 서버에서 피어의 구성을 완전히 제거하려면 다음 명령을 실행하여 제거하려는 피어에 대해 올바른 공개 키를 대체해야 합니다.

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

일반적으로 피어가 더 이상 존재하지 않거나 해당 암호화 키가 손상되거나 변경된 경우에만 피어 구성을 제거하면 됩니다. 그렇지 않으면 매번 키와 allowed-ips를 추가할 필요 없이 피어가 VPN에 다시 연결할 수 있도록 구성을 그대로 두는 것이 좋습니다.

결론

이 자습서에서는 서버 및 클라이언트 Debian 11 시스템 모두에 WireGuard 패키지 및 도구를 설치했습니다. WireGuard에 대한 방화벽 규칙을 설정하고 서버에서 sysctl 명령을 사용하여 패킷 전달을 허용하도록 커널 설정을 구성했습니다. 비공개 및 공개 WireGuard 암호화 키를 생성하는 방법과 서버와 피어(또는 피어)가 서로 연결되도록 구성하는 방법을 배웠습니다.

네트워크에서 IPv6를 사용하는 경우 피어 연결에 사용할 고유한 로컬 주소 범위를 생성하는 방법도 배웠습니다. 마지막으로 피어가 사용할 수 있는 네트워크 접두사를 제한하여 VPN을 통과해야 하는 트래픽을 제한하는 방법과 피어의 모든 인터넷 트래픽을 처리하기 위해 WireGuard 서버를 VPN 게이트웨이로 사용하는 방법을 배웠습니다.

고급 터널을 구성하는 방법 또는 컨테이너와 함께 WireGuard를 사용하는 방법을 포함하여 WireGuard에 대해 자세히 알아보려면 공식 WireGuard 설명서를 방문하십시오.