アップデート一覧に戻る
New releaseSep 8, 2026

strongswan v6.1.0

strongSwan - IPsecベースのVPN

共有

strongSwan 設定

概要

strongSwan は、オープンソースの IPsec ベースの VPN ソリューションです。

このドキュメントは、モダンな vici Versatile IKE Configuration Interface を使用する strongSwan swanctl コマンドの簡単な紹介です。レガシーな stroke 設定インターフェースを使用する非推奨の ipsec コマンドについては こちら で説明しています。より詳細な情報については、man ページ、新しい ドキュメントサイト、およびレガシーな wiki を参照してください。

クイックスタート

ユーザー、ホスト、ゲートウェイ用の証明書は、架空の strongSwan CA によって発行されます。この例のシナリオでは、ピアを認証できるように、CA 証明書 strongswanCert.pem がすべての VPN エンドポイントに存在している必要があります。特定の VPN アプリケーションでは、サードパーティの CA の証明書を使用するか、strongSwan pki ツールを使用して必要な秘密鍵と証明書を自分で生成することができます。この pki ツールの使用方法については、後述のセクションのいずれかで説明します。

サイト間接続のケース

このシナリオでは、2 つのセキュリティゲートウェイ moon と sun が、2 つのゲートウェイ間に設定された VPN トンネルを介して、2 つのサブネット moon-net と sun-net を相互に接続します。

10.1.0.0/16 -- | 192.168.0.1 | === | 192.168.0.2 | -- 10.2.0.0/16
  moon-net          moon                 sun           sun-net

ゲートウェイ moon の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/moonCert.pem
/etc/swanctl/private/moonKey.pem

/etc/swanctl/swanctl.conf:

    connections {
        net-net {
            remote_addrs = 192.168.0.2

            local {
                auth = pubkey
                certs = moonCert.pem
            }
            remote {
                auth = pubkey
                id = "C=CH, O=strongSwan, CN=sun.strongswan.org"
            }
            children {
                net-net {
                    local_ts  = 10.1.0.0/16
                    remote_ts = 10.2.0.0/16
                    start_action = trap
                }
            }
        }
    }

ゲートウェイ sun の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/sunCert.pem
/etc/swanctl/private/sunKey.pem

/etc/swanctl/swanctl.conf:

    connections {
        net-net {
            remote_addrs = 192.168.0.1

            local {
                auth = pubkey
                certs = sunCert.pem
            }
            remote {
                auth = pubkey
                id = "C=CH, O=strongSwan, CN=moon.strongswan.org"
            }
            children {
                net-net {
                    local_ts  = 10.2.0.0/16
                    remote_ts = 10.1.0.0/16
                    start_action = trap
                }
            }
        }
    }

このシナリオで使用されるローカルおよびリモートの ID は、エンドエンティティ証明書に含まれる subjectDistinguishedNames です。証明書と秘密鍵は、次のコマンドで charon デーモンに読み込まれます

swanctl --load-creds

一方、

swanctl --load-conns

は、swanctl.conf で定義された接続を読み込みます。start_action = trap を設定すると、トンネルを通過しようとする最初の平文ペイロード IP パケットによって IPsec 接続が自動的にセットアップされます。

ホスト間接続のケース

これは、背後にサブネットを持たない 2 つの単一ホスト間のセットアップです。ホスト間接続には IPsec トランスポートモードで十分ですが、ここではデフォルトの IPsec トンネルモードを使用します。

| 192.168.0.1 | === | 192.168.0.2 |
     moon                sun

ホスト moon の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/moonCert.pem
/etc/swanctl/private/moonKey.pem

/etc/swanctl/swanctl.conf:

    connections {
        host-host {
            remote_addrs = 192.168.0.2

            local {
                auth=pubkey
                certs = moonCert.pem
            }
            remote {
                auth = pubkey
                id = "C=CH, O=strongSwan, CN=sun.strongswan.org"
            }
            children {
                net-net {
                    start_action = trap
                }
            }
        }
    }

