以前こんな記事を書きました。
ConoHa上に安いインスタンスを立て、そことWireGuardでVPNを張り、そのインスタンスに来た通信を自宅サーバーに流し公開サーバーとして振舞えるようにするという内容です。
今回の内容
今回は家庭内のルーター(OpenWRT)にWireGuardを導入し、Conohaとの接続をそのルーターに受け持たせ、その配下のPCたちに参加させるという格好です。
メリット1. 通信に専念させられる
VPN内にサーバーを置きたいと考えたときに、極力省エネなマシンを使うことを検討することがあると思います。ぼくの場合はThinkPad X220とかいう10年ぐらい前のノートパソコンをマイクラサーバーにしようと考えました。
それが前回記事の内容にあたるわけですが、意外にもVPNの処理にリソースを持っていかれるようで、ファンが煩くなりがちでした。
サーバーにはサーバーのプロセスに専念させることができるというのがメリットの1つかなと思います。
メリット2. 1つのクライアントで複数つなげられる
今回のパターンでは、VPNルーター(OpenWRT)のLAN側の機器には、そのVPNルーターに割り当てたサブネット 10.0.2.0/24
のIPアドレスをDHCPで割り当てることにしたので、
本来であればつなぐ台数に応じて複数台WireGuardをセットアップしなければいけなかったのですが、LANポートにつなぐだけでVPNに参加できるようになりました。
(つなぐだけでVPNって物理的なセキュリティホール感ありますが、自宅に侵入されている時点でいろいろとお察しですw)
メリット3. 同一サブネット内の通信が速くなる
VPNルーターがルーティングを行い、10.0.2.0/24
はWANへ向かないので同一サブネット内の通信が速くなります(多分)
これがVPS上に立てたWireGuardにクライアントごとに接続していると 10.0.2.4 から 10.0.2.5 への通信も WAN を経由することになりそうです。
手順
では構築手順です。
ネットワークインタフェースの作成
OpenWRTに WireGuardクライアントをさせます。この手順についてはいろんなサイトで言及されているので、以下のようなサイトを参考にしてください。
この時、注意するのは Allowed IPs
に 0.0.0.0/0
を指定し、すべてのIPアドレスへの通信をこのインタフェース経由にすることです。
WireGuardで接続でき、wg0が作られました。(管理画面トップのStatus)
IPv4のルーティングテーブルが以下のように、0.0.0.0/0 が wg0 に向くようになっていればOKです。
ブリッジの作成
ルーターのLANをVPNのサブネットにしたいので、ブリッジを作成します。
ブリッジするのは eth0.1, wg0 です。
DHCPはそのままの設定でOK(有効になってるはず)
通信できていることの確認
LANにつないだパソコンから taruo.net の診断くんなどを使って、REMOTE_ADDR
がVPSサーバーになっていればOK
Webサーバーを公開してみる
VPS上の iptables を使って 10.0.2.100
など、LANに配置したサーバーへフォワーディングするとサーバーを公開することができます。詳細は 前回記事 を読んでください。
最近、Windowsノートをサーバーに使うのがもったいなく感じたので転がってたLarkboxにサーバーをやらせてます。
終わりに
OpenWRT を VPN(WireGuard)ルーターとして構築する方法をご紹介しました。VPN内でもIPv6使えるようにしてみようかと思いましたが、Luciでの設定方法がイマイチわからず断念しました。