スプーキーズのちょっとTech。

SPOOKIES社内のより技工的な、専門的なブログページです。

弊社社内VPNをSoftEtherからWireguardに置き換えた話。

こんにちは。スプーキーズ東京オフィス窓口担当、鈴木です。 気づけば、この記事を書いてから半年以上が経過しましたね。 labs.spookies.co.jp いや、違う。 まだ一年経ってないはずなんですよ。 なのにAIコーディングツールの進歩が速すぎる。 前回まっちゃんがClaudeCodeについて書いてくれましたが、このClaudeCodeだってこの記事書いたときにはまだ名前すら出ていませんでしたからね!? ついていけねぇって...... なので、今回はAIに関する記事は書きません。 どうせ一か月後にはレガシーな情報になっていることが目に見えているので。 今回は弊社VPNをWireguardで再構築した話を書きます。

元の構成

もともと、弊社のVPNはけしからんで有名なSoftEtherが軸でした。 京都オフィスにおいてある物理マシンにSoftEtherサーバーを載せて運用していました。 ただ京都オフィスのネットワークに接続する分には問題なかったのですが、最近いろいろと不自由が出てきてしまい.......

不自由1:拠点間接続が激重

これは直接自分が試したことではないので確かなことは言えないのですが、まだオフィスが渋谷にあったころ、どうやらSoftEtherで拠点間VPNを東京京都間で設置してみたことがあったそうな。結果、重すぎて使い物にならなかったらしい。 まぁみんなで京都のネットワーク使えばいいよねって話で落ち着いたらしいんですが、 ここにきて京都と東京のそれぞれのローカルネットワークをつなげたいという要望が再燃。 VPNのリプレイスも含めて、再度方法を検討しました。

不自由2:L2TP/IPSecを使わざるを得ないケースでNATの扱いが厄介すぎる

MacOSの場合SoftEtherを直接使えないので、L2TP/IPSecを介して接続するわけですが、これが厄介。 利用するIPv4ネットワークがIPIPだとポートフォワーディングができず、VPNが使えないという問題が生じていました。 これのせいで一部のメンバーはテザリングで頑張ってリモートワークをしていたそうです。

まずWireguardとは?

ひとことで言うと、「シンプル・高速・セキュア」を突き詰めた、イマドキのVPNプロトコルです。 コードベースがとにかく小さい: 他のVPN実装(OpenVPNやIPSec)に比べて、コードの行数が圧倒的に少ない。コードは少なければ少ないほど良いとされています。 設定がシンプル: 基本的には、SSHの鍵交換のように、お互いの公開鍵を交換して設定ファイルに書き込むだけ。SoftEtherやIPSecのような複雑な設定項目に頭を悩ませる必要がありません。 めちゃくちゃ速い: WireGuardはLinuxカーネル内で直接動作するため、パフォーマンスが非常に高い。これが拠点間接続の速度問題を解決してくれるんじゃないかと期待しました。 NAT越えが得意: WireGuardは特定のポートフォワーディングを必要とせず、クライアント側からサーバーにパケットを一度送信できれば、あとはよしなに通信を維持してくれます。これにより、厄介なNAT問題から解放される見込みが立ちました。 これはもう、やるしかないだろうと。

新しい構成

検討の結果、以下のような構成に落ち着きました。 ※なお、IPは例。そりゃ本物のIPマップなんて公開できるわけない。

  1. 京都オフィスにwg-easyサーバーを構築 VPNのハブとなるサーバーは、京都オフィスの物理マシン上に構築しました。ユーザー管理のしやすさを考慮し、wg-easyを導入してWeb UIから操作できるようにしています。

  2. 東京オフィスにネットワークゲートウェイを設置 東京オフィスには、破棄直前のノートPCを引っ張り出しubuntuに乗せ換えて、ネットワークの出入り口となるゲートウェイとして設置。このゲートウェイが京都のwg-easyサーバーに常時接続することで、東京のネットワーク全体がVPNに参加する形です。

  3. 各メンバーは京都のサーバーを介してアクセス リモートメンバーや東京オフィスのメンバーは、一度京都のwg-easyサーバーに接続します。そこを経由して、京都のローカルネットワークはもちろん、東京のネットワークゲートウェイを通じて東京のローカルネットワークにもアクセスできる、という仕組みです。

やってみてどうだったか?

解決1: 拠点間接続が爆速に

以前は「使い物にならなかった」という拠点間接続ですが、今ではVPN経由で東京オフィスのリソース(今はIPカメラ)にアクセスしても、全くストレスを感じません。 ローカルネットワークと同じ…とまでは言いませんが、体感速度は劇的に向上しました。 これで、どちらのオフィスにいても、シームレスに必要な情報にアクセスできる環境が整いました。

解決2: NAT問題を完全に克服

あれだけ苦しめられたNAT問題は、嘘のように解消されました。自宅のネットワーク環境が原因でテザリングを余儀なくされていたメンバーも、今では何事もなかったかのように自宅のWi-FiからVPNに接続しています。クライアントソフトも軽量で、PCを起動したらほぼ自動で接続が完了しているので、「VPNに繋いでる感」がほとんどありません。これは本当に嬉しい誤算でした。

ハマった点・今後の課題

もちろん、すべてが順風満帆だったわけではありません。

ユーザー管理については、WireGuardのシンプルな仕組みのままだと、ユーザーが増えるたびに手動で設定ファイルを編集する必要があり大変だろうと予想していました。 そこで今回は当初から「wg-easy」というWeb UIツールを導入し、ユーザーの追加・削除がブラウザ上から簡単に行えるようにしました。 が、こいつが曲者で、ハブアンドスポーク以外の構成を想定していないため、Wireguardのメリットである構成の自由度がなくなってしまったのです。

今回我々は構成を工夫することで回避できましたが、ユースケース次第、特に拠点ごとにユーザー管理をしたいケースなどはWG-Easy以外の管理方法を検討する必要があるでしょう。

まとめ

というわけで、今回は弊社のVPNをSoftEtherからWireGuardにリプレイスした話を書きました。 AIの世界ほどのドッグイヤーではありませんが、インフラ技術も着実に進化しているんだなと改めて実感しましたね。 もし同じような「不自由」を抱えている方がいたら、WireGuardへのリプレイス、本当におすすめですよ。 これでまた一つ、弊社のリモートワーク環境が快適になりました。 さて、次はどの部分を改善しようかな。 それでは、また。