書類
IPv6でVPN接続できるWireGuard環境をRaspberry Piで構築! transixでも大丈夫!【イニシャルB】

IPv6でVPN接続できるWireGuard環境をRaspberry Piで構築! transixでも大丈夫!【イニシャルB】

2024-11-22 WireGuard の サーバー に は 、 raspberry pi 4 を 利用 する   本 連載 で は 、 いく つ か VPN ソリューション の 紹介 を 続ける て いる が 、 今回 は IPV 6 接続 の WireGuard 環境 を 取る 上げる 。  DS-LiteやMAP

Related articles

Netflixを安く契約する方法を解説!最も安い国はトルコ! YouTube PremiumインドVPN【格安にする】手順を解説 iPhoneの画面に出てきた「VPN」マークはどういう意味? 【専門家が解説】 2024年最新|ChromeのVPN拡張機能おすすめ7選・無料ある FortiClientのインストールとSSL-VPN設定方法 VPNパススルー機能とは?仕組みや設定方法を徹底解説

WireGuard の サーバー に は 、 raspberry pi 4 を 利用 する

  本 連載 で は 、 いく つ か VPN ソリューション の 紹介 を 続ける て いる が 、 今回 は IPV 6 接続 の WireGuard 環境 を 取る 上げる 。

 DS-LiteやMAP-EではIPv4が鬼門となるので、ならばIPv6で接続してしまおうという発想だ。

 トンネル内部では使い慣れたIPv4を利用できるのと、WireGuardによる高速接続、場合によってはフレッツ網内での折り返し通信も視野に入れられる構想となる。テレワークで会社と社員宅をVPN接続する際などに応用できそうだ。

ds – lite で は 、 IPV 4 に よる VPN 接続 is 困難 は 困難

 テレワークで、社員宅から会社のNASへVPN接続する状況を想定してみよう。

 この構想では、会社の回線がIPoE IPv6方式、中でもtransixサービスの場合、実現は途端に難しくなる。

 具体的には、NASのVPN接続サービスがうまく動作しないケースが多い。一般的なNASの場合、搭載されているVPN接続サービスがIPv4での接続にしか対応していないことが多いのだ。利用できるポートが限定され、しかもISP側でNATが実施されるDS-Lite環境では、VPN接続ができない。

  同じ ipoe IPV 6 環境 で も IPV 4 が MAP – e で あれ ば 、 NAS が 利用 する VPN サービス の ポート を 自宅 の hgw に 割る 当てる られ た ポート の 中 から 選択 する こと で VPN 接続 が 可能 な ケース も ある が 、 ds – lite で は これ is でき も でき ない 。

 とはいえ、NASサービスの中でも、ウェブアクセスでNASの共有フォルダーを参照するリモートアクセスサービスであれば、NASベンダーが用意した中継サーバーを利用することでDS-LiteやMAP-Eでも接続が可能な場合もある。しかしこうした中継サーバーでは、今度はVPN接続サービスがサポートされていない可能性がある。

 このため、DS-Liteの環境では、「IPv4でVPN」を実現するのが非常に困難な状況にあるというわけだ。

 そこで今回は、実際にtransix環境を使って、IPv4ではなく、IPv6を使ってNASにVPN接続できるようにしてみた。

 もちろん、IPv6でVPN接続するためには、クライアント側でもIPv6を使える必要がある。そのため、ホテルや公衆無線LANなど、IPv6がサポートされない環境からのVPN接続は困難だ。しかし、今回のように、テレワークで自宅から会社へVPN接続する場合なら、自宅側でIPv6が使えるケースも増えているため、現実的な構想と言える。

  要する に 、 任意 の 場所 から の リモート アクセス VPN と いう より は 、 会社 ― 自宅 と いう 決まる た 地点 で の 接続 と いう 、 準拠 点 間 VPN 接続 と いう イメージ に 近い 。 接続 環境 は 限る れる が 、 どう し て も VPN 接続 が 必要 と いう ケース の 一 例 と し て 参考 に なる ば 幸い だ 。

