Debian 12 bookworm
Sponsored Link

WireGuard : サーバーの設定2023/07/18

 

シンプルで高速な VPN サーバー、 WireGuard のインストールと設定です。

当例では以下のような環境で WireGuard サーバーを設定します。

インターネットを経由するため、事前に、自身の環境で、WireGuard サーバー側のローカルネットワークとインターネットの境界ルーターに、IP マスカレードの設定が必要です。

下例の場合、WireGuard クライアントからインターネットを経由して WireGuard サーバーのグローバル IP アドレス宛てに来るパケットを、[Router#1] 上で、WireGuard サーバーの IP アドレス (10.0.0.30) の、WireGuard 設定ファイルで指定した待ち受けポート (UDP) に転送するよう設定します。

  +------------------------+
  | [  WireGuard Server  ] |172.16.100.1 (VPN IP)
  |      dlp.srv.world     +--------+
  |                        |wg0     |
  +-----------+------------+        |
        enp1s0|10.0.0.30/24         |
              |                     |
              |       Local Network |
       +------+-----+               |
-------|  Router#1  |---------------|-----
       +------+-----+               |
              |                     |
    Internet  |  Internet           |
              |                     |
       +------+-----+               |
-------|  Router#2  |---------------|-----
       +------+-----+               |
              |       Local Network |
              |                     |
        enp1s0|192.168.10.30/24     |
  +-----------+------------+        |
  |  [ WireGuard Client ]  |wg0     |
  |                        +--------+
  |                        |172.16.100.5 (VPN IP)
  +------------------------+

[1] WireGuard をインストールします。
root@dlp:~#
apt -y install wireguard-tools iptables
[2] WireGuard の設定です。
root@dlp:~#
umask 077
# サーバー用プライベートキー作成

root@dlp:~#
wg genkey | tee /etc/wireguard/server.key

wO6HXGZ8mk2Ppeab7TBSBwUEOn2twKIRbQJeXV5T63M=
# サーバー用パブリックキー作成

root@dlp:~#
cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub

iLzFRDOYkUwGGyimnPlxPFsPqgbfFb3Mr8N9ylSpLzs=
# クライアント用プライベートキー作成

root@dlp:~#
wg genkey | tee /etc/wireguard/client.key

yA3wrfH/XHxhwdrOVE5hJO+byhRxCn8+TFLVF/67THE=
# クライアント用パブリックキー作成

root@dlp:~#
cat /etc/wireguard/client.key | wg pubkey | tee /etc/wireguard/client.pub

ghh1dEqEWu9DjBGs2sUvofHff2syT0M1+iTK7ERyKxI=
# ネットワーク インターフェース 確認

root@dlp:~#
ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:86:40:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.30/24 brd 10.0.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe86:408d/64 scope link
       valid_lft forever preferred_lft forever

# 設定ファイル新規作成
# [wg0.conf] ⇒ [(VPN インターフェース名).conf] のルール内で任意の名称で OK

root@dlp:~#
vi /etc/wireguard/wg0.conf
[Interface]
# 生成したサーバー用プライベートキーを指定
PrivateKey = wO6HXGZ8mk2Ppeab7TBSBwUEOn2twKIRbQJeXV5T63M=
# VPN インターフェースに割り当てる IP アドレス
Address = 172.16.100.1
# サーバーでリスンする UDP ポート
ListenPort = 51820

# WireGuard 起動後/終了後に任意のコマンドを実行可能
# 以下はローカルネットワークへのルーティングルールを設定
# [wg0] ⇒ VPN インターフェース名
# [enp1s0] ⇒ イーサネット インターフェース名
PostUp = echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = echo 0 > /proc/sys/net/ipv4/ip_forward; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE

[Peer]
# クライアント用パブリックキーを指定
PublicKey = ghh1dEqEWu9DjBGs2sUvofHff2syT0M1+iTK7ERyKxI=
# 接続を許可するクライアントの VPN の IP アドレス
# サブネット単位でも指定可 ⇒ [172.16.100.0/24]
AllowedIPs = 172.16.100.5, 172.16.100.6

# [wg-quick@wg0] ⇒ [wg-quick@(VPN インターフェース名)]

root@dlp:~#
systemctl start wg-quick@wg0
root@dlp:~#
ip address show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:86:40:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.30/24 brd 10.0.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe86:408d/64 scope link
       valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 172.16.100.1/32 scope global wg0
       valid_lft forever preferred_lft forever
関連コンテンツ