Ubuntu 20.04에서 WireGuard VPN을 설정하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
이 페이지에서
- 전제 조건
- 시작하기\n
- WireGuard VPN 서버 설치
- WireGuard 서버 구성
- IP 전달 활성화\n
- WireGuard 클라이언트 설치 및 구성
- 결론
WireGuard는 단순성과 사용 편의성을 위해 설계된 보안 중심의 오픈 소스 가상 사설망입니다. Linux, macOS, Windows, BSD 및 Android를 포함한 다양한 운영 체제를 지원합니다. 소형 장치에서 고급 서버에 쉽게 배포할 수 있는 단순하고 범용적인 VPN입니다. 클라이언트-서버 모델 대신 포인트 투 포인트 VPN 서버입니다. 공개 키 교환 메커니즘을 사용하여 클라이언트를 인증합니다.
가볍고 빠른 VPN을 찾고 있다면 WireGuard VPN이 최선의 선택입니다. 이 튜토리얼에서는 Ubuntu 20.04에 WireGuard VPN 서버 및 클라이언트를 설치하는 방법을 보여줍니다.
전제 조건
- Ubuntu 20.04 서버를 실행하는 두 개의 서버.\n
- 루트 암호는 두 서버 모두에서 구성됩니다.\n
시작하기
먼저 시스템 패키지를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령으로 업데이트할 수 있습니다.
apt-get update -y
모든 패키지가 업데이트되면 시스템에 Iptables를 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.
apt-get install iptables -y
설치가 완료되면 다음 단계로 진행할 수 있습니다.
WireGuard VPN 서버 설치
기본적으로 WireGuard 패키지는 Ubuntu 20.04 기본 리포지토리에서 사용할 수 있습니다. 다음 명령을 실행하여 설치할 수 있습니다.
apt-get install wireguard -y
WireGuard 패키지가 설치되면 다음 단계로 진행할 수 있습니다.
WireGuard 서버 구성
WireGuard는 WireGuard 네트워크의 각 장치 간에 공개 키를 교환하여 작동합니다. 따라서 서버에 공개 키와 개인 키를 만들어야 합니다.
WireGuard는 wg 및 wg-quick 명령줄 유틸리티를 제공하여 키를 생성하고 인터페이스를 관리합니다.
다음 명령을 사용하여 공개 키와 개인 키를 모두 만들 수 있습니다.
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
두 키가 모두 생성되면 다음 명령으로 확인할 수 있습니다.
ls /etc/wireguard
다음 출력이 표시되어야 합니다.
privatekey publickey
다음 명령을 사용하여 개인 키의 내용을 표시할 수 있습니다.
cat /etc/wireguard/privatekey
다음 출력이 표시되어야 합니다.
4M1l65NIaoR2+fQ6xVnIdwj6iVjsSPDkEMuzVnbFh3A=
다음 명령을 사용하여 공개 키의 내용을 표시할 수 있습니다.
cat /etc/wireguard/publickey
다음 출력이 표시되어야 합니다.
00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
다음으로 WireGuard용 네트워크 인터페이스를 생성해야 합니다. 다음 명령으로 만들 수 있습니다.
nano /etc/wireguard/wg0.conf
다음 줄을 추가합니다.
[Interface] Address = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = server-private-key PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
완료되면 파일을 저장하고 닫습니다.
어디에:
- Address : wg0 인터페이스의 사설 IP 주소입니다.
- ListenPort : WireGuard의 수신 포트를 지정합니다.\n
- PrivateKey : /etc/wireguard/privatekey 파일에 저장된 개인 키입니다.
- PostUp : 트래픽이 서버를 떠나도록 허용하고 VPN 클라이언트가 인터넷에 액세스할 수 있도록 하는 명령을 지정합니다. 또한 eth0을 네트워크 인터페이스 이름으로 바꿉니다.\n
다음으로 privatekey 및 wg0 파일에 적절한 권한을 설정합니다.
chmod 600 /etc/wireguard/{privatekey,wg0.conf}
그런 다음 다음 명령을 실행하여 wg0 인터페이스를 활성화합니다.
wg-quick up wg0
다음 출력이 표시되어야 합니다.
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
아래와 같이 systemd를 사용하여 WireGuard 서비스를 시작할 수도 있습니다.
systemctl start
그런 다음 다음 명령을 사용하여 시스템 재부팅 시 WireGuard 서비스가 시작되도록 활성화합니다.
systemctl enable
그런 다음 다음 명령을 사용하여 WireGuard 서비스의 상태를 확인합니다.
systemctl status
다음 출력이 표시되어야 합니다.
? - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/; disabled; vendor preset: enabled) Active: active (exited) since Thu 2020-12-10 11:42:14 UTC; 7s 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: 2173 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 2173 (code=exited, status=0/SUCCESS) Dec 10 11:42:14 ubunt4 systemd[1]: Starting WireGuard via wg-quick(8) for wg0... Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip link add wg0 type wireguard Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] wg setconf wg0 /dev/fd/63 Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip -4 address add 10.0.0.1/24 dev wg0 Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip link set mtu 1420 up dev wg0 Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Dec 10 11:42:14 ubunt4 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.
다음 명령을 사용하여 wg0 인터페이스의 상태를 확인할 수도 있습니다.
wg show wg0
다음 출력이 표시되어야 합니다.
interface: wg0 public key: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= private key: (hidden) listening port: 51820
다음 명령을 사용하여 wg0 인터페이스의 IP 주소 상태를 가져올 수 있습니다.
ip a show wg0
다음 출력이 표시되어야 합니다.
13: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 10.0.0.1/24 scope global wg0 valid_lft forever preferred_lft forever
완료되면 다음 단계로 진행할 수 있습니다.
IP 포워딩 활성화
다음으로 VPN 클라이언트와 인터넷 간에 패킷을 라우팅하려면 서버에서 IP 전달을 활성화해야 합니다. /etc/sysctl.conf 파일을 편집하여 활성화할 수 있습니다.
nano /etc/sysctl.conf
다음 줄을 변경합니다.
net.ipv4.ip_forward=1
파일을 저장하고 닫은 후 다음 명령을 실행하여 구성 변경 사항을 적용합니다.
sysctl -p
완료되면 다음 단계로 진행할 수 있습니다.
WireGuard 클라이언트 설치 및 구성
먼저 클라이언트 컴퓨터에 WireGuard 패키지를 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.
apt-get install wireguard -y
WireGuard 패키지를 설치한 후 다음 명령을 사용하여 개인 키와 공개 키를 만듭니다.
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
두 키가 모두 생성되면 새 구성 파일을 생성해야 합니다.
다음 명령으로 만들 수 있습니다.
nano /etc/wireguard/wg0.conf
다음 줄을 추가합니다.
[Interface] PrivateKey = client-private-key Address = 10.0.0.2/24 [Peer] PublicKey = server-public-key Endpoint = server-ip-address:51820 AllowedIPs = 0.0.0.0/0
완료되면 파일을 저장하고 닫습니다.
어디에:
- Address : wg0 인터페이스의 사설 IP 주소입니다.
- PrivateKey : 클라이언트 시스템의 개인 키를 지정합니다.\n
- PublicKey : 서버 시스템의 공개 키를 지정합니다.\n
- 엔드포인트 : 서버의 IP 주소를 지정합니다.\n
- AllowedIPs : 허용된 IP 주소 목록을 지정합니다.\n
다음으로 서버 시스템에 클라이언트 공개 키와 IP 주소를 추가해야 합니다.
서버 시스템에서 다음 명령을 실행하여 둘 다 추가하십시오.
wg set wg0 peer client-public-key allowed-ips 10.0.0.2
다음으로 클라이언트 시스템에서 wg0 인터페이스를 불러와야 합니다.
클라이언트 시스템에서 다음 명령을 실행하여 인터페이스를 불러옵니다.
wg-quick up wg0
다음 출력이 표시되어야 합니다.
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] wg set wg0 fwmark 51820
이 시점에서 클라이언트 시스템은 WireGuard VPN 서버에 연결됩니다. 다음 명령으로 연결 상태를 확인할 수 있습니다.
wg
다음 출력이 표시되어야 합니다.
interface: wg0 public key: 3FXBDpAO4Vado1tDjLtVQt+JnOCa+W2piLeFYQ8KyB4= private key: (hidden) listening port: 38830 fwmark: 0xca6c peer: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= endpoint: 69.87.216.36:51820 allowed ips: 0.0.0.0/0 latest handshake: 41 seconds ago transfer: 5.27 KiB received, 12.97 KiB sent
결론
축하합니다! Ubuntu 20.04 서버에 WireGuard VPN 서버 및 클라이언트를 성공적으로 설치 및 구성했습니다. 이제 클라이언트 시스템의 트래픽은 서버 시스템을 통해 라우팅되어야 합니다. 이제 익명으로 인터넷을 서핑하고 데이터를 비공개로 유지할 수 있습니다. Linux tee 명령 가이드를 확인하세요.