Oracle Cloud Infrastructureドキュメント

Libreswan

Libreswanは、FreeS/WANおよびOpenswanに基づくOpen-source IPSecの実装です。 ほとんどのLinuxディストリビューションには、Libreswanなどが含まれます。また、インストールを容易にすることもできます。 オンプレミス・ネットワークまたはクラウド・プロバイダ・ネットワークのいずれかで、ホストにインストールできます。 Oracle Cloud Infrastructure VCNに接続するために別のクラウド・プロバイダのLibreswanホストを設定する例は、「Libreswanによる他のクラウドへのアクセス」を参照してください。

この構成は、Libreswanバージョン3.23を使用して検証されました。

重要

Oracleは、IPSec VPN接続を構成する複数のトンネル間で非対称ルーティングを使用します。
1つのトンネルをプライマリ、別のトンネルをバックアップとして構成しても、VCNからオンプレミス・ネットワークへのトラフィックは、デバイス上にあるすべてのトンネルを使用できます。 それに応じてファイアウォールを構成します。 そうしないと、接続を介したpingテストやアプリケーション・トラフィックが確実に機能しなくなります。

Libreswanによるルート・ベースのVPN

Libreswanは、ルーティング・ベースおよびポリシーベースのトンネルの両方をサポートします。 トンネル・タイプは、互いに干渉せずに共存できます。 Oracle VPNのヘッド・ポイントでは、ルーティング・ベースのトンネルが使用されます。 Oracleでは、「仮想トンネル・インタフェース(VTI)の構成構文」を使用してLibreswanを構成することをお勧めします。

ISAKMPおよびIPSecポリシー・オプション

ISAKMPおよびIPSecポリシー・オプションのLibreswanデフォルト値は、Oracle VPNヘッド・エンドと互換性があります。 これらのポリシー・オプションの詳細は、「一般的なCPE構成情報」を参照してください。

デフォルトLibreswan構成ファイル

Libreswan構成では、「左」「右」の概念を使用して、ローカルのCPEデバイスとリモート・ゲートウェイの構成パラメータを定義します。 接続のいずれかの側(Libreswan構成のconn)を左または右に指定できますが、その接続の構成は同じにする必要があります。 この例では、次のようになります。

  • 左:ローカルLibreswan CPE
  • 右: Oracle VPNゲートウェイ

/etc/ipsec.conf and /etc/ipsec.secrets

