RT107eとCentOSでipsec生存確認

Posted by on 07 9月 2014 | Tagged as: IPSec, サーバー

VPNが途切れがちなので調査したところ、RT107eのログに

[IKE] ICMP: dead peer detection SA[1] yyy.yyy.yyy.yyy
[IKE] inactivate ISAKMP socket
[IKE] initiate informational exchange (delete)
[IKE] inactivate IPsec socket[transport:1](outbound)
[IKE] inactivate IPsec socket[transport:1](inbound)
IP Tunnel[1] Down

と出ており、接続が切れていました。

IPSecの生存確認をしていないことが原因のようでしたので、以下のように変更しました。
ヤマハ-ルータ(RT107e)のIPSec/L2TP – 2:Centosとの接続の設定を変更し、

 RT107eの設定

tunnel select 1

tunnel encapsulation l2tp
tunnel endpoint address yyy.yyy.yyy.yyy
ipsec tunnel 1
ipsec sa policy 1 1 esp aes-cbc sha-hmac
ipsec ike keepalive log 1 on ←変更 IPSecの生存確認のログを有効にする
ipsec ike keepalive use 1 on ←変更 IPSecの生存確認を有効にする
ipsec ike keepalive use 1 on icmp-echo yyy.yyy.yyy.yyy ←追加 CentOSのGlobalアドレスに向けてICMPでIPSecの生存確認
ipsec ike local address 1 192.168.1.1
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text
ipsec ike remote address 1
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 1

としました。

 CentOSの設定

/etc/ipsec.confを変更し、

config setup
protostack=netkey
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
force_keepalive=yes ←追加

としました。

これで、24時間以上たっていますが、途切れることなく接続しています。
SAの寿命は8時間ですが、これを超えて接続していますので、問題無いようです。

xl2tpdのログに”CCP: timeout sending Config-Requests”と出る

Posted by on 25 2月 2014 | Tagged as: IPSec, サーバー

ヤマハ-ルータ(RT107e)のIPSec/L2TP – 2:Centosとの接続で/etc/ppp/options.xl2tpd.conn-1に

logfile /var/log/xl2tpd.conn-1.log

とログファイルを指定していたのですが、そこに

sent [CCP ConfReq id=0x2]
sent [CCP ConfReq id=0x2]
CCP: timeout sending Config-Requests

と出ていました。

調べてみると、

CCP(Compression Control Protocol) とは、PPP通信に使用されるデータ圧縮の方式を、接続先と取り決めるのに使用するプロトコルです。

http://www.bcom.nec.co.jp/comstarz/router/faq/ro_faq/ppp.htm

とのことです。

RT107eの設定を見ると、インターネットプロバイダとの接続には

ppp ccp type none

となっていたので、CentOSとの接続もCCP無しで良いだろうと考え(ブロードバンドでいらないらしい)、VPNの接続に用いるPP1の設定に「ppp ccp type none」を設定しました。
YAMAHAルータ コマンド備忘録 『ppp ccp type none』

ところが、/var/log/xl2tpd.conn-1.logに変わらず上記エラーログが出るので、

/etc/ppp/options.xl2tpd.conn-1

noccp

を加え、サーバ・クライアント両方で「CCP使わないよ」と設定することでエラーログは出なくなりました。

追記:2014/03/02
上記設定でたまに切れていたVPNの接続が安定し、切れなくなりました。

IPSec/L2TPで接続が切れる

Posted by on 30 5月 2013 | Tagged as: IPSec, サーバー

以前YamahaルータとCentOSのIPSec/L2TP接続をご紹介しましたが、接続が切れる場合があるので補足です。

Secureログを見てみると、IPsec SA expiredというログが出ていて、8時間ごとに接続が切れるのですが、これはIPSec-SAキーの寿命の関係で、CentOS、Yamahaルータ共に「28800秒 = 8時間」がデフォルトで設定されています。
このため、8時間ごとに接続が切れます。

Yamahaのサポートに確認したところ

・IPSec-SAキーの寿命をOFFにはできない
・通信中に寿命が来ても切断されず、通信が終了した段階で寿命切れとなる

ということでしたので再接続で回避するしかないようです。

/etc/xl2tpd/xl2tpd.conf の [lac L2TP1] に

redial = yes ←切断時に再接続する
redial timeout = 10 ←再接続までの待機時間
max redials = 6 ←再接続を行う最大回数

と設定することで自動的に再接続できます。

ヤマハ-ルータ(RT107e)のIPSec/L2TP – 3:Windows7・iOSとの接続

Posted by on 22 5月 2013 | Tagged as: IPSec, サーバー

 RT107eの追加設定

基本的にこちらを参考にしました。
Windows7、iOSは動的IPですのでanonymousとして設定し、ユーザー名、パスワードで認証します。
CentOS(固定グローバルIP)の設定に追加設定します。

