libreswanでIPSecVPN

RHEL系LinuxではLibreswanを使ってIPSec VPNを構築するのがメジャーな様子。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/sec-securing_virtual_private_networks

IPSec VPNを構築してみたメモ。
まずは、パスワード式(PSK)で特に暗号化プロトコルを指定しない、簡単な方法で。
サーバを2台用意し、トンネルモードで接続。お互いのローカルIPに対する通信を、VPN経由でアクセスすることを想定。

インストール

sudo yum install libreswan -y

必要最低限な設定

(今回の設定は以下の構成を想定している)

  • サーバ1
    • グローバルIPアドレス: 100.64.1.1
    • ローカルIPアドレス: 172.16.1.1
  • サーバ2
    • グローバルIPアドレス: 100.64.2.2
    • ローカルIPアドレス: 192.168.2.2
  • 事前共有キー: SecretKeyStringWithoutQuote

サーバ1

/etc/ipsec.d/to-server2.conf

conn IPSecVPN_toServer2
    authby  = secret
    auto    = start

    # LEFT: local(server1)
    left        = 172.16.1.1    # THIS SERVER'S IP ADDRESS BINDED TO NIC
    leftid      = 100.64.1.1    # THIS SERVER'S GLOBAL IP ADDRESS
    leftsubnets = 172.16.1.1/32

    # RIGHT: remote(server2)
    right           = 100.64.2.2        # OPPOSITE SERVER'S IP ADDRESS
    rightid         = 100.64.2.2        # (usually same as "right")
    rithgsubnets    = 192.168.2.2/32    # OPPOSITE SERVER'S LOCAL NETWORK

/etc/ipsec.d/to-server2.secrets

100.64.1.1 100.64.2.2 : PSK "SecretKeyStringWithoutQuote"

設定が終わったら起動。

systemctl restart ipsec.service

サーバ2

/etc/ipsec.d/to-server1.conf

conn IPSecVPN_toServer1
    authby  = secret
    auto    = start

    # LEFT: local(server2)
    left        = 192.168.2.2   # THIS SERVER'S IP ADDRESS BINDED TO NIC
    leftid      = 100.64.2.2    # THIS SERVER'S GLOBAL IP ADDRESS
    leftsubnets = 192.168.2.2/32

    # RIGHT: remote(server1)
    right           = 100.64.1.1    # OPPOSITE SERVER'S IP ADDRESS
    rightid         = 100.64.1.1    # (usually same as "right")
    rithgsubnets    = 172.16.1.1/32 # OPPOSITE SERVER'S LOCAL NETWORK

/etc/ipsec.d/to-server2.secrets

100.64.2.2 100.64.1.1 : PSK "SecretKeyStringWithoutQuote"

設定が終わったら起動。

systemctl restart ipsec.service
こちらも

動作確認

ping ${お互いのローカルIP}で応答があることを確認。
今回の設定は純粋にデフォルトの設定で接続を試みるので、特段問題なく確立できるはず。

次回以降、暗号方式を限定したりトランスポートモードにしたりいろいろ変えて試してみたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です