ファイアーウォール配下の L2TP-VPN に Linux で接続する
CLIENT
ファイアーウォールに保護された L2TP-VPN サーバーに CentOS 6.0 から接続する
ファイアーウォールで保護されたネットワーク内に CentOS 6.0 で L2TP-VPN サーバを構築する で記した方法で構築して、L2TP-VPN で使用するポートを開放する で記した必要なポートを、静的 NAT で転送した L2TP-VPN サーバーがありました。
そこへ CentOS 6.0 で L2TP-VPN に接続する で記した方法で、Linux を L2TP-VPN クライアントとして接続しようとしたところ、"ipsec --up PEER_L2TP" を実行したところで、次のエラーが発生してしまいました。
003 "PEER_L2TP" #1: we require peer to have ID '10.0.0.1', but peer declares '192.168.1.1'
218 "PEER_L2TP" #1: STATE_MAIN_I3: INVALID_ID_INFORMATION
これはどうやら L2TP-VPN サーバーがファイアーウォールで保護されていたため、接続先はファイアーウォールの IP "10.0.0.1" を指定しているのに、実際に接続できた先はその内側の "192.168.1.1" だったことが原因の様子です。
これを解消するためには、IPsec の設定で "rightid" として内側の IP アドレスを指定する必要があるようでした。
今回の環境では "/etc/ipsec.d/connection.conf" ファイルに記載した "conn PEER_L2TP" の中の接続先(right)関連の設定を、次のように調整します。
right=10.0.0.1
rightid=192.168.1.1
rightprotoport=17/1701
このようにしたら、CentOS 6.0 であれば次のように ipsec を再起動して、設定ファイルを再読み込みします。
L2TP 接続の方の、"/etc/xl2tpd/xl2tpd.conf" に記載されている "[lac L2TP1]" の "lns" の設定については、通常の接続のとおり、ファイアーウォール側の IP アドレスまたはドメイン名を指定しておけば大丈夫です。
service ipsec restart
これで、後はもう一度 "ipsec --up PEER_L2TP" を実行すれば、ipsec による接続が出来るようになりました。