linux:softether_vpn:wireguard

WireGuard

WireGuard Logo


本家: WireGuard: fast, modern, secure VPN tunnel
ソースコード: Repositories - WireGuard

WireGuard は、フリーかつオープンソースのルーティング又はブリッジで安全なポイント・ツー・ポイント接続を作成するための技術である Virtual Private Network (VPN) の実装であり、アプリケーション及び通信プロトコルである。LinuxLinux カーネルを用いたオペレーティングシステム カーネル内のモジュールとして実行され、IPsecやOpenVPNよりも優れた性能を目指している。WireGuardはJason A. Donenfeldによって書かれ、GNU GPL v2の下で配布されている。

SoftEther VPN Logo

WireGuard Logo

SoftEther VPN の WireGuard サポートは 2021/03/01SoftEther VPN (開発版) に取り込まれました。
2022/02/04 現在も、SoftEther VPN の WireGuard サポートは Softether VPN (開発版) でのみの機能になります🤔
この機能を試すためには SoftEther VPN のビルド の手順で開発版の最新をビルドする必要がある😅
Commits 2021/03/01 · SoftEtherVPN/SoftEtherVPN
Commits · SoftEtherVPN/SoftEtherVPN

SoftEtherVPN - WireGuard integration. Possible? · Issue #604 · SoftEtherVPN/SoftEtherVPN
Implement support for WireGuard by davidebeatrici · Pull Request #1200 · SoftEtherVPN/SoftEtherVPN

WireGuard Tools には wgwg-quick が含まれていますが、公開鍵/秘密鍵を作成する場合は wg コマンドがクライアント、サーバーの何れかにインストールされていれば作業できる🤔
作業するマシンにインストールされていれば問題ないので、両方にインストールしておいても良い🤤

サーバー上で 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 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=

$ 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

$ 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
コマンドは正常に終了しました。

$ 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=

$ 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: Next Generation Kernel Network Tunnel – NDSS Symposium
訳: WireGuard:次世代カーネルネットワークトンネル - NDSSシンポジウム

Slide
WireGuard - Fast, Modern, Secure VPN Tunnel - NDSS 2017 Presentation(PDF)

Video

  • linux/softether_vpn/wireguard.txt
  • 最終更新: 2022/06/24 06:57
  • by ともやん