• 記事
  • Azureを中継して社内へVPN接続!...
Azureを中継して社内へVPN接続! クラウド上のWireGuard VMで会社と社員宅をつなぐVPNを作ってみる

Azureを中継して社内へVPN接続! クラウド上のWireGuard VMで会社と社員宅をつなぐVPNを作ってみる

それでは、実際の方法を見ていこう。まずはクラウド環境を用意する。

今回はAzureを利用したが、Amazon EC2(無料特典対象のt2.microや低価格なt2.nanoでもOK)など、ほかのサービスでも構わない。

OSにはUbuntu 20.04を利用した。最低限のアップデートをした後、「sudo apt install wireguard」と、一発でWireGuardをインストールできて簡単なのが理由だ。

このほか、VMの設定としては、セキュリティグループでWireGuardのポート(標準51820だが任意でOK)を通過させておく必要がある。

外部からアクセスできるDNS名を設定WireGuardのポートを通過させる

準備ができたら、サーバーの設定を行う。まずは、「/etc/sysctl.conf」を編集し、IPv4をフォワードできるようにする。

net.ipv4.ip_forward=1

続いて、以下のように接続に利用する公開鍵と秘密鍵のペアを作成する。サーバーおよび接続する全てのクライアント(ピア)の分が必要となる。ここでは「client1」しか作成していないが、client2、client3などと繰り返して作成しておく。

Azureを中継して社内へVPN接続! クラウド上のWireGuard VMで会社と社員宅をつなぐVPNを作ってみる

mkdir wgkeyscd wgkeyswg genkey > server_private.keywg pubkey > server_public.key wg genkey > client1_private.keywg pubkey > client1_public.key sudo chmod 600 *.key

これらの鍵は、WireGuardの設定ファイルに登録する必要があるので、「cat」コマンドなどで中身を表示し、キーを控えておく(秘密鍵は厳重に管理すること)。

準備ができたら、WireGuardの設定ファイル(/etc/wireguard/wg0.conf)を新規作成する。設定情報は次の通りだ。

サーバー設定サーバーとして動作させるクラウド上VMのWireGuard設定情報

先に作成したサーバーの秘密鍵、クライアントの公開鍵をクラウド上VMのWireGuardへ登録する。VPNの内部アドレスは今回は「192.168.99.0/24」を利用し、サーバーには「192.168.99.1/24」を割り当てた。

ポイントとなるのは「Peer」セクションだ。今回は、Azure VM上のWireGuardが他拠点の接続を集約するかたちとなるため、拠点側に設置するWireGuardクライアントの情報をまとめて記述しておく。

中でも重要なのが「AllowedIPs」の項目だ。この記述が間違っていると、アクセスできない宛先が発生する。

WireGuardでは、内部でネットワーク間のルーティングを自動的に構成してくれるが、そのベースとなる情報が、この「AllowedIPs」となるのだ。

基本的には、接続先のWireGuardに割り当てる内部アドレスを指定すればいい。上図の「#Client」などのように、PCやモバイル端末などが単独で接続する場合は、その端末にのみアクセスできればいいので、端末の内部アドレスのみで構わない。

一方、サーバー設定の「Peer」セクションにあるSite1やSite2は、拠点間接続の設定例だ。本社と支店のようにネットワーク同士を接続する場合、背後のローカルネットワークにアクセスできるようにする必要があるため、「,(カンマ)」で区切って、接続先の内部ネットワークも追記しておく。

このため、基本的には「つなぎたいネットワーク」をここに記述することで、WireGuardが自動的にそのルートを判断してくれると考えればいい。

ここまでの設定ができたら、次のコマンドで動作を確認する。

sudo wg-quick up wg0sudo wg

エラーがなければ、さらに次のコマンドで自動起動するようにして、サーバー側の設定は完了だ。

sudo systemctl enable wg-quick@wg0