FutureNet

NXR,VXRシリーズ

IPsec編

3. リモートアクセスVPN設定

3-5. L2TP/IPsec接続設定(証明書の利用)

L2TP/IPsecで接続する設定例です。この設定例ではIPsecで証明書を利用します。

 

コンテンツ
構成図 設定例 設定例解説 Androidの設定例 補足 付録

 

【 構成図 】

  • この設定例は弊社独自の検証結果を元に作成しております。よってL2TP/IPsec機能を有するすべての端末との接続を保証するものではありません。
  • NAT環境下でも接続できるようにするため、IPsec NATトラバーサルを有効にします。
  • 接続してきた端末にはユーザIDごとに固定IPを割り当てます。
  • 払い出しIPアドレスをNXRのLAN側ネットワーク内のアドレスとするため、virtual-template0インタフェースでプロキシARPを有効にします。
  • IPsecの認証で使用する証明書は、FutureNet RAシリーズや別途CA等で事前に用意して頂く必要があります(ルータでは証明書の発行を行うことはできません)。
  • この設定例ではNXRにインポートする各証明書の拡張子としてpemを使用します。
    (☞) 各証明書はDERまたはPEMフォーマットである必要があります。なお、どのフォーマットの証明書かどうかはファイルの拡張子で自動的に判断されます。よって、PEMの場合はpem,DERの場合はderまたcerの拡張子の必要があります。またシングルDESで暗号化された鍵ファイルは使用することができません。
  • 接続端末の証明書のインポート方法については、ご利用機器のマニュアル等をご参照下さい。
  • この設定例ではAndroid端末で証明書を使用した接続例を紹介します。なお証明書は端末にインポート済みとします。
  • L2TP/IPsec接続時、IPアドレスの他にDNSサーバのIPアドレスも割り当てることができます。設定はこちら
  • forbidden-access-wan機能が有効になっている場合、L2TP/IPsec経由でルータにアクセスすることはできません。L2TP/IPsec経由でルータにアクセスする場合はこちら

 

【 設定例 】

