世の中で VPNと言えば L2TP/IPsec が代表的です。
L2TP/IPsec は、接続元が Windows であったり、それなりの高価なルータを持っていれば比較的簡単に接続できる一方で、Linux サーバから接続しようとすると初心者ではなかなかハードルの高いところがあります。
このような中、さくらのクラウドの VPNルータには「WireGuardサーバ機能」があり、これを使って PC でも Linux サーバでも VPN 接続がおこなえます。また、WireGuard のプロトコルスタック自体は Linux 5.6 以降、kernel に取り込まれており、Linux で利用できる VPN としてはかなりハードルが低くなっています。
「WireGuardサーバ機能」はさくらのクラウドのリモートアクセスVPN として提供されており、接続元が動的グローバルIPアドレスでも利用可能で、VPNルータにピアの公開鍵を登録して接続します。また、ピアは複数登録でき、同時に利用可能です。
一方、「WireGuardサーバ機能」はリモートアクセスVPNの位置づけのため、接続元のローカルネットワークからの転送パケットには対応していません。つまり、サイト間VPNのように WireGuard で接続しているサーバをゲートウェイとして、クラウド側と接続元の間でローカルネットワーク間を VPN でつなげる、といった利用はできません。
但し、接続元のローカルネットワークから NAPT 経由でクラウド側のローカルネットワークにアクセスさせることは可能です。Linux で接続するなら、そこまでできると便利ですよね。
ここでは今回と次回の2回にわたって、VPNルータのスタンダードプランで「WireGuardサーバ機能」を使って、自宅の Windows PC と Linux サーバからクラウド側のローカルネットワークにあるサーバへの接続について紹介します。ついでに、NAPT 経由で自宅ネットワーク内の任意の Linux サーバからクラウド側への接続もできるようにしてみます。
前編(今回):
- 自宅の Windows PC から VPNルータに接続してクラウドサーバにアクセス
後編(次回):
- 自宅の Linuxサーバから VPNルータに接続してクラウドサーバにアクセス
- VPNルータに接続した自宅の Linuxサーバで NAPT を設定してゲートウェイ化し、自宅の別の Linuxサーバからクラウドサーバにアクセス
なお、ここでの説明は VPN およびネットワーク接続で必要な最低限のものです。実際の運用で利用する場合は、アクセスコントロールやセキュリティへの対応は十分にご検討ください。
全体構成
VPNルータのスタンダードプランの上流側ネットワーク接続先は共有セグメントになります。標準付属 IPv4 アドレスが1個あり、外部との接続で利用します。また、クラウド側のサーバと接続をするためには、その間にスイッチが必要です。
今回使用するローカルネットワーク構成は下記になります。
| 自宅ネットワーク: 192.168.1.0/24 クラウド側ネットワーク: 10.0.1.0/24 |
クラウド側ネットワークの IPアドレスは下記のように割り当てます。
| VPNルータ 10.0.1.1 (デフォルトGW) クラウドサーバ1 10.0.1.2 |
自宅ネットワークのサーバの IPアドレスは下記のように割り当てます。
| ブロードバンドルータ 192.168.1.1 (デフォルトGW) 自宅GWサーバ 192.168.1.100 (VPNルータ接続GW) 自宅サーバ1 192.168.1.101 |
また、WireGuard のピアがトンネル内で使用する IPアドレスの範囲と、各ピアへの IPアドレスを下記のように割り当てます。
| ピアの IPアドレス範囲 172.16.1.0/24 VPNルータ 172.16.1.1 自宅PC 172.16.1.2 自宅GWサーバ 172.16.1.3 |
さて、まずは自宅PC からの接続を確認していきましょう。
公開鍵の作成
WireGuard の接続は公開鍵で認証するため、先に公開鍵を用意します。
WireGuard のダウンロードページより、Windows 用のインストーラをダウンロードしてインストールします。
https://www.wireguard.com/install
インストール後、WireGuard アプリを起動して、画面下の「トンネルの追加」のプルダウンから「空のトンネルを追加」を選択します。