pp select anonymous ←動的IPアドレス用L2TP接続設定

pp bind tunnel2-tunnel4 ←クライント用にtunnel2~4を設定
pp auth request chap-pap
pp auth username 接続ユーザー名1 接続パスワード1
pp auth username 接続ユーザー名2 接続パスワード2
pp auth username 接続ユーザー名3 接続パスワード3
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp remote address pool 192.168.1.71-192.168.1.75 ←接続したクライアントにLocal側で192.168.1.71~192.168.1.75を与えます。RT107eは対地数6ですので、CentOSと別に5個を設定しました
ip pp mtu 1258
pp enable anonymous

動的IPアドレスの複数クライアントから接続する場合(今回の場合tunnel2~4)、共有キーは共通である必要があります。

tunnel select 2 ←接続ユーザー1用L2TPトンネル

tunnel encapsulation l2tp
ipsec tunnel 2 ←tunnel2で利用するIPSecトンネルを2とする
ipsec sa policy 2 2 esp 3des-cbc sha-hmac ←tunnel2、IPSecトンネル2の暗号アルゴリズム、認証アルゴリズムを設定
ipsec ike keepalive use 2 off
ipsec ike local address 2 192.168.1.1 ←RT107eのLocalアドレス
ipsec ike nat-traversal 2 on ←NATトラバーサル有効化
ipsec ike pre-shared-key 2 text efgh5678 ←共有キー
ipsec ike remote address 2 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 2

tunnel select 3 ←接続ユーザー2用L2TPトンネル

tunnel encapsulation l2tp
ipsec tunnel 3 ←tunnel3で利用するIPSecトンネルを3とする
ipsec sa policy 3 3 esp 3des-cbc sha-hmac ←tunnel3、IPSecトンネル3の暗号アルゴリズム、認証アルゴリズムを設定
ipsec ike keepalive use 3 off
ipsec ike local address 3 192.168.1.1 ←RT107eのLocalアドレス
ipsec ike nat-traversal 3 on ←NATトラバーサル有効化
ipsec ike pre-shared-key 3 text efgh5678 ←共有キー
ipsec ike remote address 3 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 3

tunnel select 4 ←接続ユーザー3用L2TPトンネル

tunnel encapsulation l2tp
ipsec tunnel 4 ←tunnel4で利用するIPSecトンネルを4とする
ipsec sa policy 4 4 esp 3des-cbc sha-hmac ←tunnel4、IPSecトンネル4の暗号アルゴリズム、認証アルゴリズムを設定
ipsec ike keepalive use 4 off
ipsec ike local address 4 192.168.1.1 ←RT107eのLocalアドレス
ipsec ike nat-traversal 4 on ←NATトラバーサル有効化
ipsec ike pre-shared-key 4 text efgh5678 ←共有キー
ipsec ike remote address 4 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 4

ipsec transport 2 2 udp 1701  ←tunnel2、IPSecトンネル2にトランスポートモードを設定
ipsec transport 3 3 udp 1701  ←tunnel3、IPSecトンネル3にトランスポートモードを設定
ipsec transport 4 4 udp 1701  ←tunnel4、IPSecトンネル4にトランスポートモードを設定

以上の設定でwindows7、iOSからRT107eにIPSec/L2TPで接続し、ローカル環境にアクセスできるようになりました。

今Androidの環境がないのでテストできていませんが、問題なく接続できると思います。

2013/5/26追記
WindowsXPの場合、「Service Pack 2 で IPsec NAT トラバーサル (NAT-T) の既定の動作が変更」となっています。
Microsoftのサイトを参考の上、ご対応ください。

←「2:Centosとの接続」へ戻る

ヤマハ-ルータ(RT107e)のIPSec/L2TP – 2:Centosとの接続

Posted by on 22 5月 2013 | Tagged as: IPSec, サーバー

 RT107eの設定

基本的にこちらを参考にしました。

ただしNATトラバーサルを利用しますので、若干設定が変わります。

pp select 2 ←CentOS固定IPアドレス用L2TP接続設定

pp bind tunnel1 ←tunnel1を使用
pp auth request chap-pap ←RT107eはchapかpapを利用可能(※ルーターによって異なります)
pp auth username L2TPユーザー名 L2TPパスワード
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp remote address 192.168.1.80 ←CentOSはRT107e内側のローカルで192.168.1.80として扱う
ip pp mtu 1258
pp enable 2

tunnel select 1 ←CentOS固定IPアドレス用L2TP用トンネル

