DebianとUbuntuでStrongswanを使用したIPsecベースのVPNのセットアップ方法

strongSwanは、Linux、FreeBSD、OS X、Windows、Android、iOSで動作するオープンソースでクロスプラットフォームのフル機能を備えた広く使用されているIPsecベースのVPN(仮想プライベートネットワーク)実装です。主に、二つのピア間のセキュリティアソシエーション(SA)を確立するインターネットキー交換プロトコル(IKEv1およびIKEv2)をサポートするキーイングデーモンです。

この記事では、UbuntuおよびDebianサーバー上でstrongSwanを使用してサイト間IPSec VPNゲートウェイを設定する方法について説明します。サイト間とは、各セキュリティゲートウェイの背後にサブネットがあることを意味します。さらに、ピアは事前共有キー(PSK)を使用して互いに認証します。

テスト環境

環境を構成するために、以下のIPを実際のIPに置き換えてください。

サイト1ゲートウェイ(tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

サイト2ゲートウェイ(tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

ステップ1:カーネルパケット転送の有効化

1.まず、カーネルにパケット転送を有効にするように設定するために、両方のセキュリティゲートウェイの/etc/sysctl.conf設定ファイルに適切なシステム変数を追加する必要があります。

$ sudo vim /etc/sysctl.conf

次の行を探してコメントを解除し、示されている値に設定してください(詳細はファイル内のコメントを読んでください)。

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. 次に、次のコマンドを実行して新しい設定を読み込みます。

$ sudo sysctl -p
Load Sysctl Kernel Settings

3. UFWファイアウォールサービスが有効になっている場合は、セキュリティゲートウェイのいずれかのフィルタールールの直前に、次のルールを/etc/ufw/before.rules構成ファイルに追加する必要があります。

サイト1ゲートウェイ(tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

サイト2ゲートウェイ(tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. ファイアウォールルールが追加されたら、次に示す方法でUFWを再起動して新しい変更を適用します。

$ sudo ufw disable 
$ sudo ufw enable

ステップ2:DebianおよびUbuntuにstrongSwanをインストールする

5. 両方のセキュリティゲートウェイでパッケージキャッシュを更新し、APTパッケージマネージャを使用してstrongswanパッケージをインストールします。

$ sudo apt update
$ sudo apt install strongswan 

6. インストールが完了すると、インストーラースクリプトがstrongswanサービスを開始し、システムの起動時に自動的に起動するようにします。次のコマンドを使用して、その状態と有効化状況を確認できます。

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

ステップ3:セキュリティゲートウェイの構成

7. 次に、/etc/ipsec.conf構成ファイルを使用してセキュリティゲートウェイを構成する必要があります。

サイト1ゲートウェイ(tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

ファイルに以下の構成をコピー&ペーストしてください。

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

サイト2 ゲートウェイ(tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

ファイルに以下の構成をコピー&ペーストしてください。

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

各構成パラメータの意味は以下の通りです:

  • config setup – すべての接続に適用されるIPSecの一般的な構成情報を指定します。
  • charondebug – Charonのデバッグ出力をどれだけ記録するかを定義します。
  • uniqueids – 特定の参加者IDを一意に保持するかどうかを指定します。
  • conn prodgateway-to-devgateway – 接続名を定義します。
  • type – 接続タイプを定義します。
  • auto – IPSecが開始または再起動されたときに接続をどのように処理するかを定義します。
  • keyexchange – 使用するIKEプロトコルのバージョンを定義します。
  • authby – ピア同士がどのように認証するかを定義します。
  • left – 左側参加者のパブリックネットワークインターフェースのIPアドレスを定義します。
  • leftsubnet – 左側参加者の背後にあるプライベートサブネットを示します。
  • right – 右側参加者のパブリックネットワークインターフェースのIPアドレスを指定します。
  • rightsubnet – 左側参加者の背後にあるプライベートサブネットを示します。
  • ike – 使用するIKE/ISAKMP SA暗号化/認証アルゴリズムのリストを定義します。コンマ区切りのリストを追加できます。
  • esp – 接続に使用するESP暗号化/認証アルゴリズムのリストを定義します。コンマ区切りのリストを追加できます。
  • aggressive – アグレッシブモードまたはメインモードを使用するかどうかを指定します。
  • keyingtries – 接続を交渉するために行うべき試行回数を指定します。
  • ikelifetime – 接続の鍵チャネルが再交渉される前にどのくらい続くかを指定します。
  • lifetime – 成功した交渉から有効期限切れまでの接続の特定のインスタンスがどのくらい続くかを定義します。
  • dpddelay – R_U_THEREメッセージ/情報交換がピアに送信される時間間隔を指定します。
  • dpdtimeout – アクティビティがない場合、一定時間経過後にピアへのすべての接続が削除されるタイムアウト間隔を指定します。
  • dpdaction – Dead Peer Detection(DPD)プロトコルを使用して接続を管理する方法を定義します。

上記の構成パラメータに関する詳細情報については、コマンドを実行してipsec.confマニュアルページを参照してください。

$ man ipsec.conf

ステップ4:ピア間認証のためのPSKの構成

8. 両方のセキュリティゲートウェイを構成した後、次のコマンドを使用してピアが使用する安全なPSKを生成します。

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9.次に、両方のゲートウェイのPSK/etc/ipsec.secretsファイルに追加します。

$ sudo vim /etc/ipsec.secrets

以下の行をコピーして貼り付けます。

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10.IPSecプログラムを再起動し、接続を表示するためにその状態を確認します。

$ sudo ipsec restart
$ sudo ipsec status
View IPSec Connection Status

11.最後に、pingコマンドを実行して、どちらのセキュリティゲートウェイからもプライベートサブネットにアクセスできることを確認します。

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12.さらに、以下に示すようにIPSecを停止および開始できます。

$ sudo ipsec stop
$ sudo ipsec start

13.手動で接続を確立するためのIPSecコマンドやその他の詳細については、IPSecヘルプページを参照してください。

$ ipsec --help

以上です!この記事では、strongSwanを使用してUbuntuおよびDebianサーバーでサイト間IPSec VPNを設定する方法について説明しました。両方のセキュリティゲートウェイがPSKを使用して相互認証されるように構成されています。質問やご意見がある場合は、以下のフィードバックフォームからお問い合わせください。

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/