名前に「SAKURA-VPN」と入力して「保存」ボタンを押して保存します。

トンネルの追加後に、トンネルの情報として画面に「公開鍵」が表示されます。この公開鍵は、後ほど VPNルータの WireGuard のピア設定時に使用します。

VPNルータの設定
さくらのクラウド画面にログインして、VPNルータを設定していきます。
スイッチの作成
VPNルータとサーバの間をつなぐスイッチを作成します。
- 左側メニューの「ネットワーク」カテゴリ内にある「スイッチ」をクリック
- 右上の「追加」ボタンをクリック
スイッチの新規作成画面が表示されます。下記を入力します。
| 名前: スイッチ1 ルータ: いいえ |
「作成」ボタンをクリックすることでスイッチが作成されます。

VPNルータの作成
VPNルータを作成します。
- 左側メニューの「アプライアンス」カテゴリ内にある「VPNルータ」をクリック
- 右上の「追加」ボタンをクリック
VPNルータの新規作成画面が表示されます。下記を入力します。
| プラン スタンダード インターネット接続 有効 名前 VPNルータ1 |
「作成」ボタンをクリックすることでVPNルータが作成されます。

VPNルータのインターフェース設定
VPNルータを作成したら、引き続きインタフェースの確認と接続設定をします。
まずはグローバルネットワーク側インターフェースの内容を確認します。
- 「アプライアンス」=>「VPNルータ」
- 「VPNルータ1」をダブルクリック
- 「インターフェース」タブをクリック
下記の内容が表示されます。
| インタフェース グローバル スイッチ 共有セグメント IPアドレス (グローバルIPアドレス) プリフィックス /24 |

上記の IPアドレスが、WireGuard の接続先 IPアドレスになります。
次に、スイッチへの接続を設定します。
- 「インターフェース」タブのリストにある「プライベート1」の右側の鉛筆アイコンをクリック
インターフェース設定画面が表示されます。下記を入力します。
| スイッチ 既存スイッチを接続 接続先スイッチ: スイッチ1 IPアドレス 10.0.1.1 プリフィックス /24 |
「更新前チェック」ボタンを押して、「更新」ボタンを押した後、「反映」ボタンをクリックし、VPNルータ側への設定内容を反映します。

VPNルータを起動
VPNルータを起動します。
- 「アプライアンス」=>「VPNルータ」
- 「VPNルータ1」を選択
- 右上の「電源操作」で「起動」を選択
- 「操作対象:一つまたは複数のリソースに対して操作を実行します」と表示されるので、右上の「起動」ボタンをクリックして起動
「WireGuardサーバ機能」の設定と、ピアの追加
引き続き、VPNルータの「WireGuardサーバ機能」を設定します。
- 「アプライアンス」=>「VPNルータ」
- 「VPNルータ1」をダブルクリック
- 「リモートアクセス」タブ→「WireGuardサーバ」タブを選択します。
- WireGuardサーバ機能の設定状況が表示されるので、「編集」ボタンをクリックします。
WireGuardサーバ機能の設定画面が表示されるので、各項目を選択・入力します。
| 有効/無効 有効 IPアドレス 172.16.1.1/24 ログ 有効 |
「更新」ボタンを押した後、「反映」ボタンをクリックし、VPNルータ側への設定内容を反映します。

上記の IPアドレスが、VPNルータ側のトンネル内の IPアドレスです。後ほど設定するピアの IPアドレスは、ここで設定した /24 のプリフィックスの範囲内にする必要があります。
また、上記反映後、「WireGuardサーバ」に公開鍵が表示されるので、控えておきます。

引き続き「WireGuardサーバ」の画面で、「自宅PC」のピアの設定をします。
- 「WireGuardピア」の下の「追加」ボタンをクリック
ピア追加設定画面が表示されます。下記を入力します。
| 名前 自宅PC IPアドレス 172.16.1.2 公開鍵 (Windows の WireGuard アプリで作成した公開鍵) |
「更新」ボタンを押した後、「反映」ボタンをクリックし、VPNルータ側への設定内容を反映します。

