LoginSignup
4
4

More than 3 years have passed since last update.

簡単にVPNサーバー(L2TP/IPsec)を構築できるAnsible Roleをつくった

Last updated at Posted at 2019-10-06

はじめに

外出先や野良wifiから安全に通信できるように、VPNサーバを構築します。
設定するファイルが多く、構築が大変だったのでAnsible Role化しました。
お手持ちのPlaybookに組み込むことで、簡単にVPNサーバーを構築できます。
また、L2TPクライアントはたいていのOSで標準サポートされているので、特にアプリをインストールすることなく利用可能です。

VPNの概要

L2TPは、ネットワーク間でのVPN (Virtual Private Network) 接続を実現するトンネリングプロトコルです。L2TP自体は暗号化の仕組みを持ちませんが、IPsecを併用することでデータの機密性や完全性を確保したVPN接続を実現するL2TP/IPsecがあります。スマートフォンなどに搭載されているL2TPクライアントからインターネット越しに構築したVPNサーバーとのセキュアな通信を可能にします。

環境

今回作ったAnsible Roleは以下の環境で動作確認を行っています。

ローカル

  • Ansible 2.6.5

サーバー側

ConoHa VPSのCPU1コア、メモり512M

  • CentOS 7
  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS

クライアント側

  • macOS
  • Android 10
  • iOS 13

注意事項

  • このRoleは、firewalld(CentOS) / ufw(Ubuntu)を有効にします。事前にSSHポートを開けておいてください。
  • 事前共有鍵やログイン情報は機密情報なのでAnsible Vaultを利用するなどして管理してください。

手順

Roleの取得

今回作ったAnsible RoleはAnsible Galaxy内に配置していますので、ansible-galaxyコマンドから取得できます。
requirements.ymlファイルに以下を追加します。

requirements.yml
- shomatan.l2tp-ipsec-server

その後、以下のコマンドでRoleを取得します。

command
ansible-galaxy install -p roles -r requirements.yml

Playbookの作成

必要最低限のパラメータを示します。
今回はvpn.ymlとしてPlaybookを作成します。

vpn.yml
- name: Run the vpn server group of hosts.
  hosts: all
  become: true
  roles:
    - role: shomatan.l2tp-ipsec-server
      l2tp_ipsec_server_host: vpn.example.com          # ServerのPublic IPまたはdomain
      l2tp_ipsec_PSK: presharedkey                 # 事前共有鍵
      l2tp_ipsec_server_bind_interface: eth0                # Public側のネットワークインターフェース
      l2tp_ipsec_server_users:
        - { username: user, password: pass, ipaddress: "*"  # ログイン情報

実行

inventoryファイルは適宜作成してください。
以下のコマンドを実行して、VPNサーバーを構築します。

command
ansible-playbook vpn.yml

クライアントの設定

  • サーバー: l2tp_ipsec_server_hostの値
  • 事前共有鍵: l2tp_ipsec_PSKの値
  • ユーザー名: l2tp_ipsec_server_usersusername
  • パスワード: l2tp_ipsec_server_userspassword

終わりに

CentOSとUbuntuでIPsecのライブラリが異なるので、設定に苦労しました... Androidから繋がらないとか...

参考

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4