リモートワーク社員80人分のVPN環境を低コストかつスケーラブルに提供する方法

Satoshi Tajima
The Finatext Tech Blog
7 min readApr 16, 2020

こんにちは。Finatextでエンジニアをしている @s_tajima です。

新型コロナウイルス感染症の影響により、近年徐々に広まりつつあったリモートワークやテレワークといった働き方やその設備に対する企業の温度感が、「あったらいいね」から「無いとだめ」に急速に変わりつつあるのを感じます。

弊社も先日の緊急事態宣言を受け、 全社的に原則在宅勤務という体制 に移行しました。
そこで今回は、Finatextのリモートワーク(在宅勤務)を支えるVPNのシステムについてご紹介したいと思います。

FinatextのVPNシステムは以下のように運用しています。

  • 月に2万円程度のコスト
  • Pritunlというオープンソースのソフトウェアを使用
  • AWS上にスケーラブルな形で構築
  • エンジニア・非エンジニア含めて80人ほどの社員が利用

今使っているVPNに何かしらの不満がある方、突然VPNの環境が必要になりどのように構築したらよいかわからなかったり、コストの面で困っている方などの参考になればうれしいです。

Web ConsoleのUIです。

※なお、VPNと一口に言っても様々な種類がありますが、本記事では「社員がインターネット回線越しに安全に会社の情報資産にアクセスできる環境を提供するための仕組み」、いわゆるクライアントVPNについて扱います。

なぜVPNが必要か

システムの紹介をする前に、まずなぜVPNが必要になるのかというのを整理しておきます。
一般的に挙げられる主な理由としては

  1. プライベートなネットワークにアクセスするため (インターネットに公開されていない、オフィスやデータセンターの中に構築されたシステムへのアクセスのため)
  2. 固定されたグローバルIPアドレスを利用するため (インターネットには公開されているが、接続元のIPアドレスを制限したクラウドやSaaSへの接続のため)
  3. プロトコルにかかわらず通信の経路を暗号化するため(特に、管理者を完全に信頼できないネットワークを使わなければいけない時に必要になります)

というのがあるかなと思います。

Finatextは、オフィスのネットワークやデータセンター等のオンプレミス上の情報資産をほとんど持たず、大半の業務をクラウドやSaaSベースのシステムで実行できるようになっています。
そのため、前述の理由のうち、2の固定のグローバルIP と 3の暗号化ができれば大半の要件が満たせることになります。

近年だと、ゼロトラスト / BeyondCorp といった考え方でVPNを不要としたシステム構成を取る事例も増えてきていると思います。しかし、手軽に多くのユースケースやシステムに対応し、ネットワークレベルで攻撃表面の縮小ができる手段として、VPNは依然として有用な手段だと考えています。

どのように構築しているか

最初に記載したとおり、弊社ではVPNを Pritunlを使いAWS上に構築しています。
構成図としてはこんなかたちです。

以降、PritunlとAWSに分けて各ポイントを説明します。

Pritunl

  • Pritunlは、OpenVPNをベースにしたオープンソースのVPNソフトウェアです。
  • 無償・有償どのプランで使っても、アカウントの数に比例したコストはかかりません。
  • サーバーは様々なLinux Distributionに対応しており、セットアップが容易です。
  • クライアントはWindowsとMacに対応していて、こちらもセットアップが容易です。その他のOSは、専用のクライアントはないのですが、OpenVPNのクライアントがあれば接続することはできます。
  • VPN自体の機能は、OpenVPNを利用しているため、安定性や安全性の観点での心配は少ないです。
  • TOTPによる2FAを使った認証も容易に構築できます。
  • 最近のアップデートでWireGuardにも対応したようです (未検証)

AWS

  • 前述の通り、弊社の環境ではオフィスやデータセンターにVPNのシステムを構築する必要がありません。よってAWS上にVPNを構築しています。
  • PritunlのVPNは、Pritunl ServerとMongoDBから構成されますが、これらを分離しています。
  • Pritunl Server(とOpenVPN Server)が起動し、外部からのパケットを直接受け付けるインスタンスはオートスケールを設定し、冗長性を持たせてディスポーザブルにしておきます。
  • Pritunl Serverからのアウトバウンドの通信は、Elastic IPをつけたNatGatewayを経由させることでIPアドレスが固定されるようにしています。

運用してみて

良かったところ

  • オープンソースのソフトウェアを利用しているため、VPN用のアプライアンスや同時接続数ごとのライセンス費用を必要とする構成に比べると、非常に低コストで運用できています。月々のコストは2万円程度です。また、構築の手間もそこまでかかっていないので、人件費を考慮しても低コストと言えると思います。
  • AWS上に構築しているため、キャパシティ的にさばききれなくなった場合は容易にスケールアップできるという安心感があります。
  • もともとこのVPNは一部のエンジニアだけが使っていたのですが、新型コロナウイルス関連で在宅勤務者が増えたことにより、非エンジニアを含む40~50人分のアカウントを一気に追加することになりました。その際もクライアント側のセットアップの手間が少なく、サポートのコストがあまりかからなかったのも良かったポイントです。
  • 構築前は、レイテンシ的に使い物にならなかったり、AWSのネットワークからのアクセスを弾いてしまうWebサイト等があるのではないかと懸念ではありましたが、実際はそこまで問題になることはありませんでした。

課題に思っているところ

  • データストアとして利用しているMongoDB用のサーバーがディスポーザブルになっていない点です。これをAmazon DocumentDBに移行できないかを検証したいと思っています。
  • Pritunlの管理画面で設定変更をしようとした時にバグのような挙動があり、管理画面が一時的に利用できなくなる事象があります。が、小さな問題なので詳しい調査はしていません。

さいごに

今回は、Finatextのリモートワークを支える低コストでスケーラブルなVPN環境のお話でした。

金融関連企業というと「リモートワークや在宅勤務なんてできないだろう」と思われるかもしれませんが、弊社ではこのようにエンジニアが場所にとらわれず柔軟に働けるような環境を整えています!

Finatextグループでは、一緒に働くエンジニアを募集しています。

まったく新しい金融ビジネスプラットフォームを創造することに興味がある方、ぜひご連絡ください!

求人一覧はこちら
社員インタビューはこちら

--

--

No responses yet