🌐

NVR700W と UNIVERGE IX を IKEv2/IPsec で拠点間接続

2023/05/05に公開

実家にひかり電話対応のルーターとしてNVR700Wを導入したので、自分のところにあるNEC UNI IX2215と異種ベンダー間で拠点間接続を行いました。
3日くらいハマってたので防備録として記事に残します。

やりたいこと・要件

  • 拠点A - 拠点B間をIKEv2/IPsecで拠点間接続する。
  • 通信経路はNTTのNGN網内折り返し(インターネットに出ない)で完結させる。

前提環境

拠点A(NEC UNIVERGE IX)側

機材

NEC UNIVERGE IX2215(Version 10.6.64 10.7.18 後日更新しました)

回線

  • フレッツ 光ネクスト相当の光コラボモデル

拠点B(ヤマハ NVR700W)側

機材

ヤマハ LTEアクセスVoIPルーター NVR700W(Rev.15.00.24)

回線

  • フレッツ 光ネクスト相当の光コラボモデル

事前準備

DDNS

NVR700W側はネットボランチDNSサービス
UNIVERGE IX側はNetMeisterのダイナミックDNS
それぞれ登録し、ドメインを取得します。

NVR700W 手順

IPoE環境ではGUIから登録設定が出来ない場合があるのでコマンドから登録します。

# ホスト名の登録
netvolante-dns hostname host lan2 [任意のホスト名] ipv6 address

# ネットボランチ DNS サービスの使用の可否
# 自動更新をONにします。
netvolante-dns use lan2 auto

# ネットボランチ DNS サーバーへの手動更新
netvolante-dns go lan2

これで [任意のホスト名].<サブドメイン>.netvolante.jp ドメインが使用できるようになります。

UNIVERGE IX 手順

コマンドで作業する前にWebから会員登録を済ませておく必要があります。

! NetMeister クライアント機能の有効化
! IPv6で情報通知 / NGN閉域網指定 / NTT東日本指定 / MQTTの強制指定
nm ipv6 enable ngn-private east mqtt force 

! アカウントの設定
nm account [グループID] password plain [グループパスワード]

! ダイナミックDNS 登録ホスト名の設定
nm ddns hostname [任意の登録ホスト名]

! 即時更新
nm update

これでNGN網で使える <ホスト名>.<グループID>.v6.nmddns.jp 形式のドメイン名を取得できます。

パラメータ検討

IKEv2/IPsecでトンネルを張るためのパラメータを決めます。
NVR700W, UNIVERGE IXの列はコマンドリファレンスの項番号、ページを示します。

項目 パラメータ NVR700W UNIVERGE IX
認証方式 pre-shared-key 13.4 13-66
事前共有鍵 [事前共有鍵]
例:EnD7TV6otuj8iPeRrWqNQx2Kkt2r3Z2v
13.4 13-66
暗号アルゴリズム AES256-CBC 13.45.2 13-64
ハッシュアルゴリズム HMAC-SHA2-256 13.45.2 13-64
PFSのon/off off 13.29 13-56
DH(Diffie-Hellman)グループ DH Group 2 13.23 13-63
ISAKMP SAの寿命 28800 13.45.1 13-63
IPsec SAの寿命 28800 13.45.1 13-56
キープアライブ 方式: RFC4306(IKEv2 標準)
送信間隔: 10秒
13.19 13-58
NVR700W側FQDN [ホスト名].<サブドメイン>.netvolante.jp 34 -
UNIVERGE IX側FQDN <ホスト名>.<グループID>.v6.nmddns.jp - 22-2
~ 22-10

コンフィグ投入

NVR700W側

tunnel select 2
 ipsec tunnel 2
  ipsec sa policy 2 2 esp aes256-cbc sha256-hmac
  ipsec ike version 2 2
  ipsec ike duration ipsec-sa 2 28800
  ipsec ike duration isakmp-sa 2 28800
  ipsec ike group 2 modp1024
  ipsec ike keepalive log 2 off
  ipsec ike keepalive use 2 on rfc4306 10 6
  ipsec ike local name 2 [自装置FQDN(NVR700W側FQDN)] fqdn
  ipsec ike pre-shared-key 2 text [事前共有鍵]
  ipsec ike remote name 2 [相手装置FQDN(UNIVERGE IX側FQDN)] fqdn
 ip tunnel tcp mss limit auto
 tunnel enable 2

UNIVERGE IX側

ikev2 authentication psk id fqdn [相手装置FQDN(NVR700W側FQDN)] key char [事前共有鍵]
!
ikev2 profile nvr
  child-lifetime 28800
  child-pfs off
  dpd interval 10
  local-authentication psk id fqdn [自装置FQDN(UNIVERGE IX側FQDN)]
  sa-lifetime 28800
  sa-proposal enc aes-cbc-256
  sa-proposal integrity sha2-256
  sa-proposal dh 1024-bit
!
interface Tunnel10.0
  tunnel mode ipsec-ikev2
  ip unnumbered GigaEthernet2.2
  ip tcp adjust-mss auto
  ip rip enable
  ikev2 binding nvr
  ikev2 connect-type auto
  ikev2 peer-fqdn-ipv6 [相手装置FQDN(NVR700W側FQDN)] authentication psk id fqdn [相手装置FQDN(NVR700W側FQDN)]
  no shutdown
!

付録

フィルタ(ファイヤウォール)の設定

一例としてIKEv2/IPsecに必要なフィルタの設定を紹介します。

NVR700W側

# フィルタルールの定義
ipv6 filter 12000 pass * * udp * 500
ipv6 filter 12001 pass * * esp
ipv6 filter 12002 pass * * udp * 4500

# インターフェースに適用
ipv6 lan2 secure filter in [元からあったフィルタ] 12000 12001 12002

動的ルーティング(RIP)の設定

RIPで動的ルーティングする一例を紹介します。

NVR700W側

# 6.3.1 RIP を使用するか否かの設定
rip use on

# トンネルに対してRIPを送受信する設定
tunnel select 2
 ip tunnel rip send on version 2
 ip tunnel rip receive on version 2

UNIVERGE IX側

! RIP起動・RIPコンフィグモードへの移行
ip router rip

! トンネルインターフェースを指定し、RIP有効化
interface Tunnel10.0
  ip rip enable

おわりに

最後まで読んでいただきありがとうございました。

NVR700Wが格安で売られていたときに「実家にはこれだ!」と言って導入したのですが、異種ベンダー間での拠点間接続のハードルを感じ、しばらく放置していました。
GWの機会に拠点間接続を完遂しようとして取りかかったのですが、デフォルト値の違いやパラメータ名の違いも多く、3日間もハマってしまったので接続に成功したタイミングでこの記事を書きました。散々ハマった割には最終的にシンプルなのが泣けます。

お役に立てれば嬉しいですし、間違いを見つけた際は優しく教えて頂けると幸いです。

参考

クレジット

Discussion