自宅PCの設定と確認
WireGuard設定
自宅の Windows PC で WireGuard の接続設定をおこないます。
- WireGuard アプリを起動
- 「SAKURA-VPN」を選択し、右下の「編集」ボタンを押す
既に設定されている行はそのままで、更に設定を追記します。
[Interface]
PrivateKey = (既に設定されている内容のまま)
Address = 172.16.0.2
ListenPort = 51820
[Peer]
PublicKey = (VPNルータの WireGuardサーバの公開鍵)
Endpoint = (VPNルータのグローバルIPアドレス):51820
AllowedIPs = 172.16.0.0/24,10.0.1.0/24
PersistentKeepAlive = 25「保存」ボタンを押して保存します。

ここで AllowedIPs に「172.16.1.0/24」と「10.0.1.0/24」が入っていることに注意します。前者は WireGuard のトンネルで使用するピアの IPアドレス範囲、後者はクラウド側のローカルネットワークのサブネットです。この設定をおこなうことで、自宅PC とクラウド側のローカルネットワークのサーバとの間で通信をおこなうことができます。
VPNルータとの接続確認
自宅PCから WireGuard で VPNルータに接続してみます。
- WireGuardアプリで「SAKURA-VPN」を選択し、「有効化」ボタンを押す
「状態」が「有効」になれば、正常に接続できています。

トンネルを通じて VPNルータ側のピアに対して通信の疎通確認をします。
コマンドプロンプトを開いて、VPNルータ側のピアに ping を送ってみます。
ping -n 3 172.16.1.1
ping が返ってきて、VPNルータとの疎通が確認できました。
クラウドのサーバ作成
クラウド側のサーバを作成します。OS は AlmaLinux 9 を使用します。
- 左側のサイドメニューより「サーバ」を選択
- 右上の「追加」を選択
- 「シンプルモード」にチェックを入れる
下記の内容で作成します。
- 「Unix / Linux」タブから「AlmaLinux」の「9.8 64bit」を選択
- サーバプラン、ディスクプランは適宜、選択
- 接続先のネットワーク
- 「スイッチ」を選択
- スイッチは「スイッチ1」を選択
- サーバの設定
- IPアドレスの設定 固定IPアドレスの利用
- IPアドレス 10.0.1.2
- ネットマスク 24
- ゲートウェイ 10.0.1.1
- 管理ユーザのパスワード 適宜
- 公開鍵 なし
- ホスト名 host01
「作成」ボタンを押して、サーバが起動するまでしばらく待ちます。
SSH ログイン設定
デフォルトでは root のパスワードログインはできませんが、検証のため sshd の設定を変更して root のパスワードログインを許可します。
設定のため、コンソールを開きます。
- 左側のサイドメニューより「サーバ」を選択
- 「host01」をダブルクリックして、「コンソール」を選択
- サーバ作成時に設定したパスワードで、root アカウントにログイン
下記コマンドを実行します。
# echo 'PermitRootLogin yes' > /etc/ssh/sshd_config.d/90-local.conf
# systemctl restart sshd
自宅PCからクラウドサーバへの接続確認
目的通り、自宅PC からクラウドのサーバへログインできるか確認します。
- 自宅PC の WireGuard アプリを起動
- 前回と同様に VPNルータに接続
クラウドのサーバへ通信できるか、ping で疎通確認します。
コマンドプロンプトを開いて、下記を実行します。
ping -n 3 10.0.1.2ping が確認できたら、ssh で root にパスワードでログインできることを確認します。
ssh root@10.0.1.2
無事、ログインできることを確認しました。
まとめ
今回は、自宅の Windows PC より、WireGuard の VPN 経由でクラウドのサーバへのアクセスができるまでを確認しました。
次回は、自宅の Linux サーバから WireGuard でアクセスする確認をおこないます。