デフォルトのLibreswanインストールでは、次のファイルが作成されます。

  • etc/ipsec.conf: Libreswan構成のルート。
  • /etc/ipsec.secrets: Libreswanがシークレットを検索するロケーションのルート(トンネル共有キー)。
  • /etc/ipsec.d/: Oracle Cloud Infrastructureトンネル用に.confファイルと.secretsファイルを格納するためのディレクトリ(たとえば: oci-ipsec.confおよびoci-ipsec.secrets Libreswanは、これらのファイルをこのフォルダに作成することをお薦めします。

デフォルトのetc/ipsec.confファイルには次の行が含まれます。

include /etc/ipsec.d/*.conf

デフォルトのetc/ipsec.secretsファイルには次の行が含まれます。

include /etc/ipsec.d/*.secrets

これらの行は、Libreswanが使用するメイン構成およびシークレット・ファイルに、/etc/ipsec.dディレクトリ内のすべての.confファイルおよび.secretsファイルを自動的にマージします。

重要

Libreswanで経験し、その意味を把握している場合以外は、デフォルトの.confファイルと.secretsファイルを変更しないでください。

APIまたはコンソールからのパラメータ

Oracle Cloud InfrastructureコンソールまたはAPIから次のパラメータを取得します。

${ipAddress#}

  • Oracle VPNのヘッド・エンドIPSecトンネル・エンドポイント。 各トンネルには1つの値があります。
  • 値の例: 129.146.12.52

${psk#}

  • IPSec IKE事前共有キー。 各トンネルには1つの値があります。
  • 値の例: EXAMPLEDPfAMkD7nTH3SWr6OFabdT6exXn6enSlsKbE

${cpePublicIpAddress}

  • CPEのパブリックIPアドレス(以前はコンソールを介してOracleから使用可能にしたもの)。
  • 値の例: 1.2.3.4

${VcnCidrBlock}

  • VCNを作成する際、このCIDRを選択して、すべてのVCNホストのIP集約ネットワークを表します。
  • 値の例: 10.0.0.0/20

追加の構成パラメータ

${cpeLocalIP}

  • Libreswanホストに直接構成されたIPアドレス
  • CPEが1-1 NATの背後にない場合、この値は${cpePublicIpAddress}と同じです。
  • 値の例:
    • CPEが1-1 NATの背後にない場合: 1.2.3.4
    • CPEが1-1 NATの背後に存在する場合: 10.2.3.4

${vti#}

  • 仮想トンネル・インタフェースに対して指定した名前。 各トンネルには1つの値があります。
  • 値の例: vti01

${markValue#}

  • これらの値は、特定の仮想トンネル・インタフェース(vti)に一致するLibreswanホスト内のパケットをマークするのに使用されます。
  • 各マーク値はLibreswanホスト間で一意である必要があります。
  • Vtiインタフェースの作成後にマーク値が変更された場合は、vtiインタフェースを削除してから再作成する必要があります(次の手順を参照)。
  • 各トンネルの値の例: 5/0xffffffffおよび6/0xffffffff
マーク値を変更した後にvtiインタフェースを再作成するには、次の手順を実行

構成テンプレートのパラメータの概要

各リージョンには複数のOracle IPSecヘッド・エンドがあります。 次のテンプレートを使用すると、CPEに複数のトンネルをそれぞれ対応する表明に設定できます。 次の表で、ユーザーと入力します。

パラメータ ソース 値の例
${ipAddress1} Console/API

129.146.12.52

${psk1} Console/API

(長い文字列)

${ipAddress2} Console/API

129.146.13.52

${psk2} Console/API

(長い文字列)

${VcnCidrBlock} ユーザー 10.0.0.0/20
${cpePublicIpAddress} ユーザー

1.2.3.4

${cpeLocalIP} ユーザー

CPEが1-1 NATの背後にない場合: 1.2.3.4

CPEが1-1 NATの背後に存在する場合: 10.2.3.4

${vti1} ユーザー vti01
${vti2} ユーザー vti02
${markValue1} ユーザー 5/0xffffffff
${markValue2} ユーザー 6/0xffffffff

構成ファイルの設定: /etc/ipsec.d/oci-ipsec.conf

/etc/ipsec.d/oci-ipsec.confファイルには次のテンプレートを使用します。 このファイルは、IPSec接続を設定するときにOracleが作成する2つのトンネルを定義します。

重要

CPEが1-1 NATデバイスの背後に存在する場合は、leftidパラメータを検出し、${cpePublicIpAddress}と同じ値に設定します。

conn oracle-tunnel-1
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${ipAddress1}
     authby=secret
     leftsubnet=0.0.0.0/0
     rightsubnet=0.0.0.0/0
     auto=start
     mark=${markValue1}
     vti-interface=${vti1}
     vti-routing=no
     encapsulation=no
conn oracle-tunnel-2
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${ipAddress2}
     authby=secret
     leftsubnet=0.0.0.0/0
     rightsubnet=0.0.0.0/0
     auto=start
     mark=${markValue2}
     vti-interface=${vti2}
     vti-routing=no
     encapsulation=no

秘密ファイルの設定: /etc/ipsec.d/oci-ipsec.secrets

/etc/ipsec.d/oci-ipsec.secretsファイルには次のテンプレートを使用します。 IPSec接続ごとに2行が存在します(トンネルごとに1行ずつ)。

${cpePublicIpAddress} ${ipAddress1}: PSK "${psk1}"
${cpePublicIpAddress} ${ipAddress2}: PSK "${psk2}"

Libreswan構成のリロード

構成ファイルおよびシークレット・ファイルを設定した後、Libreswanサービスを再起動する必要があります。

重要

Libreswanサービスを再起動すると、既存のトンネルに影響する場合があります。

次のコマンドは、構成ファイルを再スキャンし、Libreswanサービスを再起動します。 非特権ユーザー・アカウントを使用してログインしている場合は、コマンドの前にsudoを使用する必要があります。

service ipsec restart

Libreswanステータスの確認

次のコマンドを使用して、Libreswanトンネルの現在の状態を確認します。

ipsec status

トンネルは、次の行を含む行が表示された場合に確立されます。

STATE_MAIN_I4: ISAKMP SA established

将来、LibreswanトンネルについてOracleを指定してサポート・チケットを開く必要がある場合は、前述のipsec statusコマンドの出力を含めます。

トンネル・インタフェースのステータスの確認

仮想トンネル・インタフェースの位置を確認するには、ifconfigコマンドまたはip link showコマンドを使用します。 また、インタフェースを使用してtcpdumpなどのアプリケーションを使用することもできます。

次に、ifconfig出力の例を示します。

ifconfig
<output trimmed>
				
vti01: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 fe80::5efe:a00:2 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 10 dropped 0 overruns 0 carrier 10 collisions 0

vti02: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 fe80::5efe:a00:2 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 40 dropped 0 overruns 0 carrier 40 collisions 0

次に、ip link show出力の例を示します。

ip link show
<output trimmed>

9: vti01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.0.0.2 peer 129.213.240.52

10: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.0.0.2 peer 129.213.240.51

IPルーティングの構成

次のipコマンドを使用して、IPSecトンネルを通してVCNにトラフィックを送信する静的ルートを作成します。 非特権ユーザー・アカウントを使用してログインしている場合は、コマンドの前にsudoを使用する必要があります。

ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show