FutureNet

NXR,WXRシリーズ

IPsec編

1. Route Based IPsec設定

1-12. ネットイベント機能でIPsecトンネルを監視

ネットイベント機能のPing監視を利用して障害検知後IPsecの再接続を行う設定例です。

 

コンテンツ
構成図 設定フロー 設定例 設定例解説 端末の設定例 付録

 

【 構成図 】

  • ネットイベント機能で指定した宛先に対してPing監視を行います。そして応答が得られない場合、障害発生と判断しIPsecの再接続を行います。なおこの設定例では、Ping監視の拡張機能を使用します。

 

【 設定フロー 】

〔NXR_Bの設定フロー〕

fnw_ipsec_rb_12_flow_nxrb

【 設定例 】

〔NXR_Aの設定〕

nxr350#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
nxr350(config)#hostname NXR_A
NXR_A(config)#interface ethernet 0
NXR_A(config-if)#ip address 192.168.10.1/24
NXR_A(config-if)#exit
NXR_A(config)#ip route 192.168.20.0/24 tunnel 1 1
NXR_A(config)#ip route 192.168.20.0/24 null 254
NXR_A(config)#ip route 0.0.0.0/0 203.0.113.2
NXR_A(config)#ip access-list eth1_in permit any 203.0.113.1 udp 500 500
NXR_A(config)#ip access-list eth1_in permit any 203.0.113.1 50
NXR_A(config)#ipsec access-list ipsec_acl ip any any
NXR_A(config)#ipsec local policy 1
NXR_A(config-ipsec-local)#address ip
NXR_A(config-ipsec-local)#exit
NXR_A(config)#ipsec isakmp policy 1
NXR_A(config-ipsec-isakmp)#description NXR_B
NXR_A(config-ipsec-isakmp)#authentication pre-share ipseckey
NXR_A(config-ipsec-isakmp)#hash sha256
NXR_A(config-ipsec-isakmp)#encryption aes128
NXR_A(config-ipsec-isakmp)#group 5
NXR_A(config-ipsec-isakmp)#lifetime 10800
NXR_A(config-ipsec-isakmp)#isakmp-mode aggressive
NXR_A(config-ipsec-isakmp)#remote address ip any
NXR_A(config-ipsec-isakmp)#remote identity fqdn nxrb
NXR_A(config-ipsec-isakmp)#keepalive 30 3 periodic clear
NXR_A(config-ipsec-isakmp)#local policy 1
NXR_A(config-ipsec-isakmp)#exit
NXR_A(config)#interface tunnel 1
NXR_A(config-tunnel)#tunnel mode ipsec ipv4
NXR_A(config-tunnel)#tunnel protection ipsec policy 1
NXR_A(config-tunnel)#ip tcp adjust-mss auto
NXR_A(config-tunnel)#exit
NXR_A(config)#ipsec tunnel policy 1
NXR_A(config-ipsec-tunnel)#description NXR_B
NXR_A(config-ipsec-tunnel)#negotiation-mode responder
NXR_A(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-hmac
NXR_A(config-ipsec-tunnel)#set pfs group5
NXR_A(config-ipsec-tunnel)#set sa lifetime 3600
NXR_A(config-ipsec-tunnel)#set key-exchange isakmp 1
NXR_A(config-ipsec-tunnel)#match address ipsec_acl
NXR_A(config-ipsec-tunnel)#exit
NXR_A(config)#interface ethernet 1
NXR_A(config-if)#ip address 203.0.113.1/30
NXR_A(config-if)#ip masquerade
NXR_A(config-if)#ip spi-filter
NXR_A(config-if)#ip access-group in eth1_in
NXR_A(config-if)#ip tcp adjust-mss auto
NXR_A(config-if)#ipsec policy 1
NXR_A(config-if)#exit
NXR_A(config)#dns
NXR_A(config-dns)#service enable
NXR_A(config-dns)#address 203.0.113.253
NXR_A(config-dns)#address 203.0.113.254
NXR_A(config-dns)#exit
NXR_A(config)#fast-forwarding enable
NXR_A(config)#exit
NXR_A#save config

 

〔NXR_Bの設定〕

nxrg100#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
nxrg100(config)#hostname NXR_B
NXR_B(config)#interface ethernet 0
NXR_B(config-if)#ip address 192.168.20.1/24
NXR_B(config-if)#exit
NXR_B(config)#ip route 192.168.10.0/24 tunnel 1 1
NXR_B(config)#ip route 192.168.10.0/24 null 254
NXR_B(config)#ip route 0.0.0.0/0 ppp 0
NXR_B(config)#ip access-list ppp0_in permit 203.0.113.1 any udp 500 500
NXR_B(config)#ip access-list ppp0_in permit 203.0.113.1 any 50
NXR_B(config)#ipsec access-list ipsec_acl ip any any
NXR_B(config)#ipsec local policy 1
NXR_B(config-ipsec-local)#address ip
NXR_B(config-ipsec-local)#self-identity fqdn nxrb
NXR_B(config-ipsec-local)#exit
NXR_B(config)#ipsec isakmp policy 1
NXR_B(config-ipsec-isakmp)#description NXR_A
NXR_B(config-ipsec-isakmp)#authentication pre-share ipseckey
NXR_B(config-ipsec-isakmp)#hash sha256
NXR_B(config-ipsec-isakmp)#encryption aes128
NXR_B(config-ipsec-isakmp)#group 5
NXR_B(config-ipsec-isakmp)#lifetime 10800
NXR_B(config-ipsec-isakmp)#isakmp-mode aggressive
NXR_B(config-ipsec-isakmp)#remote address ip 203.0.113.1
NXR_B(config-ipsec-isakmp)#keepalive 30 3 periodic restart
NXR_B(config-ipsec-isakmp)#local policy 1
NXR_B(config-ipsec-isakmp)#netevent 2048 reconnect
NXR_B(config-ipsec-isakmp)#exit
NXR_B(config)#interface tunnel 1
NXR_B(config-tunnel)#tunnel mode ipsec ipv4
NXR_B(config-tunnel)#tunnel protection ipsec policy 1
NXR_B(config-tunnel)#ip tcp adjust-mss auto
NXR_B(config-tunnel)#exit
NXR_B(config)#ipsec tunnel policy 1
NXR_B(config-ipsec-tunnel)#description NXR_A
NXR_B(config-ipsec-tunnel)#negotiation-mode auto
NXR_B(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-hmac
NXR_B(config-ipsec-tunnel)#set pfs group5
NXR_B(config-ipsec-tunnel)#set sa lifetime 3600
NXR_B(config-ipsec-tunnel)#set key-exchange isakmp 1
NXR_B(config-ipsec-tunnel)#match address ipsec_acl
NXR_B(config-ipsec-tunnel)#exit
NXR_B(config)#ppp account username test1@example.jp password test1pass
NXR_B(config)#interface ppp 0
NXR_B(config-ppp)#ip address negotiated
NXR_B(config-ppp)#ip masquerade
NXR_B(config-ppp)#ip spi-filter
NXR_B(config-ppp)#ip access-group in ppp0_in
NXR_B(config-ppp)#ip tcp adjust-mss auto
NXR_B(config-ppp)#ppp username test1@example.jp
NXR_B(config-ppp)#ipsec policy 1
NXR_B(config-ppp)#exit
NXR_B(config)#interface ethernet 1
NXR_B(config-if)#no ip address
NXR_B(config-if)#pppoe-client ppp 0
NXR_B(config-if)#exit
NXR_B(config)#track 2048 ip reachability
NXR_B(config-track)#destination 192.168.10.1
NXR_B(config-track)#source interface tunnel 1
NXR_B(config-track)#transmit interval 30 variable
NXR_B(config-track)#transmit retries 4
NXR_B(config-track)#exit
NXR_B(config)#dns
NXR_B(config-dns)#service enable
NXR_B(config-dns)#exit
NXR_B(config)#fast-forwarding enable
NXR_B(config)#exit
NXR_B#save config

 

【 設定例解説 】

〔NXR_Aの設定〕

1. <ホスト名の設定>
nxr350(config)#hostname NXR_A

ホスト名を設定します。

 

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

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

 

3. <スタティックルート設定>
NXR_A(config)#ip route 192.168.20.0/24 tunnel 1 1
NXR_A(config)#ip route 192.168.20.0/24 null 254

192.168.20.0/24向けのルートを設定します。なおIPsec SA確立時はトンネル1インタフェースを、未確立時はnullインタフェースのルートを利用するように設定します。

NXR_A(config)#ip route 0.0.0.0/0 203.0.113.2

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

 

4. <IPアクセスリスト設定>
NXR_A(config)#ip access-list eth1_in permit any 203.0.113.1 udp 500 500
NXR_A(config)#ip access-list eth1_in permit any 203.0.113.1 50

IPアクセスリスト名をeth1_inとします。そして宛先IPアドレス203.0.113.1のIKE(UDPポート500番)、ESP(プロトコル番号50)のパケットを許可します。
(☞) IPアクセスリストを設定しただけではフィルタとして有効にはなりません。フィルタリングを行うインタフェースでの登録が必要になります。

 

5. <IPsecアクセスリスト設定>
NXR_A(config)#ipsec access-list ipsec_acl ip any any

ipsec_aclという名前のIPsecアクセスリストを設定します。なお送信元IPアドレス,宛先IPアドレスともにanyとします。

 

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

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

 

7. <IPsec ISAKMPポリシー設定>
NXR_A(config)#ipsec isakmp policy 1
NXR_A(config-ipsec-isakmp)#description NXR_B
NXR_A(config-ipsec-isakmp)#authentication pre-share ipseckey

ISAKMPポリシー1の説明としてNXR_B、認証方式としてpre-share(事前共有鍵)を選択し、事前共有鍵ipseckeyを設定します。なお事前共有鍵はNXR_Bのipsec isakmp policy 1と共通の値を設定します。

NXR_A(config-ipsec-isakmp)#hash sha256
NXR_A(config-ipsec-isakmp)#encryption aes128
NXR_A(config-ipsec-isakmp)#group 5
NXR_A(config-ipsec-isakmp)#lifetime 10800
NXR_A(config-ipsec-isakmp)#isakmp-mode aggressive

認証アルゴリズムとしてsha256、暗号化アルゴリズムとしてaes128,Diffie-Hellman(DH)グループとしてgroup 5、ISAKMP SAのライフタイムとして10800秒、フェーズ1のネゴシエーションモードとしてアグレッシブモードを設定します。

NXR_A(config-ipsec-isakmp)#remote address ip any
NXR_A(config-ipsec-isakmp)#remote identity fqdn nxrb
NXR_A(config-ipsec-isakmp)#keepalive 30 3 periodic clear
NXR_A(config-ipsec-isakmp)#local policy 1

リモートアドレスにanyを設定します。またリモートIDをFQDN方式でnxrbとし、NXR_BのセルフIDと同じIDを設定します。そしてIKE KeepAlive(DPD)を監視間隔30秒,リトライ回数3回とし、keepalive失敗時にSAを削除するように設定します。さらにIPsecローカルポリシー1と関連づけを行います。

 

8. <トンネル1インタフェース設定>
NXR_A(config)#interface tunnel 1
NXR_A(config-tunnel)#tunnel mode ipsec ipv4
NXR_A(config-tunnel)#tunnel protection ipsec policy 1
NXR_A(config-tunnel)#ip tcp adjust-mss auto

トンネル1インタフェースでトンネルモードをipsec ipv4、使用するIPsecトンネルポリシーとして1を設定します。またTCP MSSの調整機能をオートに設定します。

 

9. <IPsec トンネルポリシー設定>
NXR_A(config)#ipsec tunnel policy 1
NXR_A(config-ipsec-tunnel)#description NXR_B
NXR_A(config-ipsec-tunnel)#negotiation-mode responder

IPsecトンネルポリシー1の説明としてNXR_B、ネゴシエーションモードとしてresponderを設定します。

NXR_A(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-hmac
NXR_A(config-ipsec-tunnel)#set pfs group5
NXR_A(config-ipsec-tunnel)#set sa lifetime 3600

暗号化アルゴリズムとしてaes128、認証アルゴリズムとしてsha256、PFSを有効にし、かつDHグループとしてgroup5、IPsec SAのライフタイムとして3600秒を設定します。

NXR_A(config-ipsec-tunnel)#set key-exchange isakmp 1
NXR_A(config-ipsec-tunnel)#match address ipsec_acl

ISAKMPポリシー1と関連づけを行い、IPsecアクセスリストipsec_aclを設定します。

 

10. <WAN側(ethernet1)インタフェース設定>
NXR_A(config)#interface ethernet 1
NXR_A(config-if)#ip address 203.0.113.1/30

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

NXR_A(config-if)#ip masquerade
NXR_A(config-if)#ip spi-filter
NXR_A(config-if)#ip access-group in eth1_in
NXR_A(config-if)#ip tcp adjust-mss auto

IPマスカレード、ステートフルパケットインスペクションを有効にします。またIPアクセスリストeth1_inをinフィルタに適用します。そしてTCP MSSの調整機能をオートに設定します。

NXR_A(config-if)#ipsec policy 1

IPsecトンネルのエンドポイントとなるためIPsecローカルポリシー1を設定します。

 

11. <DNS設定>
NXR_A(config)#dns
NXR_A(config-dns)#service enable
NXR_A(config-dns)#address 203.0.113.253
NXR_A(config-dns)#address 203.0.113.254

DNSサービスを有効にします。またプロバイダから指定されたプライマリ,セカンダリのDNSサーバアドレスを設定します。

 

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

ファストフォワーディングを有効にします。ファストフォワーディングを有効にすることでパケット転送を高速に処理することができます。
(☞) ファストフォワーディングの詳細および利用時の制約については、各シリーズのユーザーズガイド(CLI版)に記載されているファストフォワーディングの解説をご参照ください。

 

〔NXR_Bの設定〕

1. <ホスト名の設定>
nxrg100(config)#hostname NXR_B

ホスト名を設定します。

 

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

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

 

3. <スタティックルート設定>
NXR_B(config)#ip route 192.168.10.0/24 tunnel 1 1
NXR_B(config)#ip route 192.168.10.0/24 null 254

192.168.10.0/24向けのルートを設定します。なおIPsec SA確立時はトンネル1インタフェースを、未確立時はnullインタフェースのルートを利用するように設定します。

NXR_B(config)#ip route 0.0.0.0/0 ppp 0

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

 

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

IPアクセスリスト名をppp0_inとします。そして送信元IPアドレス203.0.113.1のIKE(UDPポート500番)、ESP(プロトコル番号50)のパケットを許可します。

 

5. <IPsecアクセスリスト設定>
NXR_B(config)#ipsec access-list ipsec_acl ip any any

ipsec_aclという名前のIPsecアクセスリストを設定します。なお送信元IPアドレス,宛先IPアドレスともにanyとします。

 

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

IPsecトンネルの送信元IPアドレスにip(IPv4)を設定します。またセルフIDをFQDN方式でnxrbとし、NXR_AのIPsec ISAKMPポリシー1のリモートIDと同じIDを設定します。

 

7. <IPsec ISAKMPポリシー設定>
NXR_B(config)#ipsec isakmp policy 1
NXR_B(config-ipsec-isakmp)#description NXR_A
NXR_B(config-ipsec-isakmp)#authentication pre-share ipseckey

ISAKMPポリシー1の説明としてNXR_A、認証方式としてpre-share(事前共有鍵)を選択し、事前共有鍵ipseckeyを設定します。なお事前共有鍵はNXR_Aのipsec isakmp policy 1と共通の値を設定します。

NXR_B(config-ipsec-isakmp)#hash sha256
NXR_B(config-ipsec-isakmp)#encryption aes128
NXR_B(config-ipsec-isakmp)#group 5
NXR_B(config-ipsec-isakmp)#lifetime 10800
NXR_B(config-ipsec-isakmp)#isakmp-mode aggressive

認証アルゴリズムとしてsha256、暗号化アルゴリズムとしてaes128,Diffie-Hellman(DH)グループとしてgroup 5、ISAKMP SAのライフタイムとして10800秒、フェーズ1のネゴシエーションモードとしてアグレッシブモードを設定します。

NXR_B(config-ipsec-isakmp)#remote address ip 203.0.113.1
NXR_B(config-ipsec-isakmp)#keepalive 30 3 periodic restart
NXR_B(config-ipsec-isakmp)#local policy 1

リモートアドレスにNXR_AのWAN側IPアドレスを設定します。またIKE KeepAlive(DPD)を監視間隔30秒,リトライ回数3回とし、keepalive失敗時にSAを削除しIKEのネゴシエーションを開始するように設定します。そしてIPsecローカルポリシー1と関連づけを行います。

NXR_B(config-ipsec-isakmp)#netevent 2048 reconnect

trackで障害を検知した場合、IPsecトンネルの再接続を行います。なおtrack設定は「13. <トラック設定(Ping監視)>」で行い、トラックNo.は「2048」とします。

 

8. <トンネル1インタフェース設定>
NXR_B(config)#interface tunnel 1
NXR_B(config-tunnel)#tunnel mode ipsec ipv4
NXR_B(config-tunnel)#tunnel protection ipsec policy 1
NXR_B(config-tunnel)#ip tcp adjust-mss auto

トンネル1インタフェースでトンネルモードをipsec ipv4、使用するIPsecトンネルポリシーとして1を設定します。またTCP MSSの調整機能をオートに設定します。

 

9. <IPsec トンネルポリシー設定>
NXR_B(config)#ipsec tunnel policy 1
NXR_B(config-ipsec-tunnel)#description NXR_A
NXR_B(config-ipsec-tunnel)#negotiation-mode auto

IPsecトンネルポリシー1の説明としてNXR_A、ネゴシエーションモードとしてautoを設定します。

NXR_B(config-ipsec-tunnel)#set transform esp-aes128 esp-sha256-hmac
NXR_B(config-ipsec-tunnel)#set pfs group5
NXR_B(config-ipsec-tunnel)#set sa lifetime 3600

暗号化アルゴリズムとしてaes128、認証アルゴリズムとしてsha256、PFSを有効にし、かつDHグループとしてgroup5、IPsec SAのライフタイムとして3600秒を設定します。

NXR_B(config-ipsec-tunnel)#set key-exchange isakmp 1
NXR_B(config-ipsec-tunnel)#match address ipsec_acl

ISAKMPポリシー1と関連づけを行い、IPsecアクセスリストipsec_aclを設定します。

 

10. <PPPアカウント設定>
NXR_B(config)#ppp account username test1@example.jp password test1pass

ppp0インタフェースで使用するISP接続用ユーザID,パスワードを設定します。
(☞) ここで設定したアカウントはppp0インタフェースの設定で利用します。

 

11. <WAN側(ppp0)インタフェース設定>
NXR_B(config)#interface ppp 0
NXR_B(config-ppp)#ip address negotiated

ppp0インタフェースのIPアドレスが動的の場合、negotiatedを設定します。

NXR_B(config-ppp)#ip masquerade
NXR_B(config-ppp)#ip spi-filter
NXR_B(config-ppp)#ip access-group in ppp0_in
NXR_B(config-ppp)#ip tcp adjust-mss auto

IPマスカレード、ステートフルパケットインスペクションを有効にします。またIPアクセスリストppp0_inをinフィルタに適用します。そしてTCP MSSの調整機能をオートに設定します。

NXR_B(config-ppp)#ppp username test1@example.jp
NXR_B(config-ppp)#ipsec policy 1

ISP接続用ユーザIDを設定します。またIPsecトンネルのエンドポイントとなるためIPsecローカルポリシー1を設定します。

 

12. <ethernet1インタフェース設定>
NXR_B(config)#interface ethernet 1
NXR_B(config-if)#no ip address
NXR_B(config-if)#pppoe-client ppp 0

PPPoEクライアントを設定します。また使用するPPPインタフェースとしてppp0を指定します。

 

13. <トラック設定(Ping監視)>
NXR_B(config)#track 2048 ip reachability

Ping(IPv4)監視を設定します。なおトラックNo.は「2048」とします。
(☞) 拡張機能を利用することにより標準のPing監視機能では指定できないオプションを指定することができます。なお拡張トラック設定のトラックNo.は「2048」からとなります。

NXR_B(config-track)#destination 192.168.10.1

宛先IPアドレスを設定します。

NXR_B(config-track)#source interface tunnel 1

出力インタフェースをを設定します。
(☞) インタフェース名を指定した場合、そのインタフェースのIPアドレスが監視パケットの送信元IPアドレスとなります。なおトンネルインタフェースのIPアドレス設定がno ip addressの場合はifindexの番号が小さいインタフェース(loを除く)のIPアドレスが使用されます。通常はethernet0インタフェースのIPアドレスが使用されます。

NXR_B(config-track)#transmit interval 30 variable

送信間隔を設定します。またvariableを指定しping NG発生時、pingの送信間隔を変化させます。
(☞) variable指定時のインターバルの計算方法は、各シリーズのユーザーズガイド(CLI版)に記載されているNetevent機能の解説をご参照ください。

NXR_B(config-track)#transmit retries 4

リトライ回数を設定します。

 

14. <DNS設定>
NXR_B(config)#dns
NXR_B(config-dns)#service enable

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

 

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

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

 

【 端末の設定例 】

192.168.10.0/24 192.168.20.0/24
IPアドレス 192.168.10.100 192.168.20.100
サブネットマスク 255.255.255.0
デフォルトゲートウェイ 192.168.10.1 192.168.20.1
DNSサーバアドレス

 

【 付録 】