クライアント側の設定になります。厳密にはクライアントもサーバーもないので、クライアントであろうが、サーバーであろうが設定する項目は同じで、双方に自身のVPNインターフェースとピア(相手方)の設定をしてやるだけでVPN通信ができるというものになります。基本的に仕組み(どこに何を設定するのか)がわかればものすごく簡単です。
Androidから接続する場合
Andoroid端末の場合は、アプリをインストールして設定するだけなのでかなり簡単に設定ができます。以下の手順でクライアントの設定をします。
- WireGuardアプリをインストールします。
- 右下の+ボタンをクリックすると、以下の選択肢が出てくるので、選択します。
①ファイル、アーカイブからインポート
サーバーで作成したピアの設定ファイルをクライアントにコピーして読み込む
②QRコードをスキャン
サーバーで作成したピアの設定ファイルをQRコード化したものを読み込む
③空の状態から作成する
サーバーで設定したピアの情報を入力する - インターフェースとピアに必要な情報を設定します。
- その後、サーバー側でクライアントの公開鍵、必要に応じて事前共有鍵を設定します。
【設定画面】
- アプリをインストール後、右下の⊕ボタンをクリックします。
- 以下の選択肢が出てくるので、該当するものを選びます。今回は、空の状態から作成をしています。
- インターフェースとピアに必要なに情報を入力します。
秘密鍵、公開鍵を生成し、サーバーで割当てた(追加した)ピアのIP(VPNトンネル用IP)を入力します。
クライアントのピア側には、サーバーの公開鍵とサーバーへ接続できるグローバルIP:ポート番号
(今回の例では12.34.56.78:52180)とAllowed IPs(VPNを通してインターネットをする場合
は、0.0.0.0/0)を入力します。
設定が完了すると、接続する画面が出てくるのでトグルボタン(ON/OFFボタン)を有効化してや
ると以下の通りVPNが有効になります。
以下のように転送の受信ができていると、ちゃんとWireguardで通信できています。
Xubuntuから接続する場合
xubuntuの場合はubuntuと同じです。ちょっとだけコマンドなどが必要になるので、スマホやWindowsと比べるとちょっと敷居が高いですが、それでも簡単に設定できます。
以下のようにWireGuardをインストールしてVPNのインタフェースの設定をし、インターフェースを起動することでVPNのトンネルが作成できます。
- xubuntu を更新してから、snapにてWireGuard をインストールします。
$ sudo apt update
- クライアント(接続する端末用)公開鍵と秘密鍵を生成します。
$ sudo wg genkey | sudo tee /etc/wireguard/client.key
※ここには秘密鍵の内容が表示される。(同様の内容がteeコマンドにてclient.keyファイルに出力される。)
$ sudo cat /etc/wireguard/client.key | wg pubkey | sudo tee /etc/wireguard/client.pub
※ここには公開鍵の内容が表示される。(同様の内容がteeコマンドにてclient.keyファイルに出力される。)
- ファイルのパーミッションを変更します。
$ sudo chmod 600 /etc/wireguard/client.key
$ sudo chmod 600 /etc/wireguard/client.pub
- クライアント側の設定ファイルを作成します。※viエディタの使い方については割愛します。
# wg0はVPNインターフェース名(任意の名称)
$ sudo vi /etc/wireguard/wg0.conf
[Interface]
# 上記で生成した生成したクライアント用プライベートキー
PrivateKey = <プライベートキーの内容>
# サーバーで設定したクライアントのVPNインターフェースに割り当てるIPアドレス
Address = 198.28.7.2
[Peer]
# サーバー側で生成したサーバー用パブリックキーを指定
PublicKey = <サーバー側の公開鍵の内容>
# 【必要に応じて】事前に作成した事前共有鍵(Preshared-key)を指定
Presharedkey = <事前共有鍵の内容>
# VPN接続を許可するIPアドレスまたは ネットワーク範囲
# 下記の場合、WireGuardサーバー、家庭内ローカルネットワークを許可
AllowedIPs = 198.28.7.1,192.168.0.0/24
# サーバー(に接続できる家庭内ルーター)のグローバルIPアドレス:ポート番号
EndPoint = 12.34.56.78:51820
- 【任意】上記では、事前に事前共有鍵を作成しています。
(事前共有鍵の作成はサーバーでもクライアントでもどちらでも構いません。wireguardでは、wg genpskコマンドが用意されています。詳細はwgのヘルプ(sudo wg –help)で確認できます) - サーバー側でも、クライアントの公開鍵と必要に応じて事前共有鍵を設定します。
- 作成したファイルを元に、VPNインターフェース「wg0」を起動します。
$ sudo wg-quick up wg0
- ステータスの確認
きちんとVPNトンネル用のIPが割振られているか確認できます。
$ sudo wg
- VPN接続を終了する場合は以下のコマンドでWireguardを停止します。
$ sudo wg-quick down wg0
Windowsから接続する場合
WireGuardクライアントを以下のHPからダウンロードしてインストールします。
- Interfaceへサーバー側で設定したVPNトンネル用のIP、自動生成されたクライアントの秘密鍵、DNSを登録します
※インターフェース名は任意(wg0など)
[Interface]
PrivateKey =<クライアント側の秘密鍵の内容(自動生成)>
#サーバー側で割り振られたVPNトンネル用のIP
Address = 198.28.7.4/32
#DNSサーバー
DNS = 1.1.1.2
※Windowsの場合は、DNSを登録しないとインターネット等へ接続できません。
- Interfaceに続けてpeerにサーバー側の公開鍵、Allowed IPs、Endpoint、必要に応じて事前共有鍵などを記載します。
[Peer]
PublicKey = <サーバー側の公開鍵>
# 【必要に応じて】事前に作成した事前共有鍵を指定
Presharedkey = <事前共有鍵の内容>
# AllowedIPsにはVPNで通信するネットワークを記載。(0.0.0.0/0はインターネットも含め、全てVPNで通信)
AllowedIPs = 0.0.0.0/0
Endpoint = 12.34.56.78:51820
Windowsクライアント側の設定は以上です。後は、サーバー側のピアへ公開鍵と必要に応じて事前共有鍵を登録します。
- 最後に、Windows側で作成したWireGuardのインターフェース:インターフェース名を有効化します。
なお、Windowsクライアントの場合は、WireGuardアプリがスタートアップで起動されます。
Allowed IPsについて
Allowd IPsは、VPNトンネルに使用するIPの設定になります。
VPNの利用方法にもよると思いますが、私が利用するような、フリーWifiからVPNを通じてセキュアインターネットを利用したいといった場合は、0.0.0.0/0の設定で良いと思います。
VPNを通じてLAN内だけと通信が必要な場合は、ネットワークアドレスをカンマで区切って設定すればできますが、今のところ、その用途で利用する場面はないのでこの設定はあまり意識していません。