WireGuard 4 CentOS Stream 8
格勉強ばかりでは、流石に辛いので今日久々に開発
さて昨年から自鯖の環境をOpenVPNからWireGuardに変更しました。
変更理由は、Linuxカーネルに正式に取り込まれたこととその設定方法の容易さです。
その設定の容易さでOpenVPNでは、実装を諦めていたAnsibleによるサーバー、クライアントの実装も果たしました。
今回は、Ansibleではないですが公式手順にはまだないCentOS Stream 8で実装手順について書いていこうかとお思います。
https://www.wireguard.com/install/
作業は、rootユーザーで行います。
今回はクライアントの設定方法として書きますが、WireGuardには実質的にサーバーとクライアントという考えはないです。
1. パッケージのインストール
epelをインストールいます。
dnf install epel-release
Fedora Coprを有効にする
dnf copr enable jdoss/wireguard
wireguard-tools パッケージインストール
dnf install wireguard-tools
2. VPNの設定ファイルを作成
VPN内で連携認証するための公開鍵を作成し設定ファイルを作成します。
先にクライアントキーを作成しておきます。
umask 077
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
WireGuard設定ファイルを作成
クライアントキーを設定ファイルへ書き込む
cat /etc/wireguard/privatekey > /etc/wireguard/wg0.conf
vi /etc/wireguard/wg0.conf
設定値
[Interface]
Address = XXX.XXX.XXX.XXX/24 # Xに固定したいアドレスを入れます
### DNSをWG-VPNサービス側で設定する場合は、以下のように記載する。
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = CLIENT_PRIVATE_KEY # 1.で作成したprivatekey
[Peer]
#XはサーバーのIPアドレスもしくはドメイン名、Pはポート番号
Endpoint = XXX.XXX.XXX.XXX:PPPP
AllowedIPs = XXX.XXX.XXX.XXX # アクセスを許可するIPの範囲
PublicKey = SERVER_PUBLIC_KEY # サーバー構築時に作成したpublickey
パーミッション設定
設定ファイルには、秘密鍵の情報が記載されているのでアクセス権を絞ります。
chmod 600 /etc/wireguard/publickey /etc/wireguard/wg0.conf
ls -la /etc/wireguard
サーバー側にクライアントの公開鍵とIPを設定しておく。
モジュールを有効化
Stream8 でwireguard用のモジュールを有効化するとエラーになると思います。その場合はモジュールをリビルトし直す必要があります。
モジュールを再構築します。再構築するモジュールのバージョンは、dkms statusコマンドの実行結果で得られたバージョンを指定することに注意すること。
再構築するモジュールのバージョン番号を確認出来たら次際に再構築します。
今回はバージョン1.0.20200520を再構築する例です。
dkms build wireguard/1.0.20200520
構築したモジュールをインストールします。
dims install wireguard/1.0.20200520
wireguardモジュールを有効化します。
modprobe wireguard
有効化された事を確認
lsmod | grep wire
wireguard 212992 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 20480 1 wireguard
サービス起動
WG起動コマンドでVPNを起動させて作動を確認します。
wg-quick up wg0
# 実行結果
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.46.0.17/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
[#] ip -4 route add 128.0.0.0/1 dev wg0
[#] ip -4 route add 0.0.0.0/1 dev wg0
IPアドレスもipコマンドで確認
ip -c a show wg0
## 実行結果
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/noneinet 172.168.99.17/24 scope global wg0
valid_lft forever preferred_lft forever
デーモンサービスとして常駐
コマンド起動したVPNを落としてサービスとして常駐起動します。この時wg-quickコマンドで起動したVPNは同じコマンドで落としておこないとsystemctlコマンドがエラーになります。
wg-quick down wg0
systemctl enable --now wg-quick@wg0
systemctl status wg-quick@wg0
インターフェースがきちんと再始動していることを確認
以上で作業終了です。
Stream8はCentOS8とやはり立ち位置が違うのでCentOS8の手順をそのまま使えないことがやっぱあるんですね。
まぁこうゆうのが開発の楽しみの一つですけど
明日はLinuC202の模擬試験します。
それではまた明日、ありがとうございました
この記事が気に入ったらサポートをしてみませんか?