ファイアーウォール配下の 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 による接続が出来るようになりました。