見出し画像

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の模擬試験します。

それではまた明日、ありがとうございました



この記事が気に入ったらサポートをしてみませんか?