プライマリVPNとしてWireguardを使用しています(サーバーを実行し、それに接続する複数のクライアントがあります)。これは正常に動作しますが、実際にはどのように管理されているのか理解していないことに気付きました。その実現に導いたのは、次の一連の出来事です。
/etc/wireguard/wg0.conf
で定義されています。どちらも正しく接続されています。modprobe
などに関する通常のメッセージがトリガーされました。すべてが問題ないことを確認するメッセージであるため、これらのメッセージにはまったく注意を向けませんでした。次にwg show
を確認しましたが、ピアBはnotでした。ピアB(=クライアントB)は/etc/wireguard/wg0.conf
その後、何かが間違っているに違いありません。解決策:再起動します。
再起動クライアントAが自動的に再接続した後も、クライアントBは接続しません(切断状態であってもwg show
には表示されません)。
そもそもどうやってそれを接続することができるのでしょうか? (自分自身に問う)。
最後のアイデア:
wg-quick down wg0
wg-quick up wg0
すべてが正常に戻り、クライアントAとクライアントBが接続します。
これは1つのことを意味します。wireguard
の最初の(ブート後またはapt-which-changed-kernel後の)起動では、別の構成ファイルを使用する必要があります。これは考えられることです-クライアントAはかなり前にセットアップされ、クライアントBは最近(/etc/wireguard/wg0
に)追加されただけなので、どこにセットアップしたか忘れてしまった可能性があります。
私は過去に一度、上記の問題を抱えていました。覚えて、2つのwg-quick
コマンドで修正しましたが、これ以上議論する時間はありませんでした(クライアントBが接続に成功した方法を説明しています)。
私の質問:Ubuntu 18.04では、実際にwireguard
を開始するサービスは何ですか(wireguard
PPAからインストールされます)、そのサービスで使用される構成ファイルはどこですか? ?
最終的に別のアプローチを使用したため、別の回答を追加します。これは[email protected]
テンプレートに基づいています。
私はsystemctl enable [email protected]
を介してそれを有効化(および開始、停止など)し、構成は/etc/wireguard
にあります。それはWireguardの古典的なフォーマットを持っています。
設定を管理するために、優れた Wg Gen Web インターフェイスを使用します。
Wireguardはsystemd-networkd
から起動します。インストールにより、新しいインターフェイスwg0
も作成されます。
構成は2つのファイルを介して行われます(somename
は、wg0
やwireguard
など、任意の名前にすることができます)(1)
/etc/systemd/network/somename.netdev
このファイルは interface および peers の構成を保持します。通常の[WireGuard]
と[WireGuardPeer]
の代わりに[Interface]
と[Peer]
を使用します(参照 (1))
[NetDev]
Name = wg0
Kind = wireguard
Description = Wireguard
[WireGuard]
ListenPort = 51820
PrivateKey = <your private key>
# laptop
[WireGuardPeer]
PublicKey = h/trC+5Z8qbGBJtroYITQGMNUn5XQZ/JRqVR3iIH5Ro=
AllowedIPs = 192.168.20.2/32
/etc/systemd/network/somename.network
このファイルは、インターフェースのIP関連の構成を保持します(ここでは特にワイヤーガード関連のものはありません)。
[Match]
Name = wg0
[Network]
Address = 192.168.20.1/32
[Route]
Gateway = 192.168.20.1
Destination = 192.168.20.0/24
これらの構成ファイルはsystemctl [re]start systemd-networkd
で読み取られます。
(1) さまざまなドキュメントで参照されている構成ファイル(/etc/wireguard/wg0
)は、systemd-networkd
では使用されないことに注意してください。 wg-quick
コマンドを実行した場合に使用されます。
@ Rinzwind とsystemd-networkd
とその構成ファイルを指しているおかげで、この回答はここにあります