WireGuardサーバを RockyLinux8 で作ってみる

[root@rockylinux8 ~]# cat /etc/redhat-release
Rocky Linux release 8.10 (Green Obsidian)
 
[root@rockylinux8 ~]# uname -r
4.18.0-553.el8_10.x86_64           <-- 8.10のkernelでそれ以降のupdateをしていないです. これが重要.
 
[root@rockylinux8 ~]# getenforce
Enforcing
 
[root@rockylinux8 ~]# mokutil --sb-state
EFI variables are not supported on this system
 
[root@rockylinux8 ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether bc:24:11:cd:3c:9f brd ff:ff:ff:ff:ff:ff
 
[root@rockylinux8 ~]# firewall-cmd --get-active-zones
public
  interfaces: enp6s18
 
[root@rockylinux8 ~]#

WireGuardのサーバになるには「wireguard-tools」とカーネルモジュールの「wireguard.ko」が必要です

wireguard-tools」は epel リポジトリから入手可能です
wireguard.ko」はカーネル側での提供はなく、別途入れます.

まず「wireguard-tools

[root@rockylinux8 ~]# dnf install epel-release -y
 
[root@rockylinux8 ~]# dnf install wireguard-tools -y

次に「wireguard.ko
ELRepoリポジトリにある「kmod-wireguard」を採用します.
この「kmod-wireguard」は rockylinux 8.9 / 8.10 とかのリリース時の初期カーネル向けのみで、その後にupdateされたkernelには使えないです.
一応dkms版はありますが、コンパイルに失敗しました. patchもありましたが、これもエラーになった..

[root@rockylinux8 ~]# dnf install elrepo-release -y
 
[root@rockylinux8 ~]# dnf install kmod-wireguard -y
 
(確認)
[root@rockylinux8 ~]# rpm -qali kmod-wireguard
Name        : kmod-wireguard
Epoch       : 9
Version     : 1.0.20220627
Release     : 7.el8_10.elrepo
Architecture: x86_64
Install Date: Wed 12 Feb 2025 03:36:31 AM JST
Group       : System Environment/Kernel
Size        : 368772
License     : GPLv2
Signature   : DSA/SHA256, Fri 24 May 2024 06:19:06 PM JST, Key ID 309bc305baadae52
Source RPM  : kmod-wireguard-1.0.20220627-7.el8_10.elrepo.src.rpm
Build Date  : Fri 24 May 2024 04:51:58 PM JST
Build Host  : Build64F39
Relocations : (not relocatable)
Packager    : Akemi Yagi <toracat@elrepo.org>
Vendor      : The ELRepo Project (https://elrepo.org)
URL         : https://git.zx2c4.com/wireguard-linux-compat/
Summary     : wireguard kernel module(s)
Description :
This package provides the wireguard kernel module(s).
It is built to depend upon the specific ABI provided by a range of releases
of the same variant of the Linux kernel and not on any one specific build.
/etc/depmod.d/kmod-wireguard.conf
/lib/modules/4.18.0-553.el8_10.x86_64
/lib/modules/4.18.0-553.el8_10.x86_64/extra
/lib/modules/4.18.0-553.el8_10.x86_64/extra/wireguard
/lib/modules/4.18.0-553.el8_10.x86_64/extra/wireguard/wireguard.ko
/usr/share/doc/kmod-wireguard-1.0.20220627
/usr/share/doc/kmod-wireguard-1.0.20220627/GPL-v2.0.txt
/usr/share/doc/kmod-wireguard-1.0.20220627/greylist.txt
 
[root@rockylinux8 ~]# uname -r
4.18.0-553.el8_10.x86_64
 
[root@rockylinux8 ~]#

次にこのカーネルモジュールをkernelに組み込むのですが、

[root@rockylinux8 ~]# modprobe wireguard
 
[root@rockylinux8 ~]# lsmod | grep wireguard
wireguard             217088  0
ip6_udp_tunnel         16384  1 wireguard
udp_tunnel             20480  1 wireguard
 
[root@rockylinux8 ~]#

セキュアブートが有効ならエラーになります.セキュアブートを無効にしてください
「wireguard」をロードした時点でnicは有効になりません. 「wg-quick」コマンドでnicが現れます.

あとはWireGuardの記載のようにwireguardの設定に入ります

「/etc/wireguard」でwireguard向けの秘密鍵、公開鍵を作ります

[root@rockylinux8 ~]# cd /etc/wireguard/
 
[root@rockylinux8 wireguard]# umask 077
[root@rockylinux8 wireguard]# wg genkey > privatekey                *秘密鍵を作成
[root@rockylinux8 wireguard]# wg pubkey < privatekey > publickey    *秘密鍵から公開鍵を作成
[root@rockylinux8 wireguard]# ls -l
total 8
-rw-------. 1 root root 45 Feb 12 03:44 privatekey     *秘密鍵
-rw-------. 1 root root 45 Feb 12 03:44 publickey      *公開鍵
[root@rockylinux8 wireguard]#

wireguardサーバの設定ファイルを作成します.

[root@rockylinux8 ~]# cat /etc/wireguard/privatekey
uN9qMaFQiEZyQTD7Q8hL7QRhGKuECMWVcc9uIuXgh0w=
 
[root@rockylinux8 ~]# vi /etc/wireguard/wg0.conf
[Interface]
PrivateKey = eDRTtsNIB4xH9OKs1GxNCaEkqFd5tBqOPo4RP+y+Mkw=
Address = 10.10.10.1/32
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp6s18 -j MASQUERADE      <--- enp6s18 はnicです
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp6s18 -j MASQUERADE
 
 
# note-PC [HP EliteBook]
[Peer]
PublicKey = JPjP77zkEh9kOARtOsInnytux5RYciZuqYvrfAXbczM=
AllowedIPs = 10.10.10.10/32
 
[root@rockylinux8 ~]#

rockylinux8 の firewall は停止します

[root@rockylinux8 ~]# systemctl stop firewalld
[root@rockylinux8 ~]# systemctl disable firewalld

一方で ip_forward は有効にします. MASQUERADEで行けるかと思ったけど...

[root@rockylinux8 ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
 
[root@rockylinux8 ~]# sysctl -p
[root@rockylinux8 ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@rockylinux8 ~]#

っで起動してみます

[root@rockylinux8 ~]# wg-quick up /etc/wireguard/wg0.conf     <--「wg-quick up wg0」でも可
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.10.1/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
 
[root@rockylinux8 ~]#
 
(確認)
[root@rockylinux8 ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether bc:24:11:cd:3c:9f brd ff:ff:ff:ff:ff:ff
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000     <--- 追加された
    link/none
 
[root@rockylinux8 ~]# ip addr show dev wg0 scope global
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.10.10.1/32 scope global wg0
       valid_lft forever preferred_lft forever
 
[root@rockylinux8 ~]#

再起動すると「wg0」が消えてしまうので永続的に存在させるためにsystemctl を仕掛ける

[root@rockylinux8 ~]# systemctl enable wg-quick@wg0
Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service → /usr/lib/systemd/system/wg-quick@.service.
 
[root@rockylinux8 ~]#

これで再起動しても[wg0]は消えない. もし再起動でもダメなら...手動で「wg-quick up wg0」を実行かな. これをcronに組み込む(起動時一回起動設定で)

最新の60件
2025-04-27 2025-04-26 2025-04-25 2025-04-24 2025-04-17 2025-04-15 2025-04-13 2025-04-02 2025-04-01 2025-03-31 2025-03-29 2025-03-28 2025-03-27 2025-03-26 2025-03-23 2025-03-22 2025-03-20 2025-03-17 2025-03-16 2025-03-15 2025-03-06 2025-03-03 2025-03-01 2025-02-18 2025-02-17 2025-02-14 2025-02-12 2025-02-03 2025-02-02 2025-01-27 2025-01-26 2025-01-25 2025-01-24 2025-01-23

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-02-12 (水) 04:52:45