5月 2013

Monthly Archive

IPSec/L2TPで接続が切れる

30 5月 2013 | : 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 ←再接続を行う最大回数

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

EC-CUBEのセキュリティーアップデート

24 5月 2013 | : EC-CUBE

EC-CUBEのサイトにて緊急度の高い脆弱性を含めたアップデートが公開されています。
http://www.ec-cube.net/info/weakness/20130522/index.php
ご確認の上、ご対応ください。

今回のアップデートにつきましては、弊社でご提供しているプラグインが問題無く稼働することを確認しておりますが、カスタマイズを実施されている場合など保証いたしかねますので、ご注意の上実施をお願いいたします。

LinuxのCUPSプリンタをAirPrintから利用

23 5月 2013 | : サーバー

全体の流れ

開発用、ファイル共有でCentOSのサーバを利用しています。
このサーバにCUPSをインストールし、Wifiで接続しているiPhone・iPadのAirPrintから利用できるようにします。
プリンタはブラザーの複合機MFC-9420CNです。

1. CentOSにCUPS、プリンタドライバをインストールし、プリンタを設定。
2. Bonjourが利用できるようCentOSにAvahiをインストール。
3. Avahiにプリンタの設定ファイルを作成

以上で、AirPrintが利用できるようになります。

1. CUPSとプリンタドライバのインストール

CentOSですので、CUPSとghostscriptをyumでインストール、プリンタドライバはブラザーのサイトからrpmを取得しインストールしました。
その後、https://サーバのIPアドレス:631/ でプリンタを設定し印刷できるところまで確認しておいてください。
なお、キュー名はMFC-9420CNとしました。

起動時にCUPSを起動させるには

chkconfig cups on

としてください。

2. Avahiのインストール

yumでインストールします。

yum install avahi avahi-compat-libdns_sd

3. Avahiにプリンタの設定ファイルを作成

ここが一番のポイントになりますが、設定ファイルを作成するPythonスクリプトがGitHubで公開されています。
https://github.com/tjfontaine/airprint-generate

airprint-generate.pyをダウンロードの上、PythonのCUPSモジュールをインストールします。

yum install system-config-printer-libs

インストールできましたら、avahi-daemonを起動します。

service avahi-daemon start

起動時にavahi-daemonを起動させるには

chkconfig avahi-daemon on

としてください。

先ほどダウンロードしたairprint-generate.pyのあるディレクトリで

python airprint-generate.py

とすると、同じディレクトリに

AirPrint-プリンタキューネーム.service

で設定ファイルが作成されます。
今回の場合 AirPrint-MFC-9420CN.service というファイルが作成されました。
このファイルを

/etc/avahi/services/

にコピーします。
続いて、/etc/cups/cupsd.confの最後に

ServerAlias *

を追加します。
ここまで出来ましたら、AvahiとCUPSを再起動します。

service avahi-daemon restart
service cups restart

iPhoneからAirPrintを利用する

これで、Wifiで接続しているiPad、IphoneからAirPrintが使えるようになります。
iPhine AirPrint

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

22 5月 2013 | : 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との接続

22 5月 2013 | : 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:接続計画

22 5月 2013 | : 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との接続」へ続く→