FutureNet
NXR,WXRシリーズ
IPsec編
3. リモートアクセスVPN設定
3-2. スマートフォンとのL2TP/IPsec接続設定例(CRT)
この設定例では、Android端末を用いてIPsecの認証に証明書を利用してL2TP/IPsec接続を行います。なお、キャリアグレードNATにより携帯網側でNATされる可能性がある場合は3-3. スマートフォンとのL2TP/IPsec NATトラバーサル接続設定例も参考になりますので、合わせてご参照ください。また、この設定例は弊社独自の検証結果を元に作成しております。よって、Androidのスマートフォンとの接続を保証するものではありません。
【 構成図 】
- 接続してきたAndroid端末にはIPアドレスプールよりIPアドレスを割り当てます。この設定例では2台にIPアドレスを割り当てるためIPアドレスを2つ設定し、かつユーザID毎に指定したIPアドレスを割り当てます。
- X.509で必要となる証明書や鍵はNXRシリーズで発行をすることができませんので、FutureNet RAシリーズで発行するか、別途CA等で用意しておく必要があります。
- 各種証明書は、FTPなどでインポートが可能です。この設定例ではFTPサーバからインポートを行います。証明書を保管しているサーバを192.168.10.10とし、サーバには以下の証明書が保管されているものとします。
192.168.10.10のサーバ | |
証明書名 | ファイル名 |
CA証明書 | nxrCA.pem |
CRL | nxrCRL.pem |
NXR用証明書 | nxrCert.pem |
NXR用秘密鍵 | nxrKey.pem |
- ここでは各証明書の拡張子としてpemを使用します。
(☞) 各証明書はDERまたはPEMフォーマットでなくてはなりません。なお、どのフォーマットの証明書かどうかはファイルの拡張子で自動的に判断されます。よって、PEMの場合はpem,DERの場合はderまたcerの拡張子でなければなりません。なお、シングルDESで暗号化された鍵ファイルは使用することができません。 - Androidでは、SDカードのルートディレクトリへのコピーで証明書をインポートすることができます。証明書のインポートについてはご利用機器のマニュアル等をご参照下さい。
【 設定データ 】
設定項目 | 設定内容 | |||
---|---|---|---|---|
ホスト名 | NXR | |||
LAN側インタフェース | ethernet0のIPアドレス | 192.168.10.1/24 | ||
PPPアカウント | No.1 | ユーザID | android01 | |
パスワード | android01pass | |||
No.2 | ユーザID | android02 | ||
パスワード | android02pass | |||
No.3 | ユーザID | test1@example.jp | ||
パスワード | test1pass | |||
WAN側インタフェース | PPPoEクライアント(ethernet1) | ppp0 | ||
ppp0のIPアドレス | 10.10.10.1/32 | |||
IPマスカレード | 有効 | |||
IPアクセスグループ | in | ppp0_in | ||
SPIフィルタ | 有効 | |||
MSS自動調整 | オート | |||
IPリダイレクト | 無効 | |||
ISP接続用ユーザID | test1@example.jp | |||
IPsecローカルポリシー | 1 | |||
スタティックルート | 宛先IPアドレス | 0.0.0.0/0 | ||
ゲートウェイ(インタフェース) | ppp0 | |||
IPフィルタ | ルール名 | ppp0_in | ||
ppp0_in | No.1 | 動作 | 許可 | |
送信元IPアドレス | any | |||
宛先IPアドレス | 10.10.10.1 | |||
プロトコル | UDP | |||
送信元ポート | 500 | |||
宛先ポート | 500 | |||
No.2 | 動作 | 許可 | ||
送信元IPアドレス | any | |||
宛先IPアドレス | 10.10.10.1 | |||
プロトコル | 50(ESP) | |||
IPsec | X.509 | 有効 | ||
CA証明書 | 定義名 | nxrCA | ||
ファイル | nxrCA.pem | |||
失効リスト | 定義名 | nxrCA | ||
ファイル | nxrCRL.pem | |||
NXR用証明書 | 定義名 | nxr | ||
ファイル | nxrCert.pem | |||
NXR用秘密鍵 | 定義名 | nxr | ||
ファイル | nxrKey.pem | |||
NXR用秘密鍵パスワード | 定義名 | nxr | ||
パスワード | nxrpass | |||
IPsecローカルポリシー1 | address | ip | ||
x509 certificate | nxr | |||
IPsec ISAKMPポリシー1 | 名前 | smartphone1 | ||
認証方式 | rsa-sig | |||
認証アルゴリズム | sha1 | |||
暗号化アルゴリズム | aes128 | |||
DHグループ | 5 | |||
ライフタイム | 86400秒 | |||
ISAKMPモード | メインモード | |||
リモートアドレス | any | |||
リモートID(DN) | C=JP,CN=smartphone1, E=smartphone@example.com |
|||
ローカルポリシー | 1 | |||
IPsecトンネルポリシー1 | 名前 | smartphone1 | ||
認証アルゴリズム | sha1 | |||
暗号化アルゴリズム | aes128 | |||
PFS | 無効 | |||
ライフタイム | 28800秒 | |||
ISAKMPポリシー | 1 | |||
match protocol | l2tp-smartphone | |||
IPsec ISAKMPポリシー2 | 名前 | smartphone2 | ||
認証方式 | rsa-sig | |||
認証アルゴリズム | sha1 | |||
暗号化アルゴリズム | aes128 | |||
DHグループ | 5 | |||
ライフタイム | 86400秒 | |||
ISAKMPモード | メインモード | |||
リモートアドレス | any | |||
リモートID(DN) | C=JP,CN=smartphone2, E=smartphone@example.com |
|||
ローカルポリシー | 1 | |||
IPsecトンネルポリシー2 | 名前 | smartphone2 | ||
認証アルゴリズム | sha1 | |||
暗号化アルゴリズム | aes128 | |||
PFS | 無効 | |||
ライフタイム | 28800秒 | |||
ISAKMPポリシー | 2 | |||
match protocol | l2tp-smartphone | |||
アクセスサーバプロファイル | No.1 | ユーザID | android01 | |
IPアドレス | 172.16.0.10 | |||
No.2 | ユーザID | android02 | ||
IPアドレス | 172.16.0.11 | |||
ip local pool | プール名 | smartphoneip | ||
IPアドレス払い出し範囲(始点) | 172.16.0.10 | |||
IPアドレス払い出し範囲(終点) | 172.16.0.11 | |||
virtual-template0 インタフェース |
IPアドレス | 172.16.0.1/32 | ||
MSS自動調整 | オート | |||
IPリダイレクト | 無効 | |||
IPリバウンド | 無効 | |||
peer ip pool | smartphoneip | |||
L2TP UDP送信元ポート | 1701 | |||
L2TP | 接続先 | any(IPsec) | ||
トンネルモード | lns | |||
使用するvirtual-template | 0 | |||
DNS | サービス | 有効 | ||
FastFowarding | 有効 |
【 設定例 】
Enter configuration commands, one per line. End with CNTL/Z.
nxr120(config)#hostname NXR
NXR(config)#interface ethernet 0
NXR(config-if)#ip address 192.168.10.1/24
NXR(config-if)#exit
NXR(config)#ip route 0.0.0.0/0 ppp 0
NXR(config)#ip access-list ppp0_in permit any 10.10.10.1 udp 500 500
NXR(config)#ip access-list ppp0_in permit any 10.10.10.1 50
NXR(config)#ipsec x509 enable
NXR(config)#ipsec x509 ca-certificate nxrCA ftp://192.168.10.10/nxrCA.pem
NXR(config)#ipsec x509 crl nxrCA ftp://192.168.10.10/nxrCRL.pem
NXR(config)#ipsec x509 certificate nxr ftp://192.168.10.10/nxrCert.pem
NXR(config)#ipsec x509 private-key nxr key ftp://192.168.10.10/nxrKey.pem
NXR(config)#ipsec x509 private-key nxr password nxrpass
NXR(config)#ipsec local policy 1
NXR(config-ipsec-local)#address ip
NXR(config-ipsec-local)#x509 certificate nxr
NXR(config-ipsec-local)#exit
NXR(config)#ipsec isakmp policy 1
NXR(config-ipsec-isakmp)#description smartphone1
NXR(config-ipsec-isakmp)#authentication rsa-sig
NXR(config-ipsec-isakmp)#hash sha1
NXR(config-ipsec-isakmp)#encryption aes128
NXR(config-ipsec-isakmp)#group 5
NXR(config-ipsec-isakmp)#lifetime 86400
NXR(config-ipsec-isakmp)#isakmp-mode main
NXR(config-ipsec-isakmp)#remote address ip any
NXR(config-ipsec-isakmp)#remote identity dn C=JP,CN=smartphone1,E=smartphone@example.com
NXR(config-ipsec-isakmp)#local policy 1
NXR(config-ipsec-isakmp)#exit
NXR(config)#ipsec tunnel policy 1
NXR(config-ipsec-tunnel)#description smartphone1
NXR(config-ipsec-tunnel)#set transform esp-aes128 esp-sha1-hmac
NXR(config-ipsec-tunnel)#no set pfs
NXR(config-ipsec-tunnel)#set sa lifetime 28800
NXR(config-ipsec-tunnel)#set key-exchange isakmp 1
NXR(config-ipsec-tunnel)#match protocol l2tp-smartphone
NXR(config-ipsec-tunnel)#exit
NXR(config)#ipsec isakmp policy 2
NXR(config-ipsec-isakmp)#description smartphone2
NXR(config-ipsec-isakmp)#authentication rsa-sig
NXR(config-ipsec-isakmp)#hash sha1
NXR(config-ipsec-isakmp)#encryption aes128
NXR(config-ipsec-isakmp)#group 5
NXR(config-ipsec-isakmp)#lifetime 86400
NXR(config-ipsec-isakmp)#isakmp-mode main
NXR(config-ipsec-isakmp)#remote address ip any
NXR(config-ipsec-isakmp)#remote identity dn C=JP,CN=smartphone2,E=smartphone@example.com
NXR(config-ipsec-isakmp)#local policy 1
NXR(config-ipsec-isakmp)#exit
NXR(config)#ipsec tunnel policy 2
NXR(config-ipsec-tunnel)#description smartphone2
NXR(config-ipsec-tunnel)#set transform esp-aes128 esp-sha1-hmac
NXR(config-ipsec-tunnel)#no set pfs
NXR(config-ipsec-tunnel)#set sa lifetime 28800
NXR(config-ipsec-tunnel)#set key-exchange isakmp 2
NXR(config-ipsec-tunnel)#match protocol l2tp-smartphone
NXR(config-ipsec-tunnel)#exit
NXR(config)#ppp account username android01 password android01pass
NXR(config)#ppp account username android02 password android02pass
NXR(config)#ppp account username test1@example.jp password test1pass
NXR(config)#access-server profile 1
NXR(config-ras)#ppp username android01 ip 172.16.0.10
NXR(config-ras)#exit
NXR(config)#access-server profile 2
NXR(config-ras)#ppp username android02 ip 172.16.0.11
NXR(config-ras)#exit
NXR(config)#ip local pool smartphoneip address 172.16.0.10 172.16.0.11
NXR(config)#interface virtual-template 0
NXR(config-if-vt)#ip address 172.16.0.1/32
NXR(config-if-vt)#ip tcp adjust-mss auto
NXR(config-if-vt)#no ip redirects
NXR(config-if-vt)#no ip rebound
NXR(config-if-vt)#peer ip pool smartphoneip
NXR(config-if-vt)#exit
NXR(config)#l2tp udp source-port 1701
NXR(config)#l2tp 1
NXR(config-l2tp)#tunnel address any ipsec
NXR(config-l2tp)#tunnel mode lns
NXR(config-l2tp)#tunnel virtual-template 0
NXR(config-l2tp)#exit
% Restarting l2tp service. Please wait…..
NXR(config)#interface ppp 0
NXR(config-ppp)#ip address 10.10.10.1/32
NXR(config-ppp)#ip masquerade
NXR(config-ppp)#ip access-group in ppp0_in
NXR(config-ppp)#ip spi-filter
NXR(config-ppp)#ip tcp adjust-mss auto
NXR(config-ppp)#no ip redirects
NXR(config-ppp)#ppp username test1@example.jp
NXR(config-ppp)#ipsec policy 1
NXR(config-ppp)#exit
NXR(config)#interface ethernet 1
NXR(config-if)#no ip address
NXR(config-if)#pppoe-client ppp 0
NXR(config-if)#exit
NXR(config)#dns
NXR(config-dns)#service enable
NXR(config-dns)#exit
NXR(config)#fast-forwarding enable
NXR(config)#exit
NXR#save config
【 設定例解説 】
1. <ホスト名の設定>
ホスト名を設定します。
2. <LAN側(ethernet0)インタフェース設定>
NXR(config-if)#ip address 192.168.10.1/24
ethernet0インタフェースのIPアドレスを設定します。
3. <スタティックルート設定>
デフォルトルートを設定します。
4. <IPアクセスリスト設定>
NXR(config)#ip access-list ppp0_in permit any 10.10.10.1 50
IPアクセスリスト名をppp0_inとし、NXR_AのWAN側IPアドレス10.10.10.1宛のIKEパケット(UDPポート500番)、ESPパケット(プロトコル番号50)を許可します。
なお、このIPアクセスリスト設定はppp0インタフェース設定で登録します。
(☞) IPアクセスリストを設定しただけではフィルタとして有効にはなりません。フィルタリングしたいインタフェースでの登録が必要になります。
5. <X.509の有効化>
X.509機能を有効にします。
6. <CA証明書の設定>
FTPサーバ192.168.10.10にあるCA証明書ファイルnxrCA.pemをインポートします。
7. <CRLの設定>
FTPサーバ192.168.10.10にあるCRLファイルnxrCRL.pemをインポートします。
8. <NXR用公開鍵証明書の設定>
FTPサーバ192.168.10.10にあるNXR用公開鍵証明書ファイルnxrCert.pemをインポートします。
9. <NXR用秘密鍵の設定>
FTPサーバ192.168.10.10にあるNXR用秘密鍵ファイルnxrKey.pemをインポートします。
10. <NXR用秘密鍵パスフレーズの設定>
NXR用秘密鍵のパスフレーズであるnxrpassを設定します。
(☞) パスフレーズを暗号化する場合はhiddenオプションを設定します。
11. <IPsecローカルポリシー設定>
NXR(config-ipsec-local)#address ip
IPsecトンネルの送信元IPアドレスをip(IPv4)と設定します。
X.509で利用する証明書を指定します。この設定例では、8. <NXR用公開鍵証明書の設定>で設定したcertificate name nxrを設定します。
12. <IPsec ISAKMPポリシー1設定>
NXR(config-ipsec-isakmp)#description smartphone1
ISAKMPポリシーの説明としてsmartphone1を設定します。
認証方式としてX.509を利用する場合はrsa-sigを選択します。
NXR(config-ipsec-isakmp)#encryption aes128
NXR(config-ipsec-isakmp)#group 5
NXR(config-ipsec-isakmp)#lifetime 86400
NXR(config-ipsec-isakmp)#isakmp-mode main
認証アルゴリズムとしてsha1、暗号化アルゴリズムとしてaes128,Diffie-Hellman(DH)グループとしてgroup 5、ISAKMP SAのライフタイムとして86400秒、フェーズ1のネゴシエーションモードとしてメインモードを設定します。
NXR(config-ipsec-isakmp)#remote identity dn C=JP,CN=smartphone1,E=smartphone@example.com
NXR(config-ipsec-isakmp)#local policy 1
リモートアドレスにanyを設定します。また、対向のスマートフォンのidentityに関してはDN(Distinguished Name)方式で設定しますので、設定前に対向スマートフォンの証明書のDNまたはsubject等をご確認下さい。なお、X.509を利用する場合は、identity設定は必須になります。そしてIPsecローカルポリシー1 と関連づけを行います。
13. <IPsecトンネルポリシー1設定>
NXR(config-ipsec-tunnel)#description smartphone1
IPsecトンネルポリシーの説明としてsmartphone1を設定します。
NXR(config-ipsec-tunnel)#no set pfs
NXR(config-ipsec-tunnel)#set sa lifetime 28800
暗号化アルゴリズムとしてaes128、認証アルゴリズムとしてsha1、PFSを無効、IPsec SAのライフタイムとして28800秒を設定します。
NXR(config-ipsec-tunnel)#match protocol l2tp-smartphone
ISAKMPポリシー1と関連づけを行います。また、match protocol l2tp-smartphoneを設定します。この設定を行うことで、IPsec接続を行う際に下記項目が自動的に設定されます。
・protocol-mode → transport
・negotiation-mode → responder
・IPsecセレクタ → 以下のように自動設定されます。
IDペイロード | NXR側 | スマートフォン側 |
---|---|---|
IPv4アドレス | host | host |
プロトコル | UDP | UDP |
ポート番号 | 1701 | any(どのポートでも受け付ける) |
14. <IPsec ISAKMPポリシー2設定>
NXR(config-ipsec-isakmp)#description smartphone2
ISAKMPポリシーの説明としてsmartphone2を設定します。
認証方式としてX.509を利用する場合はrsa-sigを選択します。
NXR(config-ipsec-isakmp)#encryption aes128
NXR(config-ipsec-isakmp)#group 5
NXR(config-ipsec-isakmp)#lifetime 86400
NXR(config-ipsec-isakmp)#isakmp-mode main
認証アルゴリズムとしてsha1、暗号化アルゴリズムとしてaes128,Diffie-Hellman(DH)グループとしてgroup 5、ISAKMP SAのライフタイムとして86400秒、フェーズ1のネゴシエーションモードとしてメインモードを設定します。
NXR(config-ipsec-isakmp)#remote identity dn C=JP,CN=smartphone2,E=smartphone@example.com
NXR(config-ipsec-isakmp)#local policy 1
リモートアドレスにanyを設定します。また、対向のスマートフォンのidentityに関してはDN(Distinguished Name)方式で設定します。そしてIPsecローカルポリシー1 と関連づけを行います。
15. <IPsecトンネルポリシー2設定>
NXR(config-ipsec-tunnel)#description smartphone2
IPsecトンネルポリシーの説明としてsmartphone2を設定します。
NXR(config-ipsec-tunnel)#no set pfs
NXR(config-ipsec-tunnel)#set sa lifetime 28800
暗号化アルゴリズムとしてaes128、認証アルゴリズムとしてsha1、PFSを無効、IPsec SAのライフタイムとして28800秒を設定します。
NXR(config-ipsec-tunnel)#match protocol l2tp-smartphone
ISAKMPポリシー2と関連づけを行います。また、match protocol l2tp-smartphoneを設定します。
16. <PPPアカウント設定>
NXR(config)#ppp account username android02 password android02pass
L2TPv2のLNS機能による着信時のユーザID,パスワードを設定します。
(☞) ここで設定したアカウントは、アクセスサーバ設定で利用します。
ppp0インタフェースで使用するユーザ名,パスワードを設定します。
(☞) ここで設定したアカウントはppp0インタフェースの設定で利用します。
17. <アクセスサーバ(RAS)プロファイル1設定>
NXR(config-ras)#ppp username android01 ip 172.16.0.10
ユーザ名android01に172.16.0.10のIPアドレスを割り当てるよう設定します。
18. <アクセスサーバ(RAS)プロファイル2設定>
NXR(config-ras)#ppp username android02 ip 172.16.0.11
ユーザ名android02に172.16.0.11のIPアドレスを割り当てるよう設定します。
19. <IPアドレスプール設定>
IPアドレスプール名をsmartphoneipとし、スマートフォンに割り当てるIPアドレスを設定します。
20. <virtual-template0インタフェース設定>
NXR(config-if-vt)#ip address 172.16.0.1/32
virtual-template0インタフェースのIPアドレスを設定します。
(☞) virtual-templateインタフェースは仮想的なインタフェースであり、実際に作成されるわけではありません。virtual-templateインタフェースを使用するとコールを受けた際にPPPのクローンを作成し、本ノードの設定内容を当該PPPに適用します。なお、PPPクローンのインタフェース番号は、本装置が自動的に割り当てます。
NXR(config-if-vt)#no ip redirects
NXR(config-if-vt)#no ip rebound
NXR(config-if-vt)#peer ip pool smartphoneip
TCP MSSの調整機能をオート、ICMPリダイレクト機能を無効、IPリバウンド機能を無効に設定します。また、IPアドレスプールとしてsmartphoneipを設定します。
21. <L2TPv2設定>
L2TPv2で使用する送信元ポートを設定します。
スマートフォンとの接続で使用するL2TPv2を設定します。
接続先にIPアドレスとしてanyを設定します。
また、any指定時にバインドするプロトコルとしてIPsecを指定します。これによりIPsec SAの確立したクライアントからの接続のみ許可します。
L2TPv2のトンネルモードを設定します。
LNS利用時に使用するvirtual-template0インタフェースを設定します。
22. <WAN側(ppp0)インタフェース設定>
NXR(config-ppp)#ip address 10.10.10.1/32
ppp0インタフェースのIPアドレスを設定します。
NXR(config-ppp)#ip access-group in ppp0_in
NXR(config-ppp)#ip spi-filter
NXR(config-ppp)#ip tcp adjust-mss auto
NXR(config-ppp)#no ip redirects
IPマスカレード、ステートフルパケットインスペクションを有効に設定します。また、IPアクセスリストppp0_inをinフィルタに適用します。そして、TCP MSSの調整機能をオート、ICMPリダイレクト機能を無効に設定します。
NXR(config-ppp)#ipsec policy 1
ISP接続用ユーザIDを設定します。また、IPsecトンネルのエンドポイントとなるためIPsecローカルポリシー1を設定します。
23. <ethernet1インタフェース設定>
NXR(config-if)#no ip address
NXR(config-if)#pppoe-client ppp 0
PPPoEクライアントとしてppp0インタフェースを使用できるように設定します。
24. <DNS設定>
NXR(config-dns)#service enable
DNSサービスを有効にします。
25. <ファストフォワーディングの有効化>
ファストフォワーディングを有効にします。ファストフォワーディングを設定することによりパケット転送の高速化を行うことができます。
(☞) ファストフォワーディングの詳細および利用時の制約については、NXR,WXRシリーズのユーザーズガイド(CLI版)に記載されているファストフォワーディングの解説をご参照ください。
【 スマートフォンの設定例 】
〔Androidの設定〕
(☞) ここで記載した設定はあくまで一例ですので、ご利用頂いているAndroid端末によって設定が異なる場合があります。設定の詳細はご利用中のAndroid端末の取扱説明書等をご確認下さい。また、証明書はSDカードのルートディレクトリにコピーします。なお、この設定例では証明書はすでにインポート済みとします。
(☞) この設定例はAndroid端末との接続性を保証するものではありません。ご利用頂く際には十分な検証を行った上でのご利用をお願い致します。
- メニュー画面から「設定」をタップします。
- 設定画面で「無線とネットワーク」をタップします。
- 無線とネットワーク画面で「VPN設定」をタップします。
- VPN設定画面で「VPNネットワークの追加」をタップします。
- VPNネットワークの編集で次の各項目を設定し保存します。
設定項目 設定値 備考 ① 名前 NXR L2TP/IPsec CRT 任意の名称を設定します ② タイプ L2TP/IPSec RSA - ③ サーバーアドレス 10.10.10.1 NXRのWAN側IPアドレスを設定します ④ L2TPセキュリティ保護 (未使用) この設定例では使用していません ⑤ IPSecユーザー証明書 nxr L2TP/IPsec インポートした証明書を選択します ⑥ IPSecCA証明書 nxr L2TP/IPsec インポートした証明書を選択します ⑦ IPSecサーバー証明書 (サーバーから受信) - ⑧ 詳細オプションを表示する 無効 - - 設定保存後、VPN名「NXR L2TP/IPsec CRT」が作成されますので、作成した「NXR L2TP/IPsec CRT」をタップします。
- ユーザ名とパスワードの入力画面が表示されますので、L2TP/IPsec用に設定したPPPのユーザ名とパスワードを入力し、接続をタップするとVPN接続を開始します。
- 接続が完了(成功)するとVPN名の下に「接続されました」と表示されます。