Linux에서 Wireguard VPN을 설정하는 방법

Linux에서 Wireguard VPN을 설정하는 방법
노트북과 그 옆에 데스크톱 모니터가 있는 사진입니다.

Wireguard는 데스크톱과 모바일 기기에서 모두 실행할 수 있는 강력한 오픈소스 가상 사설망(VPN) 데몬입니다. IPsec 및 OpenVPN과 같은 기존 VPN 솔루션에 대한 빠르고 가벼운 대안을 제공합니다. 여기에서는 Wireguard를 설치하고 세 대의 Linux 머신을 사용하여 간단한 VPN 설정을 만드는 방법을 보여드립니다.

왜 Wireguard를 VPN 솔루션으로 사용해야 하나요?

Wireguard의 가장 큰 판매 포인트 중 하나는 빠르고 가벼운 VPN 데몬이라는 것입니다. 기존 솔루션과 달리 Wireguard는 네트워크에 많은 오버헤드를 추가하지 않습니다. 이로 인해 대기 시간이 짧아지고 노드 전체에서 전체 처리량이 높아집니다.

두 Wireguard 노드 간의 iperf3 테스트를 보여주는 터미널로 높은 처리량을 보여줍니다.

Wireguard의 또 다른 주요 특징은 Linux 커널 내부의 모듈이라는 것입니다. 이를 통해 컴퓨터에서 추가 시스템 리소스를 차지하지 않고 실행할 수 있으므로 로우엔드 및 SOC 장치에 배포하기에 이상적인 선택입니다.

Linux 커널에 로드된 Wireguard를 보여주는 터미널.

마지막으로 Wireguard는 최신 암호화 표준과 개발 관행을 활용합니다. 또한 Wireguard의 코드 정확성, 보안 보장 및 공격 저항 능력을 확인하는 여러 가지 공식 검증도 수행했습니다.

와이어가드 획득

Linux에서 Wireguard를 설정하는 첫 번째 단계는 배포판 저장소에서 핵심 도구를 다운로드하는 것입니다. 이를 통해 사용자 공간 명령을 사용하여 내장 Wireguard 커널 모듈을 제어할 수 있습니다.

Ubuntu와 Debian에서 핵심 도구를 설치하려면 다음 명령을 실행하세요.

Fedora에서는 패키지 관리자를 사용할 수 있습니다 dnf.

pacmanArch Linux의 경우 Wireguard 핵심 도구를 얻으려면 다음을 실행하세요 .

Wireguard 도구가 제대로 설치되었는지 확인하려면 도움말 화면을 로드하세요.

Wireguard 사용자 공간 도구의 도움말 메뉴를 보여주는 터미널입니다.

Wireguard 서버 설정

가정: 이 문서에서는 공개적으로 액세스 가능한 IPv4 주소가 있는 Linux 시스템에 Wireguard 서버를 설치한다고 가정합니다. 지침은 NAT 뒤에 있는 서버에서도 작동하지만 서브넷 외부의 노드는 찾을 수 없습니다.

Linux 머신에 Wireguard 코어 툴킷이 있으면 이제 VPN의 서버 노드를 설정할 수 있습니다. 이는 네트워크의 클라이언트 노드에 대한 인터넷 게이트웨이 역할을 합니다.

Wireguard 구성 디렉토리로 이동하여 기본 권한을 “root only”로 설정합니다.

Wireguard 서버의 공개 키와 개인 키를 생성합니다.

좋아하는 텍스트 편집기를 사용하여 서버의 구성 파일을 만드세요.

다음 코드 블록을 서버 구성 파일에 붙여넣습니다.

새로운 터미널 세션을 열고 서버의 Wireguard 개인 키를 인쇄하세요.

서버의 개인 키를 클립보드에 복사하세요.

Ubuntu에서 서버의 개인 키를 복사하는 과정을 보여주는 터미널.

변수 의 값을 PrivateKey클립보드의 키로 바꾸세요.

서버의 Wireguard 구성에서 서버 개인 키를 보여주는 터미널입니다.

다음 명령을 사용하여 인터넷에 액세스할 수 있는 네트워크 인터페이스를 찾으세요 ip.