raspberry pi で WireGuard を 使う 、 IPV 6 で の VPN 接続 を 実現

 それでは、今回の構成を紹介しよう。

 利用するのは前述した通り、transixサービスを利用した「フレッツ 光ネクスト」の回線で、これを会社側と想定する。回線には、ホームゲートウェイ(以下、HGW)である「PR-500KI」と、Wi-Fiルーターの「Aterm WG2600HP3」が接続され、その配下にQNAPの2ベイNAS「TS-231+」を接続している構成だ。

 一方、社員宅側として想定する環境の回線は「auひかり ホーム10ギガ」で、こちらはシンプルにHGWの「BL1000HW」へPCが接続している。

 これを最終的には、次のようにする。

  会社 側 に 、 raspberry pi 4 で 構築 し た VPN サーバー を 設置 し 、 wiregurad を 利用 し て 社員 宅 から 社内 の NAS に 対する て 接続 可能 に する 。

  この 際 、 社員 宅 の PC から raspberry pi まで は IPv 6 で wiregurad に よる VPN 接続 を 確立 し 、 VPN 内部 で の 通信 に は 社内 の NAS に 割る 当てる られ て いる IPV 4 の アドレス を 使う て アクセス できる よう に する 。

 社員宅側の回線が会社側と同じフレッツ 光ネクストであれば、フレッツ網内の折り返し通信による低遅延かつ高速なVPN接続も可能になるはずだが、今回は設備の関係で、この構成でのテストはできなかった。

 また、WireGuardサーバーにはRaspberry Pi 4を利用したが、社内に設置するNASが仮想マシンの稼働に対応するモデルであれば、そちらで仮想マシンを用いても構わない。今回はNASのメンテなども想定して機器を分けたことになる。

WireGuard の サーバー と し て 動作 さ せる raspberry pi 4 は 、 常時 稼働 を 想定 し て ファン 付き の ケース へ

 今回は、16GBのmicroSDへGUIなしのRaspberry Pi OS Liteをインストールした。VPNにしか利用しないのでGUIは不要だ。なお、WireGuardのインストール方法については割愛するが、こちらのウェブページを参考にコマンドを実行すれば、簡単にインストールできるはずだ。このほか、SSHの接続制限やファイアウォールも念のため設定しておいた。

  WireGuard は 、 高速 な VPN サービス と し て 知る れ て いる が 、 サーバー 側 も クライアント 側 も 設定 方法 が ほぼ 同じ で 、 比較 的 簡単 な の も 特徴 だ 。 コマンド ライン で の 操作 と なる ため 、 とっ つく にくい 印象 が ある か も しれる ない が 、 慣れる て しまう ば シンプル で 扱う やすい 。

 前述した通り、今回はWireGuardの接続にIPv6を利用する。といっても特別な設定は必要ない。Raspberry Piを前述した社内側のネットワークへ接続すれば、自動的にeth0にIPv6アドレスが割り当てられる。

Raspberry Pi 4にWireGuardをインストールしてVPNサーバーとして利用。利用するポートや接続を許可するクライアントなどを構成しておくeth0に割り当てられたIPv6アドレスに向けて接続。内部のNASなどへの通信にはIPv4を使う

 WireGuradは、このアドレスでVPN接続を受け付けるが、今回はトンネル内部のネットワークではIPv4を利用するため(NASにはIPv4アドレスでアクセスしたい)、WireGuard側の設定で、特にIPv6を意識する必要はない。

 ちなみに、接続には公開鍵と秘密鍵を利用する。サーバー側はサーバー自身の秘密鍵とクライアントの公開鍵、クライアント側はサーバーの公開鍵と自分の秘密鍵をそれぞれ持ち合うことで、相手を認証して接続する。

 このため、サーバー側で設定が終わったら、クライアント接続用の情報として、サーバーの公開鍵、クライアントの秘密鍵、設定ファイル(/etc/wireguard/wg0.conf)に設定したクライアント割り当て用のIPアドレスの3つを控えておく必要がある。

接続時には、サーバーの公開鍵、クライアントの秘密鍵などの情報が必要になる

