WireGuardインストール(CentOS8)

はじめに

Amazon Linux2で無事に入ったので、CentOS8で入れてみることにします。

インストール

CentOS 8 set up WireGuard VPN server – nixCraft

How do I install and set up WireGuard VPN server on a CentOS 8 Linux? How can I configure CentOS 8 as the WireGuard VPN server? WireGuard is a free, open-source modern and fast VPN with state-of-the-art cryptography. It is quicker and simpler as compared to IPSec and OpenVPN.

rootにて、基本はこの通りやっていけば良い。

  • サーバモジュールインストール
  • WireGuard設定
  • ネットワーク設定

サーバモジュールインストール

$ yum install epel-release
$ yum install 'dnf-command(config-manager)'
$ dnf update
$ yum config-manager --set-enabled PowerTools
$ yum copr enable jdoss/wireguard
$ yum install wireguard-dkms wireguard-tools
$ yum install vim
$ yum install net-tools

# おそらくここでkernelが最新になっているのでReboot
$ reboot

# wireguardが適切に設定されていない場合、下記コマンドでエラー
$ modprobe wireguard
modprobe: FATAL: Module wireguard not found in directory /lib/modules/4.18.0-147.8.1.el8_1.x86_64
$ dkms status
wireguard, 1.0.20200908: added
$ dkms build wireguard/1.0.20200908
Kernel preparation unnecessary for this kernel. Skipping…
Building module:
cleaning build area…
make -j1 KERNELRELEASE=4.18.0-193.19.1.el8_2.x86_64 -C /lib/modules/4.18.0-193.19.1.el8_2.x86_64/build M=/var/lib/dkms/wireguard/1.0.20200908/build………..
cleaning build area…
DKMS: build completed.
$ dkms install wireguard/1.0.20200908
wireguard.ko.xz:
Running module version sanity check.
Original module
No original module exists within this kernel
Installation
Installing to /lib/modules/4.18.0-193.19.1.el8_2.x86_64/extra/
Adding any weak-modules
depmod….
DKMS: install completed.
$ modprobe wireguard

$ reboot

※DKMS buildエラー

$ dkms build wireguard/1.0.20200908
Error! echo
Your kernel headers for kernel 4.18.0-147.8.1.el8_1.x86_64 cannot be found at
/lib/modules/4.18.0-147.8.1.el8_1.x86_64/build or /lib/modules/4.18.0-147.8.1.el8_1.x86_64/source.
You can use the --kernelsourcedir option to tell DKMS where it's located.

kernelを最新(yum updateなど)にして再度実行すれば、buildに成功する。

WireGuard設定

$ cd /etc/wireguard/
$ wg genkey > server.prv
$ chmod 600 server.prv
$ wg pubkey < server.prv > server.pub
$ chmod 600 server.pub
$ vim wg0.conf
$ systemctl enable wg-quick@wg0
$ systemctl start wg-quick@wg0

ネットワーク設定

$ vim /etc/sysctl.conf
$ sysctl -p

$ systemctl start firewalld
$ vim /etc/firewalld/services/wireguard.xml
$ firewall-cmd --permanent --add-service=wireguard --zone=public
$ firewall-cmd --permanent --zone=public --add-masquerade
$ firewall-cmd --add-interface=wg0 --zone=internal
$ firewall-cmd --permanent --zone=internal --add-masquerade
$ firewall-cmd --reload
$ firewall-cmd --get-zones
$ firewall-cmd --list-all

wireguard.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard open UDP port 51821 for client connections</description>
  <port protocol="udp" port="51821"/>
</service>

追記

CentOS7でも軽ーくやってみようと思ったが、kernel等の問題で面倒だったのでやめた・・・