はじめに
Amazon Linux2で無事に入ったので、CentOS8で入れてみることにします。
インストール
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等の問題で面倒だったのでやめた・・・