おは代々木ダイアリー

いろいろ試したメモを書きます

【WireGuard】VPNで自宅サーバーを公開する その2

以前こんな記事を書きました。

ohayoyogi.hatenablog.com

ConoHa上に安いインスタンスを立て、そことWireGuardでVPNを張り、そのインスタンスに来た通信を自宅サーバーに流し公開サーバーとして振舞えるようにするという内容です。

今回の内容

f:id:ohayoyogi:20210515214251p:plain

今回は家庭内のルーター(OpenWRT)にWireGuardを導入し、Conohaとの接続をそのルーターに受け持たせ、その配下のPCたちに参加させるという格好です。

メリット1. 通信に専念させられる

VPN内にサーバーを置きたいと考えたときに、極力省エネなマシンを使うことを検討することがあると思います。ぼくの場合はThinkPad X220とかいう10年ぐらい前のノートパソコンをマイクラサーバーにしようと考えました。

それが前回記事の内容にあたるわけですが、意外にもVPNの処理にリソースを持っていかれるようで、ファンが煩くなりがちでした。

サーバーにはサーバーのプロセスに専念させることができるというのがメリットの1つかなと思います。

メリット2. 1つのクライアントで複数つなげられる

今回のパターンでは、VPNルーター(OpenWRT)のLAN側の機器には、そのVPNルーターに割り当てたサブネット 10.0.2.0/24IPアドレス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クライアントをさせます。この手順についてはいろんなサイトで言及されているので、以下のようなサイトを参考にしてください。

komone-life.com

この時、注意するのは Allowed IPs0.0.0.0/0 を指定し、すべてのIPアドレスへの通信をこのインタフェース経由にすることです。

f:id:ohayoyogi:20210609233521p:plain
全IPへの通信をこのインタフェースで

WireGuardで接続でき、wg0が作られました。(管理画面トップのStatus)

f:id:ohayoyogi:20210609231513p:plain
wg0

IPv4のルーティングテーブルが以下のように、0.0.0.0/0 が wg0 に向くようになっていればOKです。

f:id:ohayoyogi:20210609233713p:plain
IPv4ルーティングテーブル

ブリッジの作成

ルーターのLANをVPNのサブネットにしたいので、ブリッジを作成します。

  1. IPアドレスはWireGuardでOpenWRTに割り当てるIPアドレス
  2. サブネットも同様、割り当てるサブネット
  3. DNSは適当

f:id:ohayoyogi:20210609235238p:plain
ブリッジ作成
ブリッジするのは eth0.1, wg0 です。

f:id:ohayoyogi:20210609232747p:plain
インタフェースのブリッジ

DHCPはそのままの設定でOK(有効になってるはず)

f:id:ohayoyogi:20210609232825p:plain
DHCPは有効に。

通信できていることの確認

LANにつないだパソコンから taruo.net の診断くんなどを使って、REMOTE_ADDRVPSサーバーになっていればOK

f:id:ohayoyogi:20210609234047p:plain
REMOTE_ADDRの確認

Webサーバーを公開してみる

VPS上の iptables を使って 10.0.2.100 など、LANに配置したサーバーへフォワーディングするとサーバーを公開することができます。詳細は 前回記事 を読んでください。

最近、Windowsノートをサーバーに使うのがもったいなく感じたので転がってたLarkboxにサーバーをやらせてます。

終わりに

OpenWRT を VPN(WireGuard)ルーターとして構築する方法をご紹介しました。VPN内でもIPv6使えるようにしてみようかと思いましたが、Luciでの設定方法がイマイチわからず断念しました。