目次
文書の過去の版を表示しています。
WireGuard - SE-VPN
本家: WireGuard: fast, modern, secure VPN tunnel
ソースコード: Repositories - WireGuard
WireGuard は、フリーかつオープンソースのルーティング又はブリッジで安全なポイント・ツー・ポイント接続を作成するための技術である Virtual Private Network (VPN) の実装であり、アプリケーション及び通信プロトコルである。Linux カーネル内のモジュールとして実行され、IPsecやOpenVPNよりも優れた性能を目指している。WireGuardはJason A. Donenfeldによって書かれ、GNU GPL v2の下で配布されている。
SoftEther VPN + WireGuard🤤
SoftEther VPN の WireGuard サポートは 2021/03/01 に SoftEther VPN (開発版) に取り込まれました。
2022/02/04 現在も、SoftEther VPN の WireGuard サポートは Softether VPN (開発版) でのみの機能になります🤔
この機能を試すためには SoftEther VPN のビルド の手順で開発版の最新をビルドする必要がある😅

Commits · SoftEtherVPN/SoftEtherVPN
SoftEtherVPN - WireGuard integration. Possible? · Issue #604 · SoftEtherVPN/SoftEtherVPN
Implement support for WireGuard by davidebeatrici · Pull Request #1200 · SoftEtherVPN/SoftEtherVPN
WireGuard Tools のインストール
WireGuard Tools には wg、wg-quick が含まれていますが、公開鍵/秘密鍵を作成する場合は wg コマンドがクライアント、サーバーの何れかにインストールされていれば作業できる🤔
作業するマシンにインストールされていれば問題ないので、両方にインストールしておいても良い🤤
サーバー上 (Linux) で WireGuard コマンドを使う
wireguard-tools をインストールする😉
$ sudo dnf install wireguard-tools
メタデータの期限切れの最終確認: 2:48:27 時間前の 2022年06月21日 08時42分26秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== インストール: wireguard-tools x86_64 1.0.20210914-2.fc36 fedora 118 k トランザクションの概要 ======================================================================================================================== インストール 1 パッケージ ダウンロードサイズの合計: 118 k インストール後のサイズ: 290 k これでよろしいですか? [y/N]: y パッケージのダウンロード: wireguard-tools-1.0.20210914-2.fc36.x86_64.rpm 1.1 MB/s | 118 kB 00:00 ------------------------------------------------------------------------------------------------------------------------ 合計 258 kB/s | 118 kB 00:00 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 インストール中 : wireguard-tools-1.0.20210914-2.fc36.x86_64 1/1 scriptletの実行中: wireguard-tools-1.0.20210914-2.fc36.x86_64 1/1 検証 : wireguard-tools-1.0.20210914-2.fc36.x86_64 1/1 インストール済み: wireguard-tools-1.0.20210914-2.fc36.x86_64 完了しました!
$ wg --help
Usage: wg <cmd> [<args>] Available subcommands: show: Shows the current configuration and device information showconf: Shows the current configuration of a given WireGuard interface, for use with `setconf' set: Change the current configuration, add peers, remove peers, or change peers setconf: Applies a configuration file to a WireGuard interface addconf: Appends a configuration file to a WireGuard interface syncconf: Synchronizes a configuration file to a WireGuard interface genkey: Generates a new private key and writes it to stdout genpsk: Generates a new preshared key and writes it to stdout pubkey: Reads a private key from stdin and writes a public key to stdout You may pass `--help' to any of these subcommands to view usage.
Windows で WireGuard コマンドを使う
Scoop によるインストール
nonportable バケットの追加
$ scoop bucket add nonportable
Checking repo... ok The nonportable bucket was added successfully.
wireguard-np のインストール
$ sudo scoop install wireguard-np
Installing 'wireguard-np' (0.5.3) [64bit] wireguard-amd64-0.5.3.msi (2.7 MB) [==========================================================================] 100% Checking hash of wireguard-amd64-0.5.3.msi ... ok. Running installer script... Linking ~\scoop\apps\wireguard-np\current => ~\scoop\apps\wireguard-np\0.5.3 'wireguard-np' (0.5.3) was installed successfully!
インストーラによりシステム環境変数の Path に WireGuard のインストール先が追加されて wg コマンドにパスが通されている。
※ 再起動なしで最新 Path を PowerShell の $env:Path に反映させる。
$ $env:Path = [Environment]::SetEnvironmentVariable("Path", $env:Path + ";" + $env:ProgramW6432 + "\WireGuard", "User")
または
$ $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
wg コマンドの動作確認。
$ wg --help
Usage: C:\Program Files\WireGuard\wg.exe <cmd> [<args>] Available subcommands: show: Shows the current configuration and device information showconf: Shows the current configuration of a given WireGuard interface, for use with `setconf' set: Change the current configuration, add peers, remove peers, or change peers setconf: Applies a configuration file to a WireGuard interface addconf: Appends a configuration file to a WireGuard interface syncconf: Synchronizes a configuration file to a WireGuard interface genkey: Generates a new private key and writes it to stdout genpsk: Generates a new preshared key and writes it to stdout pubkey: Reads a private key from stdin and writes a public key to stdout You may pass `--help' to any of these subcommands to view usage.
vpncmd が WireGuard に対応していることを確認する
$ vpncmd localhost:5555 /server
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Developer Edition
Version 5.02 Build 5180   (Japanese)
Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com
Copyright (c) all contributors on SoftEther VPN project in GitHub.
Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation.
All rights reserved.
パスワード: ******************** <- 管理パスワードを入力
VPN Server "localhost" (ポート 5555) に接続しました。
VPN Server 全体の管理権限があります。
VPN Server>help <- コマンドを入力
下記の 215 個のコマンドが使用できます:
 About                      - バージョン情報の表示
 AcAdd                      - 接続元 IP 制限リストにルールを追加 (IPv4)
 AcAdd6                     - 接続元 IP 制限リストにルールを追加 (IPv6)
 AcDel                      - 接続元 IP 制限リスト内のルールの削除
 AcList                     - 接続元 IP 制限リストのルール一覧の取得
 AccessAdd                  - アクセスリストへのルールの追加 (IPv4)
 AccessAdd6                 - アクセスリストへのルールの追加 (IPv6)
 AccessAddEx                - アクセスリストへのルールの追加 (IPv4, 遅延・ジッタ・パケットロス設定可能)
 AccessAddEx6               - アクセスリストへのルールの追加 (IPv6, 遅延・ジッタ・パケットロス設定可能)
 AccessDelete               - アクセスリストからルールを削除
 AccessDisable              - アクセスリストのルールの無効化
 AccessEnable               - アクセスリストのルールの有効化
 AccessList                 - アクセスリストのルール一覧の取得
 AdminOptionList            - 仮想 HUB 管理オプションの一覧の取得
 AdminOptionSet             - 仮想 HUB 管理オプションの値の設定
 BridgeCreate               - ローカルブリッジ接続の作成
 BridgeDelete               - ローカルブリッジ接続の削除
 BridgeDeviceList           - ローカルブリッジに使用できる LAN カード一覧の取得
 BridgeList                 - ローカルブリッジ接続の一覧の取得
 CAAdd                      - 信頼する証明機関の証明書の追加
 CADelete                   - 信頼する証明機関の証明書の削除
 CAGet                      - 信頼する証明機関の証明書の取得
 CAList                     - 信頼する証明機関の証明書一覧の取得
 Caps                       - サーバーの機能・能力一覧の取得
 CascadeAnonymousSet        - カスケード接続のユーザー認証の種類を匿名認証に設定
 CascadeCertGet             - カスケード接続に用いるクライアント証明書の取得
 CascadeCertSet             - カスケード接続のユーザー認証の種類をクライアント証明書認証に設定
 CascadeCompressDisable     - カスケード接続の通信時のデータ圧縮の無効化
 CascadeCompressEnable      - カスケード接続の通信時のデータ圧縮の有効化
 CascadeCreate              - 新しいカスケード接続の作成
 CascadeDefaultCADisable    - システム証明書ストアからの証明書の信頼を無効化
 CascadeDefaultCAEnable     - システム証明書ストアからの証明書の信頼を有効化
 CascadeDelete              - カスケード接続の削除
 CascadeDetailSet           - カスケード接続の高度な通信設定の設定
 CascadeEncryptDisable      - カスケード接続の通信時の暗号化の無効化
 CascadeEncryptEnable       - カスケード接続の通信時の暗号化の有効化
 CascadeGet                 - カスケード接続の設定の取得
 CascadeHttpHeaderAdd       - プロキシサーバー経由で接続する際のカスタム HTTP ヘッダーを追加
 CascadeHttpHeaderDelete    - プロキシサーバー経由で接続する際のカスタム HTTP ヘッダーを削除
 CascadeHttpHeaderGet       - プロキシサーバー経由で接続する際のカスタム HTTP ヘッダー一覧を取得
 CascadeList                - カスケード接続一覧の取得
 CascadeOffline             - カスケード接続のオフライン状態への設定
 CascadeOnline              - カスケード接続のオンライン状態への設定
 CascadePasswordSet         - カスケード接続のユーザー認証の種類をパスワード認証に設定
 CascadePolicySet           - カスケード接続セッションのセキュリティポリシーの設定
 CascadeProxyHttp           - カスケード接続の接続方法を HTTP プロキシサーバー経由接続に設定
 CascadeProxyNone           - カスケード接続の接続方法を直接 TCP/IP 接続に設定
 CascadeProxySocks          - カスケード接続の接続方法を SOCKS4 プロキシサーバー経由接続に設定
 CascadeProxySocks5         - カスケード接続の接続方法を SOCKS4 プロキシサーバー経由接続に設定
 CascadeRename              - カスケード接続の名前の変更
 CascadeServerCertDelete    - カスケード接続のサーバー固有証明書の削除
 CascadeServerCertDisable   - カスケード接続のサーバー証明書の検証オプションの無効化
 CascadeServerCertEnable    - カスケード接続のサーバー証明書の検証オプションの有効化
 CascadeServerCertGet       - カスケード接続のサーバー固有証明書の取得
 CascadeServerCertSet       - カスケード接続のサーバー固有証明書の設定
 CascadeSet                 - カスケード接続の接続先の設定
 CascadeStatusGet           - カスケード接続の現在の状態の取得
 CascadeUsernameSet         - カスケード接続の接続に使用するユーザー名の設定
 Check                      - SoftEther VPN の動作が可能かどうかチェックする
 ClusterConnectionStatusGet - クラスタコントローラへの接続状態の取得
 ClusterMemberCertGet       - クラスタメンバの証明書の取得
 ClusterMemberInfoGet       - クラスタメンバの情報の取得
 ClusterMemberList          - クラスタメンバの一覧の取得
 ClusterSettingController   - VPN Server の種類をクラスタコントローラに設定
 ClusterSettingGet          - 現在の VPN Server のクラスタリング構成の取得
 ClusterSettingMember       - VPN Server の種類をクラスタメンバに設定
 ClusterSettingStandalone   - VPN Server の種類をスタンドアロンに設定
 ConfigGet                  - VPN Server の現在のコンフィグレーションの取得
 ConfigSet                  - VPN Server へのコンフィグレーションの書き込み
 ConnectionDisconnect       - VPN Server に接続中の TCP コネクションの切断
 ConnectionGet              - VPN Server に接続中の TCP コネクションの情報の取得
 ConnectionList             - VPN Server に接続中の TCP コネクション一覧の取得
 Crash                      - VPN Server / Bridge プロセスでエラーを発生させプロセスを強制終了する
 CrlAdd                     - 無効な証明書の追加
 CrlDel                     - 無効な証明書の削除
 CrlGet                     - 無効な証明書の取得
 CrlList                    - 無効な証明書リストの一覧の取得
 Debug                      - デバッグコマンドの実行
 DhcpDisable                - SecureNAT 機能の仮想 DHCP サーバー機能の無効化
 DhcpEnable                 - SecureNAT 機能の仮想 DHCP サーバー機能の有効化
 DhcpGet                    - SecureNAT 機能の仮想 DHCP サーバー機能の設定の取得
 DhcpSet                    - SecureNAT 機能の仮想 DHCP サーバー機能の設定の変更
 DhcpTable                  - SecureNAT 機能の仮想 DHCP サーバー機能のリーステーブルの取得
 DynamicDnsGetStatus        - ダイナミック DNS 機能の現在の状態の取得
 DynamicDnsSetHostname      - ダイナミック DNS ホスト名の設定
 EtherIpClientAdd           - EtherIP / L2TPv3 over IPsec サーバー機能のクライアントデバイスからの接続を受付けるための
                              接続設定の追加
 EtherIpClientDelete        - EtherIP / L2TPv3 over IPsec サーバー機能のクライアントデバイスからの接続を受付けるための
                              接続設定の削除
 EtherIpClientList          - EtherIP / L2TPv3 over IPsec サーバー機能のクライアントデバイスからの接続を受付けるための
                              接続設定の一覧表示
 ExtOptionList              - 仮想 HUB 拡張オプションの一覧の取得
 ExtOptionSet               - 仮想 HUB 管理オプションの値の設定
 Flush                      - VPN Server / Bridge の未保存の設定データを設定ファイルに強制保存する
 GroupCreate                - グループの作成
 GroupDelete                - グループの削除
 GroupGet                   - グループ情報と所属しているユーザー一覧の取得
 GroupJoin                  - グループにユーザーを追加
 GroupList                  - グループ一覧の取得
 GroupPolicyRemove          - グループのセキュリティポリシーの削除
 GroupPolicySet             - グループのセキュリティポリシーの設定
 GroupSet                   - グループ情報の設定
 GroupUnjoin                - グループからユーザーを削除
 Hub                        - 管理する仮想 HUB の選択
 HubCreate                  - 新しい仮想 HUB の作成
 HubCreateDynamic           - 新しいダイナミック仮想 HUB の作成 (クラスタリング用)
 HubCreateStatic            - 新しいスタティック仮想 HUB の作成 (クラスタリング用)
 HubDelete                  - 仮想 HUB の削除
 HubList                    - 仮想 HUB の一覧の取得
 HubSetDynamic              - 仮想 HUB の種類をダイナミック仮想 HUB に変更
 HubSetStatic               - 仮想 HUB の種類をスタティック仮想 HUB に変更
 IPsecEnable                - IPsec VPN サーバー機能の有効化 / 無効化
 IPsecGet                   - IPsec VPN サーバー機能の現在の設定の取得
 IpDelete                   - IP アドレステーブルエントリの削除
 IpTable                    - IP アドレステーブルデータベースの取得
 KeepDisable                - インターネット接続の維持機能の無効化
 KeepEnable                 - インターネット接続の維持機能の有効化
 KeepGet                    - インターネット接続の維持機能の取得
 KeepSet                    - インターネット接続の維持機能の設定
 LicenseAdd                 - 新しいライセンスキーの登録
 LicenseDel                 - 登録されているライセンスの削除
 LicenseList                - 登録されているライセンス一覧の取得
 LicenseStatus              - 現在の VPN Server のライセンス状態の取得
 ListenerCreate             - TCP リスナーの追加
 ListenerDelete             - TCP リスナーの削除
 ListenerDisable            - TCP リスナーの動作停止
 ListenerEnable             - TCP リスナーの動作開始
 ListenerList               - TCP リスナー一覧の取得
 LogDisable                 - セキュリティログまたはパケットログの無効化
 LogEnable                  - セキュリティログまたはパケットログの有効化
 LogFileGet                 - ログファイルのダウンロード
 LogFileList                - ログファイル一覧の取得
 LogGet                     - 仮想 HUB のログ保存設定の取得
 LogPacketSaveType          - パケットログに保存するパケットの種類と保存内容の設定
 LogSwitchSet               - ログファイルの切り替え周期の設定
 MacDelete                  - MAC アドレステーブルエントリの削除
 MacTable                   - MAC アドレステーブルデータベースの取得
 MakeCert                   - 新しい X.509 証明書と秘密鍵の作成 (1024 bit)
 MakeCert2048               - 新しい X.509 証明書と秘密鍵の作成 (2048 bit)
 NatDisable                 - SecureNAT 機能の仮想 NAT 機能の無効化
 NatEnable                  - SecureNAT 機能の仮想 NAT 機能の有効化
 NatGet                     - SecureNAT 機能の仮想 NAT 機能の設定の取得
 NatSet                     - SecureNAT 機能の仮想 NAT 機能の設定の変更
 NatTable                   - SecureNAT 機能の仮想 NAT 機能のセッションテーブルの取得
 Offline                    - 仮想 HUB をオフラインにする
 Online                     - 仮想 HUB をオンラインにする
 OpenVpnMakeConfig          - OpenVPN 互換サーバー機能に接続可能なサンプルの OpenVPN 設定ファイルの生成
 OptionsGet                 - 仮想 HUB のオプション設定の取得
 PolicyList                 - セキュリティポリシーの種類と設定可能値の一覧を表示
 PortsUDPGet                - サーバーにおける着信 UDP ポートの一覧を表示します。
 PortsUDPSet                - サーバーが着信を受付ける UDP ポート番号の一覧を設定します。
 ProtoOptionsGet            - 指定されたプロトコル固有のオプション値を表示します。
 ProtoOptionsSet            - 特定のプロトコル固有のオプション値を設定します。
 RadiusServerDelete         - ユーザー認証に使用する RADIUS サーバー設定の削除
 RadiusServerGet            - ユーザー認証に使用する RADIUS サーバー設定の取得
 RadiusServerSet            - ユーザー認証に使用する RADIUS サーバーの設定
 Reboot                     - VPN Server サービスの再起動
 RouterAdd                  - 新しい仮想レイヤ 3 スイッチの定義
 RouterDelete               - 仮想レイヤ 3 スイッチの削除
 RouterIfAdd                - 仮想レイヤ 3 スイッチへの仮想インターフェイスの追加
 RouterIfDel                - 仮想レイヤ 3 スイッチの仮想インターフェイスの削除
 RouterIfList               - 仮想レイヤ 3 スイッチに登録されているインターフェイス一覧の取得
 RouterList                 - 仮想レイヤ 3 スイッチ一覧の取得
 RouterStart                - 仮想レイヤ 3 スイッチの動作の開始
 RouterStop                 - 仮想レイヤ 3 スイッチの動作の停止
 RouterTableAdd             - 仮想レイヤ 3 スイッチへのルーティングテーブルエントリの追加
 RouterTableDel             - 仮想レイヤ 3 スイッチのルーティングテーブルエントリの削除
 RouterTableList            - 仮想レイヤ 3 スイッチのルーティングテーブル一覧の取得
 SecureNatDisable           - 仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の無効化
 SecureNatEnable            - 仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の有効化
 SecureNatHostGet           - SecureNAT 機能の仮想ホストのネットワークインターフェイス設定の取得
 SecureNatHostSet           - SecureNAT 機能の仮想ホストのネットワークインターフェイス設定の変更
 SecureNatStatusGet         - 仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の動作状況の取得
 ServerCertGet              - VPN Server の SSL 証明書の取得
 ServerCertRegenerate       - 指定された CN (Common Name) を持つ自己署名証明書を新たに作成し VPN Server に登録
 ServerCertSet              - VPN Server の SSL 証明書と秘密鍵の設定
 ServerCipherGet            - VPN 通信で使用される暗号化アルゴリズムの取得
 ServerCipherSet            - VPN 通信で使用される暗号化アルゴリズムの設定
 ServerInfoGet              - サーバー情報の取得
 ServerKeyGet               - VPN Server の SSL 証明書の秘密鍵の取得
 ServerPasswordSet          - VPN Server の管理者パスワードの設定
 ServerStatusGet            - サーバーの現在の状態の取得
 SessionDisconnect          - セッションの切断
 SessionGet                 - セッション情報の取得
 SessionList                - 接続中のセッション一覧の取得
 SetEnumAllow               - 仮想 HUB の匿名ユーザーへの列挙の許可設定
 SetEnumDeny                - 仮想 HUB の匿名ユーザーへの列挙の禁止設定
 SetHubPassword             - 仮想 HUB の管理パスワードを設定する
 SetMaxSession              - 仮想 HUB の最大同時接続セッション数を設定する
 SetStaticNetwork           - 仮想 HUB のスタティック IPv4 ネットワークパラメータを設定する
 StatusGet                  - 仮想 HUB の現在の状況の取得
 SyslogDisable              - syslog 送信機能の無効化
 SyslogEnable               - syslog 送信機能の設定
 SyslogGet                  - syslog 送信機能の取得
 TrafficClient              - 通信スループット測定ツールクライアントの実行
 TrafficServer              - 通信スループット測定ツールサーバーの実行
 UserAnonymousSet           - ユーザーの認証方法を匿名認証に設定
 UserCertGet                - 固有証明書認証のユーザーの登録されている証明書の取得
 UserCertSet                - ユーザーの認証方法を固有証明書認証に設定し証明書を設定
 UserCreate                 - ユーザーの作成
 UserDelete                 - ユーザーの削除
 UserExpiresSet             - ユーザーの有効期限の設定
 UserGet                    - ユーザー情報の取得
 UserList                   - ユーザー一覧の取得
 UserNTLMSet                - ユーザーの認証方法を NT ドメイン認証に設定
 UserPasswordSet            - ユーザーの認証方法をパスワード認証に設定しパスワードを設定
 UserPolicyRemove           - ユーザーのセキュリティポリシーの削除
 UserPolicySet              - ユーザーのセキュリティポリシーの設定
 UserRadiusSet              - ユーザーの認証方法を RADIUS 認証に設定
 UserSet                    - ユーザー情報の変更
 UserSignedSet              - ユーザーの認証方法を署名済み証明書認証に設定
 VpnAzureGetStatus          - VPN Azure 機能の現在の状態の取得
 VpnAzureSetEnable          - VPN Azure 機能の有効化 / 無効化
 VpnOverIcmpDnsEnable       - VPN over ICMP / VPN over DNS サーバー機能を有効化 / 無効化
 VpnOverIcmpDnsGet          - 現在の VPN over ICMP / VPN over DNS サーバー機能の設定を取得
 WgkAdd                     - WireGuard 公開鍵の追加
 WgkDelete                  - WireGuard 公開鍵の削除
 WgkEnum                    - Wireguard 公開鍵一覧の取得