tunnel encapsulation l2tp
tunnel endpoint address yyy.yyy.yyy.yyy ←CentOSのGlobalアドレス
ipsec tunnel 1 ←tunnel1で利用するIPSecトンネルを1とする
ipsec sa policy 1 1 esp aes-cbc sha-hmac ←tunnel1、IPSecトンネル1の暗号アルゴリズム、認証アルゴリズムを設定
ipsec ike keepalive log 1 off
ipsec ike keepalive use 1 off
ipsec ike local address 1 192.168.1.1 ←RT107eのLocalアドレス
ipsec ike nat-traversal 1 on ←NATトラバーサル有効化
ipsec ike pre-shared-key 1 text ABCD1234 ←共有キー
ipsec ike remote address 1 yyy.yyy.yyy.yyy ←CentOSのGlobalアドレス
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 1

既にプロバイダ接続用で1000番にnatの設定がありましたので、udpの500(ISAKMP : Internet Security Association and Key Management Protocol)と4500(IPSec NAT Traversal)を追加しました。

また、ヤマハのNATトラバーサルのページには「NATトラバーサルを使う限り、ESPパケットは発生しないので、ESPの設定は不要です。」とあるのですが、ESPの設定がないとCentOSから接続できなかったので、ESP関係も設定しました。

nat descriptor type 1000 masquerade
nat descriptor address outer 1000 ipcp
・・・
nat descriptor masquerade static 1000 10 192.168.1.1 udp 500
nat descriptor masquerade static 1000 11 192.168.1.1 udp 4500
nat descriptor masquerade static 1000 12 192.168.1.1 esp

ipsec transport 1 1 udp 1701  ←tunnel1のIPSecトンネル1にトランスポートモードを設定
ipsec auto refresh on
l2tp service on

プロバイダ接続用でフィルタの設定がありましたので、udpの500、4500、1701(L2TP)、ESPを追加しました。

ip filter 200089 pass * 192.168.1.1 udp * 500
ip filter 200090 pass * 192.168.1.1 udp * 4500
ip filter 200091 pass * 192.168.1.1 udp * 1701
ip filter 200092 pass * 192.168.1.1 esp * *

上記フィルタが使用されるようにプロバイダ接続用pp1インターフェースを設定します。

ip pp secure filter in ・・・ 200089 200090 200091 200092 ←追加したフィルタ

 CentOSの設定

こちらを参考にさせていただきました。

上記設定で接続できましたので、変更点だけ記載します。

/etc/ipsec.d/connection.conf

right=xxx.xxx.xxx.xxx ←RT107eのGlobalIP

/etc/ipsec.d/ipsec.secrets

: PSK “ABCD1234″ ←共有キー

/etc/xl2tpd/xl2tpd.conf

lns = xxx.xxx.xxx.xxx ←RT107eのGlobalIP

/etc/ppp/options.xl2tpd.conn-1

name L2TPユーザー名 ←RT107eで設定したL2TPユーザー名
mtu 1258 ←RT107eのmtu設定に合わせました
mru 1258 ←RT107eのmtu設定に合わせました

/etc/ppp/chap-secrets

“L2TPユーザー名” * “L2TPパスワード” * ←RT107eで設定したL2TPユーザー名とL2TPパスワード

以上の設定でVPS上のCentOSがローカル側のクライアントから192.168.1.80でアクセスできるようになりました。

2013/5/26追記
route add -net 192.168.1.0 netmask 255.255.255.0 dev ppp0
を /etc/ppp/ipup に追加すると接続時、自動的に設定されます。

2013/5/26追記
クライアントのCentOSで /var/log/messages に

Maximum retries exceeded for tunnel 37028.  Closing
Connection 44740 closed to ・・・

というエラーが出て接続が切れる現象が発生しました。
/etc/xl2tpd/xl2tpd.conf の [lac L2TP1] に

redial = yes ←切断時に再接続する
redial timeout = 10 ←再接続までの待機時間
max redials = 6 ←再接続を行う最大回数

を追加することで自動的に再接続されるようになりました。

←「1:接続計画」へ戻る 「3:Windows7・iOSとの接続」へ続く→

ヤマハ-ルータ(RT107e)のIPSec/L2TP接続 – 1:接続計画

Posted by on 22 5月 2013 | Tagged as: IPSec, サーバー

ずいぶん間が空きました。

VPN接続を今まで色々やってみましたが、PPTPよりセキュアなIPSecに変え、更にハードの方が速度が速いだろうということでYAMAHAのRT107eを手に入れました。

VPSのCentOS、Windows7、iOSから接続を行います。

前提条件

RT107e
・RT107eはファームウェアRev.8.03.92 以降が必要です。
・Globalは固定IP xxx.xxx.xxx.xxx
・RT107eの内側は192.168.1.0/24としRT107eのLocalIPは192.168.1.1
CentOS
・Globalは固定IP yyy.yyy.yyy.yyy
iOS Windows7
・Globalは動的IPのため不定

IPSec/L2TP接続図

「2:Centosとの接続」へ続く→