FutureNet

NXR,VXRシリーズ

IPsec編

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

3-1. L2TP/IPsec接続設定(Android端末)

OSにAndroidを搭載した端末とL2TP/IPsecで接続する設定例です。この設定例ではIPsecで事前共有鍵を利用します。

 

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

 

【 構成図 】

  • Android OSに標準搭載されているL2TP/IPsec機能を使用して接続します。
  • この設定例は弊社独自の検証結果を元に作成しております。よってAndroid OSを搭載するすべての端末との接続を保証するものではありません。
  • NAT環境下でも接続できるようにするため、IPsec NATトラバーサルを有効にします。
  • 接続してきたAndroid端末にはユーザIDによって固定IP、またはIPアドレスプールよりアドレスを割り当てます。
  • 払い出しIPアドレスをNXRのLAN側ネットワーク内のアドレスとするため、virtual-template0インタフェースでプロキシARPを有効にします。
  • 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 nat-traversal enable
NXR(config)#ipsec local policy 1
NXR(config-ipsec-local)#address ip
NXR(config-ipsec-local)#exit
NXR(config)#ipsec isakmp policy 1
NXR(config-ipsec-isakmp)#description smartdevice
NXR(config-ipsec-isakmp)#authentication pre-share ipseckey
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)#local policy 1
NXR(config-ipsec-isakmp)#exit
NXR(config)#ipsec tunnel policy 1
NXR(config-ipsec-tunnel)#description smartdevice
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)#ppp account username android01 password android01pass
NXR(config)#ppp account username android02 password android02pass
NXR(config)#ppp account username android03 password android03pass
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)#ip local pool smartdevice address 192.168.10.101 192.168.10.102
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 NATトラバーサル設定>
NXR(config)#ipsec nat-traversal enable

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

 

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

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

 

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

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

NXR(config-ipsec-isakmp)#authentication pre-share ipseckey

認証方式としてpre-share(事前共有鍵)を選択し、事前共有鍵を設定します。
(☞) 事前共有鍵はAndroid端末と共通の値を設定します。

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)#local policy 1

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

 

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

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(どのポートでも受け付ける)
9. <PPPアカウント設定>
NXR(config)#ppp account username android01 password android01pass
NXR(config)#ppp account username android02 password android02pass
NXR(config)#ppp account username android03 password android03pass

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

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

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

 

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

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

 

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

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

 

12. <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を設定します。

 

13. <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インタフェースを設定します。

 

14. <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ローカルポリシーを設定します。

 

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

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

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

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

 

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

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

 

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

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

 

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

設定内容を保存します。

 

【 Androidの設定例 】

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

 

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

    設定項目 設定値 備考
    名前 L2TP/IPsec 任意の名称を設定します
    タイプ L2TP/IPSec PSK
    サーバーアドレス 192.0.2.1 NXRのWAN側IPアドレスを設定します
    L2TPセキュリティ保護 (未使用) この設定例では使用していません
    IPSec ID (未使用) この設定例では使用していません
    IPSec事前共有鍵 ipseckey NXRで設定した事前共有鍵を設定します
    詳細オプションを表示する 無効
    ユーザー名 android01 L2TPで使用するアカウントを設定します
    パスワード android01pass L2TPで使用するパスワードを設定します
  6. VPN画面で先ほど作成した「L2TP/IPsec」をタップします。
  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を設定します。

 

【 付録 】