それぞれのコマンドの使用方法については、"コマンド名 ?" と入力するとヘルプが表示されます。
コマンドは正常に終了しました。
VPN Server>
以下のコマンドが追加されていることを確認する🤤
...
 SetStaticNetwork           - 仮想 HUB のスタティック IPv4 ネットワークパラメータを設定す
                              る
...
 WgkAdd                     - WireGuard 公開鍵の追加
 WgkDelete                  - WireGuard 公開鍵の削除
 WgkEnum                    - Wireguard 公開鍵一覧の取得
クライアント公開鍵・秘密鍵の生成
秘密鍵は表示せずに wgclient.key ファイルに保存し、公開鍵は表示しつつ wgclient.pub ファイルにも保存する。
$ wg genkey | tee wgclient.key | wg pubkey | tee wgclient.pub
kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE=
説明① - wg genkey コマンドは秘密鍵を生成する。
$ wg genkey
UJPyUEods1vy/d58w5M0YYB8yza0sBWTC+QUBH6TKVo=
説明② - tee wgclient.key コマンドは標準出力に出力しつつ wgclient.key ファイルにも保存する。
$ wg genkey | tee wgclient.key
UJPyUEods1vy/d58w5M0YYB8yza0sBWTC+QUBH6TKVo=
説明③ - wg pubkey コマンドはリダイレクト(秘密鍵は表示されない)で入力された秘密鍵から公開鍵を生成して標準出力に出力する。
$ wg genkey | tee wgclient.key | wg pubkey
kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE=
説明④ - tee wgclient.pub コマンドは標準出力に公開鍵を表示しつつ wgclient.pub ファイルにも保存する。
$ wg genkey | tee wgclient.key | wg pubkey | tee wgclient.pub
kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE=
クライアント公開鍵をサーバーに登録(WgkAdd)
$ vpncmd localhost:5555 /server /cmd WgkAdd --help
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Developer Edition Version 5.02 Build 5180 (Japanese) Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com Copyright (c) all contributors on SoftEther VPN project in GitHub. Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation. All rights reserved. パスワード: ******************** VPN Server "localhost" (ポート 5555) に接続しました。 VPN Server 全体の管理権限があります。 VPN Server>WgkAdd --help WgkAdd コマンド - WireGuard 公開鍵の追加 コマンド "WgkAdd" のヘルプ [目的] WireGuard 公開鍵の追加 [説明] 新しい WireGuard 公開鍵をサーバーに追加します。 公開鍵を追加すると、関連付けたユーザーとして仮想 HUB に WireGuard クライアントが接続できるようになります。 このコマンドを実行するには、VPN Server の管理者権限が必要です。 [使用方法] WgkAdd [key] [/HUB:hub] [/USER:user] [パラメータ] key - 新しく追加する WireGuard 公開鍵を指定します。追加しようとしている鍵が公開鍵であることを確認してください。 /HUB - 公開鍵に関連付ける仮想ハブを指定します。 /USER - 指定された仮想 HUB 内で公開鍵に関連付けるユーザー名を指定します。
$ vpncmd localhost:5555 /server /cmd WgkAdd kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE= /HUB:VPN /USER:tomoyan
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Developer Edition Version 5.02 Build 5180 (Japanese) Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com Copyright (c) all contributors on SoftEther VPN project in GitHub. Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation. All rights reserved. パスワード: ******************** VPN Server "localhost" (ポート 5555) に接続しました。 VPN Server 全体の管理権限があります。 VPN Server>WgkAdd kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE= /HUB:VPN /USER:tomoyan WgkAdd コマンド - WireGuard 公開鍵の追加 コマンドは正常に終了しました。
もしくは…
$ vpncmd localhost:5555 /server
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Developer Edition Version 5.02 Build 5180 (Japanese) Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com Copyright (c) all contributors on SoftEther VPN project in GitHub. Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation. All rights reserved. パスワード: ******************** VPN Server "localhost" (ポート 5555) に接続しました。 VPN Server 全体の管理権限があります。 VPN Server>WgkAdd WgkAdd コマンド - WireGuard 公開鍵の追加 公開鍵: kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE= 関連付ける仮想 HUB の名前: VPN ユーザー名: tomoyan コマンドは正常に終了しました。 VPN Server>exit
クライアント公開鍵一覧(WgkEnum)
$ vpncmd localhost:5555 /server /cmd WgkEnum --help
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Developer Edition Version 5.02 Build 5180 (Japanese) Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com Copyright (c) all contributors on SoftEther VPN project in GitHub. Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation. All rights reserved. パスワード: ******************** VPN Server "localhost" (ポート 5555) に接続しました。 VPN Server 全体の管理権限があります。 VPN Server>WgkEnum --help WgkEnum コマンド - Wireguard 公開鍵一覧の取得 コマンド "WgkEnum" のヘルプ [目的] Wireguard 公開鍵一覧の取得 [説明] 現在サーバーに登録されている WireGuard 公開鍵の一覧を取得します。 WgkAdd コマンドで公開鍵の追加を、WgkDelete コマンドで公開鍵の削除を行うことができます。 このコマンドを実行するには、VPN Server の管理者権限が必要です。 [使用方法] WgkEnum
$ vpncmd localhost:5555 /server /cmd WgkEnum
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Developer Edition Version 5.02 Build 5180 (Japanese) Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com Copyright (c) all contributors on SoftEther VPN project in GitHub. Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation. All rights reserved. パスワード: ******************** VPN Server "localhost" (ポート 5555) に接続しました。 VPN Server 全体の管理権限があります。 VPN Server>WgkEnum WgkEnum コマンド - Wireguard 公開鍵一覧の取得 公開鍵 |仮想 HUB 名|ユーザー名 --------------------------------------------+-----------+---------- kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE=|VPN |tomoyan コマンドは正常に終了しました。
クライアント公開鍵をサーバーから削除(WgkDelete)
$ vpncmd localhost:5555 /server /cmd WgkDelete --help
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Developer Edition Version 5.02 Build 5180 (Japanese) Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com Copyright (c) all contributors on SoftEther VPN project in GitHub. Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation. All rights reserved. パスワード: ******************** VPN Server "localhost" (ポート 5555) に接続しました。 VPN Server 全体の管理権限があります。 VPN Server>WgkDelete --help WgkDelete コマンド - WireGuard 公開鍵の削除 コマンド "WgkDelete" のヘルプ [目的] WireGuard 公開鍵の削除 [説明] サーバーに登録された WireGuard 公開鍵を削除します。 公開鍵を削除すると WireGuard クライアントは仮想 HUB に接続できなくなります。 このコマンドを実行するには、VPN Server の管理者権限が必要です。 [使用方法] WgkDelete [key] [パラメータ] key - 削除する WireGuard 公開鍵を指定します。
$ vpncmd localhost:5555 /server /cmd WgkDelete kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE=
vpncmd コマンド - SoftEther VPN Developer Edition コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Developer Edition Version 5.02 Build 5180 (Japanese) Compiled 2022/06/20 20:24:15 by tomoyan at skv001.monsters-g.com Copyright (c) all contributors on SoftEther VPN project in GitHub. Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation. All rights reserved. パスワード: ******************** VPN Server "localhost" (ポート 5555) に接続しました。 VPN Server 全体の管理権限があります。 VPN Server>WgkDel kOHhTudkiKHHG/6x57FQD5cjft8IjeE773rferdP2iE= WgkDelete コマンド - WireGuard 公開鍵の削除 コマンドは正常に終了しました。
クライアントの接続に必要なサーバーの公開鍵・事前共通鍵
サーバーの WireGuard の設定を調べる。
$ sudo grep -3 -P "PresharedKey" /usr/local/libexec/softether/vpnserver/vpn_server.config
   declare WireGuard
   {
    bool Enabled true
    string PresharedKey LejepJw9wyHqewP6UYIFJLeR+TMgvMKbMQ/THZ3i0gg=
    string PrivateKey YK7GR6jznS7nVtOaEldrr6iAMjrREKzWOn6NBcprHmc=
   }
  }