HGW と ルーター の IPV 6 フィルター を 通過 する よう 設定

 Raspberry PiがWireGuardサーバーとして稼働したら、続いて外部からIPv6接続を受け付ける設定をする。

 今回の構成では、HGWとAtermの両方でIPv6フィルターが設定されているため、このそれぞれでWireGuardの通信を許可するよう設定が必要だ。

  なお 、 今回 の 構成 で は 、 社員 宅 から 会社 へ の アクセス を 想定 し て いる ため 、 送信 元 を ピンポイント で 指定 し て その 通信 のみ を 通過 さ せる 。 IPV 6 は 、 不 用意 に フィルター を 外す と インターネット から 丸見え の 状態 に なる の で 、 特定 の 条件 を 満たす 通信 だけ を ピンポイント で 通す よう に 設定 する 必要 is ある が ある 。

  いろいろ な 構成 が 考える られる が 、 今回 の 構成 で は HGW と Aterm の 両方 で フィルター が ある の で 、 管理 を シンプル に する ため に 次 の よう に 設定 し た 。 HGW is 通過 は WireGuard で 利用 する UDP 55222 を 通過 。 Aterm is し は 送信 元 まで チェック し て 通過 する よう に し た 。

 前述したように、今回の構成では試せなかったが、場合によってはフレッツ網内での折り返し通信も可能なため、それを想定して今回はHGW側では少し緩めの設定にしてある。このあたりは、環境や用途に合わせて変更して欲しい。

  • IPv6ファイアウォール機能:有効
  • IPv6セキュリティのレベル:標準
hgw ( PR – 500 ki ) の IPV 6 パケット フィルター 設定 ( ipoe )
フィルター種別 許可
プロトコル UDP
宛先ポート 55222

会社側HGWのIPv6パケットフィルター設定。WireGuardのポート(ここでは仮に55222を使用)を通過させる

Atermのフィルター(IPv6パケットフィルター)
プロトコル UDP
送信元IPアドレス クライアントのIPv6アドレス/128
送信元ポート番号 22555
宛先IPアドレス Raspberry Piのeth0のIPv6アドレス/128
宛先ポート番号 55222

会社側のAtermのIPv6パケットフィルター設定

 なお、クライアントにWindows 10を利用する場合、IPv6アドレスの送信元が一時IPv6アドレスとなる。このアドレスは再起動の度に変更されるので、以下のコマンドで一時IPv6アドレスをオフにすることで、半固定で指定できる。

netsh interface ipv6 set privacy state=disable

  ただし 、 一時 IPv 6 アドレス is 持っ は 、 インターネット 接続 の 際 、 半 固定 の IPV 6 アドレス を 外部 から 隠す プライバシー 保護 の 役割 is 持っ も 持つ て いる 。 この ため 、 上記 の 設定 を 行う か どう か は 慎重 に 検討 す べき だ 。

一時IPv6アドレスは毎回変わるので、フィルターでの指定には不向き

I . Open . AD . JP で IPV 6 ddns を 利用 する

 続いて、WireGuardサーバーに接続する際に、Endpointとして指定するホスト名を取得する。

 これはさまざまな方法があるが、今回はソフトイーサが無償で提供している「i.open.ad.jp」を利用した。将来的に網内折り返しで利用したいという意向があることが大きいが、いろいろなプラットフォームからの利用方法が紹介されていたり、NASのNTPを利用してアドレスを更新できるなど、非常に細かな配慮がなされたサービスだ。

  もともと は フレッツ 網 内 で の 利用 を 想定 し た もの だ が 、 ddns 登録 さ れ た ホスト 名 is なっ は 、 外部 の DNS サービス から も 参照 可能 と なっ て いる 。 この ため 今回 の ケース の よう に 、 au ひかり など の 外部 サービス から も ホスト 名 を 問題 なく 参照 できる 。

 使い方は簡単で、i.open.ad.jpに、ホスト名とIPv6アドレス(Raspberry Piのeth0のIPv6アドレス)とメールアドレスを入力し、登録するだけでいい。

