目次
WireGuard - SoftEther 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