公開鍵は秘密鍵(PrivateKey)から wg pubkey コマンドで生成する。
$ echo YK7GR6jznS7nVtOaEldrr6iAMjrREKzWOn6NBcprHmc= | wg pubkey
BwXr25M3RARwvEWkFkzyHwd4hmhJ4qv7+w+YUrLV0XU=
事前共通鍵(PresharedKey)はサーバーの WireGuard の設定をそのまま利用する。
LejepJw9wyHqewP6UYIFJLeR+TMgvMKbMQ/THZ3i0gg=
qrencode
$ sudo dnf install qrencode
メタデータの期限切れの最終確認: 0:49:40 時間前の 2022年06月21日 12時12分23秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== インストール: qrencode x86_64 4.1.1-2.fc36 fedora 25 k トランザクションの概要 ======================================================================================================================== インストール 1 パッケージ ダウンロードサイズの合計: 25 k インストール後のサイズ: 42 k これでよろしいですか? [y/N]: y パッケージのダウンロード: qrencode-4.1.1-2.fc36.x86_64.rpm 247 kB/s | 25 kB 00:00 ------------------------------------------------------------------------------------------------------------------------ 合計 53 kB/s | 25 kB 00:00 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 インストール中 : qrencode-4.1.1-2.fc36.x86_64 1/1 scriptletの実行中: qrencode-4.1.1-2.fc36.x86_64 1/1 検証 : qrencode-4.1.1-2.fc36.x86_64 1/1 インストール済み: qrencode-4.1.1-2.fc36.x86_64 完了しました!
$ qrencode -h
qrencode version 4.1.1
Copyright (C) 2006-2017 Kentaro Fukuchi
Usage: qrencode [-o FILENAME] [OPTION]... [STRING]
Encode input data in a QR Code and save as a PNG or EPS image.
  -h           display this message.
  --help       display the usage of long options.
  -o FILENAME  write image to FILENAME. If '-' is specified, the result
               will be output to standard output. If -S is given, structured
               symbols are written to FILENAME-01.png, FILENAME-02.png, ...
               (suffix is removed from FILENAME, if specified)
  -r FILENAME  read input data from FILENAME.
  -s NUMBER    specify module size in dots (pixels). (default=3)
  -l {LMQH}    specify error correction level from L (lowest) to H (highest).
               (default=L)
  -v NUMBER    specify the minimum version of the symbol. (default=auto)
  -m NUMBER    specify the width of the margins. (default=4 (2 for Micro))
  -d NUMBER    specify the DPI of the generated PNG. (default=72)
  -t {PNG,PNG32,EPS,SVG,XPM,ANSI,ANSI256,ASCII,ASCIIi,UTF8,UTF8i,ANSIUTF8,ANSIUTF8i,ANSI256UTF8}
               specify the type of the generated image. (default=PNG)
  -S           make structured symbols. Version number must be specified with '-v'.
  -k           assume that the input text contains kanji (shift-jis).
  -c           encode lower-case alphabet characters in 8-bit mode. (default)
  -i           ignore case distinctions and use only upper-case characters.
  -8           encode entire data in 8-bit mode. -k, -c and -i will be ignored.
  -M           encode in a Micro QR Code.
  -V           display the version number and copyrights of the qrencode.
  [STRING]     input data. If it is not specified, data will be taken from
               standard input.
  Try "qrencode --help" for more options.
WireGuard の技術資料
NDSS 2017: WireGuard: Next Generation Kernel Network Tunnel
WireGuard: Next Generation Kernel Network Tunnel – NDSS Symposium
訳: WireGuard:次世代カーネルネットワークトンネル - NDSSシンポジウム
Slide
WireGuard - Fast, Modern, Secure VPN Tunnel - NDSS 2017 Presentation(PDF)
Video