nxrg110#configure terminal
nxrg110(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 192.0.2.1 udp any 500
NXR(config)#ip access-list ppp0_in permit any 192.0.2.1 udp any 4500
NXR(config)#ip access-list ppp0_in permit any 192.0.2.1 50
NXR(config)#ipsec x509 enable
NXR(config)#ipsec x509 ca-certificate nxrCA disk0:nxrCA.pem
NXR(config)#ipsec x509 crl nxrCRL disk0:nxrCRL.pem
NXR(config)#ipsec x509 certificate nxr disk0:nxrCert.pem
NXR(config)#ipsec x509 private-key nxr key disk0:nxrKey.pem
NXR(config)#ipsec x509 private-key nxr password nxrpass
NXR(config)#ipsec nat-traversal enable
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 smartdevice1
NXR(config-ipsec-isakmp)#authentication rsa-sig
NXR(config-ipsec-isakmp)#hash sha256
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=smartdevice1,E=smartdevice@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 smartdevice1
NXR(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-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 nat-traversal
NXR(config-ipsec-tunnel)#exit
NXR(config)#ipsec isakmp policy 2
NXR(config-ipsec-isakmp)#description smartdevice2
NXR(config-ipsec-isakmp)#authentication rsa-sig
NXR(config-ipsec-isakmp)#hash sha256
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=smartdevice2,E=smartdevice@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 smartdevice2
NXR(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-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 nat-traversal
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 [ISP接続用ユーザID] password [ISP接続用パスワード]
NXR(config)#access-server profile 1
NXR(config-ras)#ppp username android01 ip 192.168.10.100
NXR(config-ras)#exit
NXR(config)#access-server profile 2
NXR(config-ras)#ppp username android02 ip 192.168.10.101
NXR(config-ras)#exit
NXR(config)#ip local pool smartdevice address 192.168.10.100 192.168.10.101
NXR(config)#interface virtual-template 0
NXR(config-if-vt)#ip address 192.168.10.1/32
NXR(config-if-vt)#ip tcp adjust-mss auto
NXR(config-if-vt)#no ip rebound
NXR(config-if-vt)#peer ip pool smartdevice
NXR(config-if-vt)#peer ip proxy-arp
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
NXR(config)#interface ppp 0
NXR(config-ppp)#ip address 192.0.2.1/32
NXR(config-ppp)#ip masquerade
NXR(config-ppp)#ip spi-filter
NXR(config-ppp)#ip access-group in ppp0_in
NXR(config-ppp)#ip tcp adjust-mss auto
NXR(config-ppp)#ppp username [ISP接続用ユーザID]
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. <ホスト名の設定>
nxrg110(config)#hostname NXR

ホスト名を設定します。

 

2. <LAN側(ethernet0)インタフェース設定>
NXR(config)#interface ethernet 0
NXR(config-if)#ip address 192.168.10.1/24

ethernet0インタフェースのIPアドレスを設定します。

 

3. <スタティックルート設定>
NXR(config)#ip route 0.0.0.0/0 ppp 0

デフォルトルートを設定します。

 

4. <IPアクセスリスト設定>
NXR(config)#ip access-list ppp0_in permit any 192.0.2.1 udp any 500
NXR(config)#ip access-list ppp0_in permit any 192.0.2.1 udp any 4500
NXR(config)#ip access-list ppp0_in permit any 192.0.2.1 50

IPアクセスリストppp0_inを以下のルールで設定します。

  • 宛先IPアドレス192.0.2.1、宛先UDPポート500番を許可
  • 宛先IPアドレス192.0.2.1、宛先UDPポート4500番を許可
  • 宛先IPアドレス192.0.2.1、ESP(プロトコル番号50)を許可

(☞) IPアクセスリストを設定しただけではフィルタとして有効にはなりません。フィルタリングを行うインタフェースでの登録が必要になります。

 

5. <IPsec X.509の設定>
NXR(config)#ipsec x509 enable

X.509機能を有効にします。

NXR(config)#ipsec x509 ca-certificate nxrCA disk0:nxrCA.pem

CA証明書名をnxrCAとし、ストレージ(以下disk0)上にあるCA証明書ファイルnxrCA.pemをインポートします。

NXR(config)#ipsec x509 crl nxrCRL disk0:nxrCRL.pem

失効リスト名をnxrCRLとし、disk0上にあるCRLファイルnxrCRL.pemをインポートします。

NXR(config)#ipsec x509 certificate nxr disk0:nxrCert.pem

公開鍵証明書名をnxrとし、disk0上にあるNXR用公開鍵証明書ファイルnxrCert.pemをインポートします。

NXR(config)#ipsec x509 private-key nxr key disk0:nxrKey.pem

秘密鍵名をnxrとし、disk0上にあるNXR用秘密鍵ファイルnxrKey.pemをインポートします。

NXR(config)#ipsec x509 private-key nxr password nxrpass

秘密鍵名をnxrとし、NXR用秘密鍵のパスフレーズを設定します。
(☞) パスフレーズを暗号化する場合はhiddenオプションを設定します。

 

6. <IPsec NATトラバーサル設定>
NXR(config)#ipsec nat-traversal enable

NATトラバーサルを有効にします。

 

7. <IPsecローカルポリシー設定>
NXR(config)#ipsec local policy 1
NXR(config-ipsec-local)#address ip

IPsecトンネルの送信元IPアドレスにip(IPv4)を設定します。

NXR(config-ipsec-local)#x509 certificate nxr

X.509で利用する証明書を指定します。
(☞) 「5. <IPsec X.509の設定>」で設定した公開鍵証明書名を指定します。

 

8. <IPsec ISAKMPポリシー1設定>
NXR(config)#ipsec isakmp policy 1
NXR(config-ipsec-isakmp)#description smartdevice1

ISAKMPポリシー1の説明文を設定します。

NXR(config-ipsec-isakmp)#authentication rsa-sig

認証方式にX.509を利用する場合、rsa-sigを設定します。

NXR(config-ipsec-isakmp)#hash sha256

認証アルゴリズムをsha256に設定します。

NXR(config-ipsec-isakmp)#encryption aes128

暗号化アルゴリズムをaes128に設定します。

NXR(config-ipsec-isakmp)#group 5

DH(Diffie-Hellman)グループをgroup 5に設定します。

NXR(config-ipsec-isakmp)#lifetime 86400

ISAKMP SAのライフタイムを設定します。

NXR(config-ipsec-isakmp)#isakmp-mode main

フェーズ1のネゴシエーションモードをメインモードに設定します。

NXR(config-ipsec-isakmp)#remote address ip any

リモートアドレスにanyを設定します。

NXR(config-ipsec-isakmp)#remote identity dn C=JP,CN=smartdevice1,E=smartdevice@example.com

リモートIDをDN(Distinguished Name)方式で設定します。
(☞) 対向スマートデバイスの証明書のDNまたはsubject等をご確認下さい。なおX.509を利用する場合はidentity設定は必須になります。

NXR(config-ipsec-isakmp)#local policy 1

このIPsec ISAKMPポリシーで使用するIPsecローカルポリシーを設定します。

 

9. <IPsec トンネルポリシー1設定>
NXR(config)#ipsec tunnel policy 1
NXR(config-ipsec-tunnel)#description smartdevice1

IPsecトンネルポリシー1の説明文を設定します。

NXR(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-hmac

暗号化アルゴリズムをaes128、認証アルゴリズムをsha256に設定します。

NXR(config-ipsec-tunnel)#no set pfs

PFSを無効にします。

NXR(config-ipsec-tunnel)#set sa lifetime 28800

IPsec SAのライフタイムを設定します。

NXR(config-ipsec-tunnel)#set key-exchange isakmp 1

このIPsecトンネルポリシーで使用するIPsec ISAKMPポリシーを設定します。

NXR(config-ipsec-tunnel)#match protocol l2tp-smartphone nat-traversal

match protocolでl2tp-smartphone nat-traversalを設定します。この設定を行うことで、IPsec接続を行う際に下記項目が自動的に設定されます。

・protocol-mode → transport
・negotiation-mode → responder
・IPsecセレクタ → 以下のように自動設定されます。またNATトラバーサル有効時はNAT配下のどのアドレスからの接続も受け付けます。

IDペイロード NXR側 Android端末側
IPv4アドレス host host
プロトコル UDP UDP
ポート番号 1701 any(どのポートでも受け付ける)
10. <IPsec ISAKMPポリシー2設定>
NXR(config)#ipsec isakmp policy 2
NXR(config-ipsec-isakmp)#description smartdevice2

ISAKMPポリシー2の説明文を設定します。

NXR(config-ipsec-isakmp)#authentication rsa-sig

認証方式をrsa-sigに設定します。

NXR(config-ipsec-isakmp)#hash sha256

認証アルゴリズムをsha256に設定します。

NXR(config-ipsec-isakmp)#encryption aes128

暗号化アルゴリズムをaes128に設定します。

NXR(config-ipsec-isakmp)#group 5

DHグループをgroup 5に設定します。

NXR(config-ipsec-isakmp)#lifetime 86400

ISAKMP SAのライフタイムを設定します。

NXR(config-ipsec-isakmp)#isakmp-mode main

フェーズ1のネゴシエーションモードをメインモードに設定します。

NXR(config-ipsec-isakmp)#remote address ip any

リモートアドレスにanyを設定します。

NXR(config-ipsec-isakmp)#remote identity dn C=JP,CN=smartdevice2,E=smartdevice@example.com

リモートIDをDN方式で設定します。

NXR(config-ipsec-isakmp)#local policy 1

このIPsec ISAKMPポリシーで使用するIPsecローカルポリシーを設定します。

 

11. <IPsec トンネルポリシー2設定>
NXR(config)#ipsec tunnel policy 2
NXR(config-ipsec-tunnel)#description smartdevice2

IPsecトンネルポリシー2の説明文を設定します。

NXR(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-hmac

暗号化アルゴリズムをaes128、認証アルゴリズムをsha256に設定します。

NXR(config-ipsec-tunnel)#no set pfs

PFSを無効にします。

NXR(config-ipsec-tunnel)#set sa lifetime 28800

IPsec SAのライフタイムを設定します。

NXR(config-ipsec-tunnel)#set key-exchange isakmp 2

このIPsecトンネルポリシーで使用するIPsec ISAKMPポリシーを設定します。

NXR(config-ipsec-tunnel)#match protocol l2tp-smartphone nat-traversal

match protocolでl2tp-smartphone nat-traversalを設定します。

 

12. <PPPアカウント設定>
NXR(config)#ppp account username android01 password android01pass
NXR(config)#ppp account username android02 password android02pass

L2TPv2のLNS機能による着信時のユーザID,パスワードを設定します。

NXR(config)#ppp account username [ISP接続用ユーザID] password [ISP接続用パスワード]

ppp0インタフェースで使用するISP接続用ユーザID,パスワードを設定します。

 

13. <アクセスサーバ(RAS)プロファイル1設定>
NXR(config)#access-server profile 1
NXR(config-ras)#ppp username android01 ip 192.168.10.100

ユーザID「android01」に192.168.10.100のIPアドレスを割り当てるように設定します。

 

14. <アクセスサーバ(RAS)プロファイル2設定>
NXR(config)#access-server profile 2
NXR(config-ras)#ppp username android02 ip 192.168.10.101

ユーザID「android02」に192.168.10.101のIPアドレスを割り当てるように設定します。

 

15. <IPアドレスプール設定>
NXR(config)#ip local pool smartdevice address 192.168.10.100 192.168.10.101

IPアドレスプール名をsmartdeviceとし、プール範囲のIPアドレスを設定します。

 

16. <virtual-template0インタフェース設定>
NXR(config)#interface virtual-template 0
NXR(config-if-vt)#ip address 192.168.10.1/32

virtual-template0インタフェースのIPアドレスを設定します。
(☞) virtual-templateインタフェースは仮想的なインタフェースであり、実際に作成されるわけではありません。virtual-templateインタフェースを使用するとコールを受けた際にPPPのクローンを作成し、本ノードの設定内容を当該PPPに適用します。なおPPPクローンのインタフェース番号は本装置が自動的に割り当てます。

NXR(config-if-vt)#ip tcp adjust-mss auto

TCP MSSの調整機能をオートに設定します。

NXR(config-if-vt)#no ip rebound

IPリバウンドを無効にします。

NXR(config-if-vt)#peer ip pool smartdevice

IPアドレスプール名「smartdevice」を設定します。

NXR(config-if-vt)#peer ip proxy-arp

プロキシARPを設定します。

 

17. <L2TPv2設定>
NXR(config)#l2tp udp source-port 1701

L2TPv2で使用する送信元ポートを設定します。

NXR(config)#l2tp 1

Android端末との接続で使用するL2TPv2を設定します。

NXR(config-l2tp)#tunnel address any ipsec

トンネルアドレスにanyを設定します。またany指定時にバインドするプロトコルとしてIPsecを指定します。これによりIPsec SAの確立したクライアントからの接続のみ許可します。

NXR(config-l2tp)#tunnel mode lns

L2TPv2のトンネルモードを設定します。

NXR(config-l2tp)#tunnel virtual-template 0

LNS利用時に使用するvirtual-templateインタフェースを設定します。

 

18. <WAN側(ppp0)インタフェース設定>
NXR(config)#interface ppp 0
NXR(config-ppp)#ip address 192.0.2.1/32

ppp0インタフェースのIPアドレスを設定します。

NXR(config-ppp)#ip masquerade
NXR(config-ppp)#ip spi-filter

IPマスカレード、ステートフルパケットインスペクションを有効にします。

NXR(config-ppp)#ip access-group in ppp0_in

IPアクセスグループのinフィルタにIPアクセスリストppp0_inを設定します。

NXR(config-ppp)#ip tcp adjust-mss auto

TCP MSSの調整機能をオートに設定します。

NXR(config-ppp)#ppp username [ISP接続用ユーザID]

ISP接続用ユーザIDを設定します。

NXR(config-ppp)#ipsec policy 1

このインタフェースで使用するIPsecローカルポリシーを設定します。

 

19. <ethernet1インタフェース設定>
NXR(config)#interface ethernet 1
NXR(config-if)#no ip address

ethernet1インタフェースのIPアドレスを無効にします。

NXR(config-if)#pppoe-client ppp 0

PPPoEクライアントにppp0を設定します。

 

20. <DNS設定>
NXR(config)#dns
NXR(config-dns)#service enable

DNSサービスを有効にします。

 

21. <ファストフォワーディング設定>
NXR(config)#fast-forwarding enable

ファストフォワーディングを有効にします。

 

22. <設定の保存>
NXR#save config

設定内容を保存します。

 

【 Androidの設定例 】

(☞) ここで記載した設定はあくまで一例ですので、ご利用頂いているAndroid端末によって設定が異なる場合があります。設定の詳細はご利用中のAndroid端末の取扱説明書等をご確認下さい。
(☞) この設定例はすべてのAndroid端末との接続を保証するものではありません。ご利用頂く際には十分な検証を行った上でのご利用をお願い致します。

 

  1. 「設定」をタップします。
  2. 設定画面で「ネットワークとインターネット」をタップします。
  3. ネットワークとインターネット画面で「VPN」をタップします。
  4. VPN画面で「+」をタップします。
  5. VPNプロファイルの編集画面で各項目を設定し、「保存」をタップします。

    設定項目 設定値 備考
    名前 L2TP/IPsec CRT 任意の名称を設定します
    タイプ L2TP/IPSec RSA
    サーバーアドレス 192.0.2.1 NXRのWAN側IPアドレスを設定します
    L2TPセキュリティ保護 (未使用) この設定例では使用していません
    IPSecユーザー証明書 [インポートした証明書の識別子] インポートした証明書を指定します
    IPSec CA証明書 (サーバーを確認しない)
    IPSecサーバー証明書 (サーバーから受信)
    詳細オプションを表示する 無効
    ユーザー名 android01 L2TPで使用するアカウントを設定します
    パスワード android01pass L2TPで使用するパスワードを設定します
  6. VPN画面で先ほど作成した「L2TP/IPsec CRT」をタップします。
  7. 「接続」をタップするとVPN接続を開始します。
  8. VPN接続完了後は以下のように「接続されました」と表示されます。

【 補足 】

〔DNSサーバアドレス割り当て設定〕

L2TP/IPsec接続時、IPアドレスの他にDNSサーバのIPアドレスを割り当てることもできます。

<IPCP DNS設定>
(config)#interface virtual-template 0
(config-if-vt)#ppp ipcp dns [プライマリDNSサーバアドレス] [セカンダリDNSサーバアドレス]

Android端末に対してDNSサーバアドレスを割り当てます。

 

〔L2TP/IPsec経由でのルータアクセス〕

forbidden-access-wan機能が有効になっている場合、L2TP/IPsec経由でルータにアクセスすることはできません。アクセスするためにはvirtual-templateインタフェースでアクセスを許可するフィルタを設定します。

(☞) 工場出荷状態では、ethernet0インタフェース以外からのTELNETサーバ,HTTPサーバへのアクセス禁止が有効になっています。

<IPアクセスリスト設定>
(config)#ip access-list vt0_in permit 192.168.10.0/24 192.168.10.1 tcp any 23
(config)#ip access-list vt0_in permit 192.168.10.0/24 192.168.10.1 tcp any 880

IPアクセスリストvt0_inを以下のルールで設定します。

  • 送信元IPアドレス192.168.10.0/24、宛先IPアドレス192.168.10.1、宛先TCPポート23番を許可
  • 送信元IPアドレス192.168.10.0/24、宛先IPアドレス192.168.10.1、宛先TCPポート880番を許可

(☞) IPアクセスリストを設定しただけではフィルタとして有効にはなりません。フィルタリングを行うインタフェースでの登録が必要になります。

 

<virtual-template0インタフェース設定>
(config)#interface virtual-template 0
(config-if-vt)#ip access-group in vt0_in

IPアクセスグループのinフィルタにIPアクセスリストvt0_inを設定します。

 

【 付録 】