인터넷에 접속할 수 있는 네트워크 인터페이스의 이름이 강조 표시된 터미널입니다.

-o두 변수 모두에 플래그 값을 설정 PostUp하고 PostDown인터넷 접속이 가능한 인터페이스로 변경한 다음, 구성 파일을 저장합니다.

Wireguard 서버의 구성 파일에 있는 적절한 장치 이름을 보여주는 터미널입니다.

좋아하는 텍스트 편집기를 사용하여 서버의 “/etc/sysctl.conf” 파일을 엽니다.

이 포함된 줄까지 아래로 스크롤한 net.ipv4.ip_forward=1다음, 줄 앞에 있는 파운드(#) 기호를 제거하세요.

sysctl.conf에서 IPv4 전달 옵션의 위치를 ​​강조한 터미널입니다.

. 을 실행하여 새 sysctl 구성을 다시 로드합니다 sudo sysctl -p.

sysctl.conf 파일을 다시 로드하는 과정을 보여주는 터미널.

Wireguard 클라이언트 설정 및 연결

이 시점에서는 피어가 없는 적절하게 구성된 Wireguard 서버가 있습니다. 이를 사용하려면 첫 번째 Wireguard 클라이언트를 설정하고 연결해야 합니다.

클라이언트 시스템의 Wireguard 구성 디렉토리로 이동하여 기본 권한을 설정합니다.

다음 명령을 사용하여 클라이언트의 Wireguard 키페어를 생성합니다.

좋아하는 텍스트 편집기를 사용하여 클라이언트의 Wireguard 구성 파일을 만듭니다.

다음 코드 블록을 클라이언트 구성 파일에 붙여넣습니다.

PrivateKey변수를 클라이언트의 개인 키로 바꾸세요 .

첫 번째 Wireguard 클라이언트의 개인 키를 강조 표시한 터미널입니다.

Wireguard 서버의 터미널 세션을 열고 공개 키를 인쇄하세요.

변수 값을 PublicKey서버의 공개 키로 설정합니다.

두 번째 클라이언트의 구성 파일에서 Wireguard 서버의 공개 키를 강조 표시한 터미널입니다.

Endpoint변수를 Wireguard 서버의 IP 주소로 변경하세요 .

Wireguard 서버의 IP 주소를 강조 표시한 터미널입니다.

구성 파일을 저장한 후 다음 wg-quick명령을 사용하여 Wireguard 클라이언트를 시작합니다.

Wireguard 클라이언트 데몬을 시작하는 과정을 보여주는 터미널입니다.

Wireguard 서버를 클라이언트에 연결

Wireguard 서버의 터미널 세션으로 이동한 다음, 해당 구성 파일을 엽니다.

섹션 뒤에 다음 코드 블록을 붙여넣으세요 [Interface].

PublicKey변수를 Wireguard 클라이언트의 공개 키로 설정합니다 .

[Peer] 블록의 위치를 ​​보여주고 클라이언트의 공개 키를 강조 표시하는 터미널입니다.

구성 파일을 저장한 후 다음 명령을 실행하여 서버에서 Wireguard 서비스를 시작합니다.

서버에 두 번째 클라이언트 추가

모든 VPN 서비스의 핵심 기능 중 하나는 다른 네트워크의 여러 머신을 연결할 수 있다는 것입니다. 이는 다른 위치에 컴퓨터가 있거나 친구를 위해 개인 게임 서버를 호스팅하려는 경우에 유용합니다.

Wireguard에서 이를 수행하려면 서버에서 새 VPN 인터페이스에 대한 구성 파일을 만들어야 합니다. 이를 수행하는 가장 쉬운 방법은 현재 서버 구성을 복사하고 복사본에 새 이름을 지정하는 것입니다.

좋아하는 텍스트 편집기를 사용하여 새 구성 파일을 엽니다.

변수를 60102로 설정합니다 ListenPort. 이렇게 하면 wg0와 wg1 VPN 인터페이스 간에 포트 충돌이 방지됩니다.

두 번째 Wireguard 인터페이스의 수정된 ListenPort 변수를 강조 표시하는 터미널입니다.

섹션 으로 이동하여 변수를 “10.0.0.2/32″에서 “10.0.0.3/32″로 [Peer]변경한 다음 구성 파일을 저장합니다.AllowedIPs

두 번째 Wireguard 클라이언트에 대한 수정된 AllowedIPs 변수를 강조 표시하는 터미널입니다.

두 번째 Wireguard 클라이언트 구성

두 번째 컴퓨터에 로그인한 다음 Wireguard 구성 디렉토리를 준비하세요.

다음 명령을 사용하여 새로운 Wireguard 키 쌍을 생성합니다.

좋아하는 텍스트 편집기를 사용하여 새 구성 파일을 만듭니다.

새 구성 파일에 다음 코드 블록을 붙여넣습니다.

PrivateKey변수를 두 번째 컴퓨터의 개인 키로 설정한 다음, PublicKey변수를 서버의 공개 키로 변경합니다.

두 번째 클라이언트의 개인 키와 Wireguard 서버의 공개 키를 강조 표시한 터미널입니다.

Endpoint 변수를 서버의 IP 주소로 바꾸고 뒤에 “:60102”를 붙입니다.

두 번째 클라이언트 구성에서 Wireguard 서버의 IP 주소를 강조 표시한 터미널입니다.

구성 파일을 저장한 다음 두 번째 머신의 Wireguard 클라이언트를 시작합니다.

두 번째 클라이언트를 Wireguard 서버에 연결

Wireguard 서버에 다시 로그인한 다음 두 번째 클라이언트의 VPN 인터페이스 구성을 엽니다.

해당 섹션까지 스크롤한 [Peer]다음 PublicKey변수를 두 번째 클라이언트의 공개 키로 바꾸세요.

서버의 wg1 구성 파일 내에서 두 번째 클라이언트의 공개 키를 강조 표시하는 터미널입니다.

구성 파일을 저장한 후 wg-quick 명령을 사용하여 두 번째 VPN 인터페이스를 시작합니다.

.을 실행하여 첫 번째 및 두 번째 Wireguard 클라이언트가 서버에 올바르게 표시되는지 확인하세요 wg.

Wireguard 서버와 통신하는 두 클라이언트 노드를 보여주는 터미널입니다.

Wireguard 네트워크 테스트

서버와 클라이언트가 모두 Wireguard 네트워크에 있으면 이제 노드 간의 연결성과 대기 시간을 테스트할 수 있습니다. 이를 위해 시스템에 네트워크 진단 도구가 설치되어 있는지 확인하세요.

curlFedora에서는 네트워킹 도구가 기본으로 제공되므로 설치만 하면 됩니다 .

pacmanArch Linux의 경우 네트워크 도구를 설치하는 데 사용할 수 있습니다 curl.

두 클라이언트 간의 패킷 경로를 추적하는 것으로 시작합니다. 다음은 IP 패킷이 “10.0.0.2”에서 “10.0.0.3”으로 이동하는 방식을 보여줍니다.

두 Wireguard 노드 간의 성공적인 traceroute 명령을 보여주는 터미널입니다.

공통 IP 주소에 ping을 보내어 노드 중 하나가 공용 인터넷에 액세스할 수 있는지 확인하세요.

Wireguard 네트워크에서 외부 사이트까지의 지연 시간을 보여주는 터미널입니다.

마지막으로, 노드가 Wireguard 서버와 동일한 공용 IP 주소를 공유하는지 확인하세요.

세 개의 Wireguard 노드에서 유사한 외부 IP 주소를 강조 표시하는 터미널입니다.

Linux에서 Wireguard 네트워크를 설정하는 법을 배우는 것은 VPN의 매혹적인 세계를 탐험하는 첫 번째 단계입니다. 자세히 살펴보고 오늘 얻을 수 있는 최고의 보안 중심 VPN 제공업체에 대한 선택을 살펴보세요.

이미지 출처: Kari Shea via UnsplashWikimedia Commons . 모든 변경 사항 및 스크린샷은 Ramces Red가 제공했습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다