クライアントから接続するためのホスト名にはi.open.ad.jpを利用した

 i.open.ad.jpにある機器ごとの設定例には、Raspberry Pi環境(Debian環境)でのDDNSのアドレス更新方法も紹介されているので、cronで更新するように設定しておこう。

Windows から 接続 する

 これで準備が整ったので、自宅を想定したauひかり回線を経由して接続してみる。

 利用したクライアントはWindows 10だ。WireGuardのウェブサイトからクライアントをインストールし、「トンネルの追加」から「空のトンネルを追加」を選択して、手動で接続先の情報を設定する。

 今回は以下の内容で設定したが、基本的にはサーバー側のコンフィグファイルと同じ書式で設定すればいい。WireGuardサーバー構成時にメモしたクライアントの秘密鍵とサーバーの公開鍵を間違えないように設定しよう。

[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxx(クライアント秘密鍵)
ListenPort = 22555
Address = 192.168.99.5/24

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx(サーバー公開鍵)
AllowedIPs = 192.168.101.0/24
Endpoint = shimiz2.i.open.ad.jp:55222

WireGuardクライアントへ設定を手動で登録する

 ちなみに、今回はAtermのIPv6フィルターで送信元ポートを制限しているので、設定ファイルでも同じポートを「ListenPort」として設定しておかないと、フィルターではじかれて通信できないことになる。

  また 、 「 Peer 」 の 「 allowedips 」 で 通信 可能 な 会社 側 の ネットワーク を 指定 する 。 今回 は 、 NAS が 設置 さ れ て いる ローカル ネットワーク のみ に アクセス を 許可 する 。 この ため 、 クライアント で は 、 通常 の インターネット 接続 に は 自宅 側 の 回線 を 利用 し 、 NAS など 会社 の ネットワーク の 接続 に のみ 、 VPN を 利用 する 。

 いわゆるスプリットトンネルの構成で、クラウドサービスへのアクセスなどに会社の回線を利用しないことで、複数ユーザー接続時に会社側の回線の混雑を回避することができる。

  設定 が 完了 し たら 、 後 is つなぐ は つなぐ だけ だ 。 即座 に トンネル が 作成 さ れ 、 通信 が 可能 に なる の で 、 「 http:// 192 . 168 . 101 . 2 : 8080 」 など と し て NAS の ウェブ ページ が 表示 できる か を 確認 し たり 、 エクスプローラー から 「 \ \ 192 . 168 . 101 . 2 」 など と 指定 し て 共有 フォルダー に アクセス できる か を 確認 すれ ば いい 。

WireGuard経由のiPerf3の速度。インターネット経由でも200Mbps近い速度で通信できている。宛先のIPアドレスから、VPN内部ではIPv4が使える様子も分かるWireGuard 経由 で NAS に ファイル を アップロード 。 おおむね 14 MB / s 前後 と なっ た

  ちなみ に 、 筆者 宅 の 環境 で は 、 iperf 3 に よる 計測 で 224 Mbps と 、 インターネット 経由 ながら 高速 な 速度 で 通信 でき て い た 。 PC から NAS へ の ファイル コピー で も 13.9 MB / s の 速度 が 実現 でき て おり 、 ストレス なく 利用 できる 印象 だ 。

クライアント側にIPv6が必要だがモバイル回線でも接続OK

  以上 、 WireGuard を 利用 し た IPv 6 に よる VPN 接続 を 試す て み た が 、 この 構成 は 比較 的 簡単 に 構築 可能 ながら 、 かなり 高速 で 実用 的 な 印象 だ 。

 欠点はクライアント側にもIPv6が必要なことだが、筆者宅でのテストでは、auの4G環境でIPv6アドレスが利用可能となっており、iPhoneからも問題なく接続することができた。環境次第だが、モバイル利用にも対応できそうだ。

 理想は海外メーカーのルーターやNASがIPv6に完全対応し、WireGuardなども組み込まれることだが、おそらくもう少し時間がかかるだろう。現状は、使える環境をフル活用して、ユーザーの側で工夫していくしかなさそうだ。