まえがきでは、Chromium OS向けにL2TP/IPSec VPN (Virtual Private Network)サーバを構築する必要が生じた事情、およびL2TP/IPSecの概要について説明しました。本記事からは、FreeBSD上にL2TP/IPSecサーバを構築し、VPNクライアントとの間で安全な通信を行なえるようになるまでを説明します。

ネットワーク設計

まず、ネットワーク設計を行ないましょう。基本的な前提はOpenVPNサーバを構築したときと同様、以下のとおりです。

L2TP/IPSecでは、IPv4だけでなくIPv6を用いることも可能です。しかしながら、Chromium OSのL2TP/IPSecクライアントは、いまのところIPv6に対応していないように見えますので、今回はIPv4のみを使用する構成とします。

では、VPNサーバおよびクライアントについて、ネットワーク関連情報の確認とアドレスの決定を行ないます。

  1. サーバマシンのFQDN (Fully Qualified Domain Name)とIPアドレスを確認します
  2. VPNサーバおよびクライアントが、それぞれVPN内で用いるIPアドレスを決めます
  3. VPNクライアントへ通知するDNSサーバのアドレスを決めます

サーバのFQDNおよびIPアドレスの確認方法については、OpenVPNサーバのネットワーク設計編を参照してください。

本記事では、以下のように確認、決定したものとします。

注: サーバのFQDNは説明用の仮の名前です。実際の環境に合わせて読み替えをお願いします。

注2: サーバのグローバルIPv4アドレスは説明用のアドレスです。実際の環境に合わせて読み替えをお願いします。

注3: VPN内で用いるアドレスは、プライベートアドレスであれば本記事と異なってもかまいません。

注4: クライアントに通知するDNSサーバのIPアドレスとして、APNIC (Asia Pacific Network Information Centre)Cloudflare社が共同で提供するパブリックDNSサービスを指定しています。こちらもお好みにあわせて変更してかまいません。

ネットワーク設計の結果をまとめると、下図のようになります。

L2TP/IPSecサーバ - ネットワーク構成

IPSec

インストール

ネットワーク設計が終わりましたので、次は必要なソフトウェアのインストールを行ないましょう。

IPSecとL2TPはそれぞれ別のプログラムとして実装されていますので、二つのソフトウェアをインストールします。まず、本記事ではIPSecソフトウェアのインストールと設定までを行ないます。

IPSecのオープンソース実装としては、IPsec-Tools (racoonといったほうが通りがよいかもしれません)とstrongSwanが有名です。IPsec-ToolsはWIDEプロジェクト内のKAMEプロジェクトの活動成果をもとにしたものです。いっぽう、strongSwanはもともとLinux向けのIPSec実装であるFreeS/WANが前身です。現在はいずれもFreeBSDで使うことができます。

Wikipediaの記事で「設定方法が直接的でわかりやすい」と紹介されていますので、本記事ではstrongSwanを使うことにしました。インストールは非常に簡単で、以下のコマンドを実行するだけです。

pkg install strongswan

設定

インストールが終わったら設定を行ないます。内容については以下の三記事を参考にしました。一つめの記事はFreeBSDにおけるstrongSwanの設定の参考として、残りの二つは主に暗号スイートの選択に関して参考にしました。

暗号スイートに関しては、可能な組み合わせが非常に多いため、どれを選択、組み合わせるのがよいのか分かりかねるところですが、以下の二点に留意したつもりです。

では、strongSwanの動作に関するipsec.confと、事前共有鍵を格納するipsec.secretsの二つを作成、編集します。

自動起動の設定

最後に、FreeBSDの起動時にstrongSwanも自動的に起動されるよう設定しておきましょう。

sysrc strongswan_enable=YES

設定ができたらFreeBSDマシンを再起動、あるいは以下のコマンドを実行してstrongSwanを起動します。

service strongswan start

以上で、IPSecソフトウェアのインストールと設定は完了です。次回の記事ではL2TPソフトウェアのインストールと設定を行ないます。

参考文献

  1. RFC 1918, Address Allocation for Private Internets, https://tools.ietf.org/html/rfc1918
  2. RFC 5737, Pv4 Address Blocks Reserved for Documentation, https://tools.ietf.org/html/rfc5737
  3. IPsec-Tools, http://ipsec-tools.sourceforge.net/
  4. strongSwan, https://www.strongswan.org/
  5. L2TP over IPSec, https://nbari.com/post/l2tp-ipsec/
  6. strongSwan でVPN(IKEv2) を 構築する Part.1, http://soymsk.hatenablog.com/entry/2016/10/09/154355
  7. Security Recommendations, https://wiki.strongswan.org/projects/strongswan/wiki/SecurityRecommendations