ホスト sun の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/sunCert.pem
/etc/swanctl/private/sunKey.pem

/etc/swanctl/swanctl.conf:

    connections {
        host-host {
            remote_addrs = 192.168.0.1

            local {
                auth = pubkey
                certs = sunCert.pem
            }
            remote {
                auth = pubkey
                id = "C=CH, O=strongSwan, CN=moon.strongswan.org"
            }
            children {
                host-host {
                    start_action = trap
                }
            }
        }
    }

ロードウォリアーのケース

これは、strongSwan ゲートウェイが、通常は動的 IP アドレスを持つ任意の数のリモート VPN クライアントにサービスを提供する、非常に一般的なケースです。

10.1.0.0/16 -- | 192.168.0.1 | === | x.x.x.x |
  moon-net          moon              carol

ゲートウェイ moon の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/moonCert.pem
/etc/swanctl/private/moonKey.pem

/etc/swanctl/swanctl.conf:

    connections {
        rw {
            local {
                auth = pubkey
                certs = moonCert.pem
                id = moon.strongswan.org
            }
            remote {
                auth = pubkey
            }
            children {
                net-net {
                    local_ts  = 10.1.0.0/16
                }
            }
        }
    }

ロードウォリアー carol の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/carolCert.pem
/etc/swanctl/private/carolKey.pem

/etc/swanctl/swanctl.conf:

    connections {
        home {
            remote_addrs = moon.strongswan.org

            local {
                auth = pubkey
                certs = carolCert.pem
                id = [email protected]
            }
            remote {
                auth = pubkey
                id = moon.strongswan.org
            }
            children {
                home {
                    local_ts  = 10.1.0.0/16
                    start_action = start
                }
            }
        }
    }

remote_addrs にはホスト名 moon.strongswan.org が選択されており、実行時に DNS によって対応する IP 宛先アドレスに解決されます。このシナリオでは、ロードウォリアー carol の ID はメールアドレス [email protected] であり、ロードウォリアー証明書 carolCert.pem に subjectAlternativeName として含まれている必要があります。

仮想 IP を使用したロードウォリアーのケース

ロードウォリアーは通常、現在接続している ISP によって割り当てられた動的 IP アドレスを持っています。moon-net からリモートアクセスクライアント carol へのルーティングを簡素化するには、ロードウォリアーが事前定義されたプールから選択された内部 IP アドレスを持っていることが望ましいです。

10.1.0.0/16 -- | 192.168.0.1 | === | x.x.x.x | -- 10.3.0.1
  moon-net          moon              carol       virtual IP

この例では、仮想 IP アドレスはアドレスプール 10.3.0.0/16 から選択されます。これは、次のセクションを追加することで設定できます

pools {
    rw_pool {
        addrs = 10.3.0.0/16
    }
}

このセクションをゲートウェイの swanctl.conf に追加すると、そこから次のコマンドで charon デーモンに読み込まれます

swanctl --load-pools

このプールから IP アドレスを要求するために、ロードウォリアーは IKEv1 モードコンフィグまたは IKEv2 設定ペイロードを使用できます。両方の設定は同じで、次のようになります

vips = 0.0.0.0

ゲートウェイ moon の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/moonCert.pem
/etc/swanctl/private/moonKey.pem

/etc/swanctl/swanctl.conf:

    connections {
        rw {
            pools = rw_pool

            local {
                auth = pubkey
                certs = moonCert.pem
                id = moon.strongswan.org
            }
            remote {
                auth = pubkey
            }
            children {
                net-net {
                    local_ts  = 10.1.0.0/16
                }
            }
        }
    }

    pools {
        rw_pool {
            addrs = 10.30.0.0/16
        }
    }

ロードウォリアー carol の設定:

/etc/swanctl/x509ca/strongswanCert.pem
/etc/swanctl/x509/carolCert.pem
/etc/swanctl/private/carolKey.pem

/etc/swanctl/swanctl.conf:

カテゴリ