7.10. nmcli を使用した WireGuard クライアントの設定
NetworkManager で接続プロファイルを作成することで、WireGuard クライアントを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。
この手順では、次の設定を前提としています。
クライアント:
-
秘密鍵:
aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A= -
トンネル IPv4 アドレス:
192.0.2.2/24 -
トンネル IPv6 アドレス:
2001:db8:1::2/32
-
秘密鍵:
サーバー
-
公開鍵:
UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE= -
トンネル IPv4 アドレス:
192.0.2.1/24 -
トンネル IPv6 アドレス:
2001:db8:1::1/32
-
公開鍵:
前提条件
- サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
以下の情報を把握している。
- クライアントの秘密鍵
- クライアントの静的トンネルの IP アドレスとサブネットマスク
- サーバーの公開鍵
- サーバーの静的トンネル IP アドレスおよびサブネットマスク
手順
NetworkManager WireGuard 接続プロファイルを追加します。
# nmcli connection add type wireguard con-name client-wg0 ifname wg0client-wg0という名前のプロファイルを作成し、そのプロファイルに仮想インターフェイスwg0を割り当てます。オプション: NetworkManager が
client-wg接続を自動的に起動しないように設定します。# nmcli connection modify client-wg0 autoconnect noクライアントのトンネル IPv4 アドレスとサブネットマスクを設定します。
# nmcli connection modify client-wg0 ipv4.method manual ipv4.addresses 192.0.2.2/24クライアントのトンネル IPv6 アドレスとサブネットマスクを設定します。
# nmcli connection modify client-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::2/32すべてのトラフィックをトンネル経由でルーティングする場合は、サーバーのトンネル IP アドレスをデフォルトゲートウェイとして設定します。
# nmcli connection modify client-wg0 ipv4.gateway 192.0.2.1 ipv6.gateway 2001:db8:1::1すべてのトラフィックをトンネル経由でルーティングするには、後の手順で、このクライアントの
allowed-ipsを0.0.0.0/0;::/0に設定する必要があります。すべてのトラフィックをトンネル経由でルーティングすると、サーバーのルーティングとファイアウォールの設定によっては他のホストへの接続に影響が及ぶ可能性があることに注意してください。
クライアントの秘密鍵を接続プロファイルに追加します。
# nmcli connection modify client-wg0 wireguard.private-key "aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A="このクライアントとの通信を許可するサーバーごとにピア設定を追加します。これらの設定は手動で追加する必要があります。
nmcliユーティリティーでは、対応する接続プロパティーの設定をサポートしていないためです。/etc/NetworkManager/system-connections/client-wg0.nmconnectionファイルを編集し、以下を追加します。[wireguard-peer.UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=] endpoint=server.example.com:51820 allowed-ips=192.0.2.1;2001:db8:1::1; persistent-keepalive=20-
[wireguard-peer.<public_key_of_the_server>]エントリーは、サーバーのピアセクションを定義します。セクション名には、サーバーの公開鍵が含まれます。 -
endpointパラメーターは、サーバーのホスト名または IP アドレスとポートを設定します。クライアントはこの情報を使用して接続を確立します。 allowed-ipsパラメーターは、このクライアントにデータを送信できる IP アドレスのリストを設定します。たとえば、このパラメーターを次のように設定します。- サーバーのトンネル IP アドレスに設定すると、そのサーバーのみがこのクライアントと通信できるようになります。上記の例の値を使用すると、そのように設定されます。
-
0.0.0.0/0;::/0;に設定すると、リモートの IPv4 アドレスおよび IPv6 アドレスがこのクライアントと通信できるようになります。この設定を使用して、すべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用します。
-
オプションの
persistent-keepaliveパラメーターは、WireGuard がサーバーにキープアライブパケットを送信する間隔を秒単位で定義します。ネットワークアドレス変換 (NAT) を使用するネットワークでクライアントを使用する場合、またはしばらく非アクティブにした後にファイアウォールが UDP 接続を閉じる場合は、このパラメーターを設定します。
-
client-wg0接続プロファイルをリロードします。# nmcli connection load /etc/NetworkManager/system-connections/client-wg0.nmconnection
client-wg0接続を再アクティブ化します。# nmcli connection up client-wg0- DHCP またはステートレスアドレス自動設定 (SLAAC) が設定されたネットワークでこのホストを使用すると、接続がリダイレクトされる危険性があります。詳細と軽減策は、接続がトンネルを回避しないように VPN 接続を専用ルーティングテーブルに割り当てる を参照してください。
検証
サーバーの IP アドレスの ping を実行します。
# ping 192.0.2.1 # ping6 2001:db8:1::1wg0デバイスのインターフェイス設定を表示します。# wg show wg0 interface: wg0 public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM= private key: (hidden) listening port: 51820 peer: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE= endpoint: server.example.com:51820 allowed ips: 192.0.2.1/32, 2001:db8:1::1/128 latest handshake: 1 minute, 41 seconds ago transfer: 824 B received, 1.01 KiB sent persistent keepalive: every 20 seconds出力に秘密鍵を表示するには、
WG_HIDE_KEYS=never wg show wg0コマンドを使用します。VPN トンネルを介してトラフィックを送信している場合は、
latest handshakeエントリーとtransferエントリーのみが含まれることに注意してください。wg0デバイスの IP 設定を表示します。# ip address show wg0 10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 192.0.2.2/24 brd 192.0.2.255 scope global noprefixroute wg0 valid_lft forever preferred_lft forever inet6 2001:db8:1::2/32 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::73d9:6f51:ea6f:863e/64 scope link noprefixroute valid_lft forever preferred_lft forever