# 設定例集#65: ダイナミックDNSサービスを利用したホスト名（FQDN）によるフレッツ網内VPN接続（ルーティング構成）

本設定例では、ソフトイーサ社が提供する「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」サービスを利用して、フレッツ・光ネクスト網内のIPv6折り返し通信でGRE + IPsec VPNを構築し、拠点間をレイヤー3で接続する手順を説明します。
IPv6ネットワーク上にVPNを構築するには接続先VPNルーターのグローバルIPv6アドレスを指定する必要がありますが、ダイナミックDNSサービスを利用すれば、VPNの接続先をIPv6アドレスではなく、ダイナミックDNSサービスサイトに登録したホスト名（FQDN）で指定できるようになります。これにより、すべての拠点が動的IPv6アドレスの場合でも、VPNを構築できるようになります。
ルーターは起動時に自身のWAN側インターフェース情報（IPv6アドレス）をダイナミックDNSサーバーに登録します。そして、その後IPv6アドレスが変更されたときには、自動的に登録アドレスを更新します。これにより、DNSサーバーはつねにルーターのホスト名に対応する最新のIPv6アドレスを保持することができます。
なお、ここではルーターAを本製品とし、ルーターBは弊社AT-AR4050Sを想定しています。

## 構成

| ルーターA（本社） （本製品） | ルーターB（支社） （AR4050S）
ルーターの基本設定
WAN側物理インターフェース | eth1 | eth1
WAN側（eth1）IPv6アドレス | 自動設定（SLAAC） | 自動設定（SLAAC）
LAN側（eth0/vlan1）IPアドレス | 192.168.10.1/24 | 192.168.20.1/24
IKEフェーズ1（ISAKMP）設定
IKEバージョン | IKEv2
ローカルID | sample1.i.open.ad.jp | sample2.i.open.ad.jp
リモートID | sample2.i.open.ad.jp | sample1.i.open.ad.jp
ダイナミックDNSサービス情報
更新専用URL* | http://ddnsapi-v6.open.ad.jp/api/renew/?ABCDEFGHIJKLMNOPQR | http://ddnsapi-v6.open.ad.jp/api/renew/?RQPONMLKJIHGFEDCBA
ホスト名（FQDN） | sample1.i.open.ad.jp | sample2.i.open.ad.jp
* ルーターが取得したIPv6アドレスを「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」サービスに登録したホスト名（FQDN）と関連付けるには、「専用更新URL」を使用します。 * ルーターが使用するホスト名（FQDN）や専用更新URLは、あらかじめ取得してあるものとします。

[事前共有鍵]

- ルーターA・B間: secret

ダイナミックDNSサーバーへのIPv6アドレス登録（更新）までの流れ：

1. ルーターA、Bは、ダイナミックDNSサーバーのIPv6アドレス情報を知るため、DHCPv6で取得したDNSサーバー宛に名前解決を行います。
2. ダイナミックDNSクライアント機能により自身のIPv6アドレスをダイナミックDNSサーバーへ通知します。

IPsec通信開始までの流れ：

1. 対向機器のLAN側IPアドレス宛ての通信が発生すると、ルーターのトンネルインターフェースに設定されている宛先FQDNアドレスの名前解決をするため、DHCPv6で取得したDNSサーバー宛に問い合わせを行います。
2. 名前解決後、取得したIPv6アドレス情報でIPsecの接続を開始します。

障害 復旧時：

1. ルーターA、Bで通信断が発生すると、IPsec DPDが動作しタイムアウト後にSAを削除します。
2. ルーターA、BはダイナミックDNSクライアント機能により1分間隔で自身のIPv6アドレスをダイナミックDNSサーバーへ通知します。
3. ルーターのトンネルインターフェースに設定されている宛先FQDNアドレスの名前解決をするため、DHCPv6で取得したDNSサーバー宛に問い合わせを行います。
4. 名前解決後、取得したIPv6アドレス情報でIPsecの接続を開始します。

## AT-NFV-APLの事前設定

本設定例は、あらかじめ AT-NFV-APL側で以下のような設定を行っていることを前提としています。
使用するインターフェースの番号や数は適宜変更してかまいません。
事前設定の流れについては「AT-NFV-APL」/「準備」をご覧ください。

Note

10ポート構成（eth1～eth10）のAT-NFV-APL-GTXを想定した例になっていますので、6ポート（eth1～eth6）構成のAT-NFV-APL-GTをご使用の場合は、使用するポートを適宜読み替えてください。

### 管理IPアドレス

詳細は「AT-NFV-APL」/「ネットワーク基本設定」をご覧ください。

インターフェース | IPアドレス
br0 | 192.168.10.254/24

### ブリッジ

詳細は「AT-NFV-APL」/「ネットワーク基本設定」をご覧ください。

ポート | 所属VLAN | ネイティブVLAN
eth1～eth9 | 1 | 1
eth10 | 未所属

### 仮想インターフェース割り当て

vFirewallアプリケーションインスタンスの初期設定時には、下記のように仮想インターフェースを割り当てます。
詳細は「AT-NFV-APL」/「AW+ vFirewall」をご覧ください。

vFirewallの インターフェース名 | インターフェース タイプ | 外部ネットワーク VLAN ID | ホスト インターフェース | IPv4アドレス
eth0 | Virtual | 1 | - | 192.168.10.1/24
eth1 | Physical | - | eth10 | 未指定

## ルーターA（本製品）の設定

1. DNS問い合わせ機能を有効にします。これには、ip domain-lookupコマンドを使います。

       ip domain-lookup

2. ダイナミックDNSクライアント機能を有効にします。これには、ddns enableコマンドを使います。

       ddns enable

3. アップデートサーバーにIPv6アドレスの更新情報を通知するためのダイナミックDNS（DDNS）サービス固有設定を作成します。
   これには、ddns-update-methodコマンドでDDNSアップデートメソッドモードに入り、update-url、update-interval、suppress-ipv4-updatesの各コマンドで具体的なパラメーターを設定します。
   ダイナミックDNSクライアント機能の詳細は「IP付加機能」/「ダイナミックDNSクライアント」をご覧ください。
   ※クエリーパラメーターの開始を表す「`?`」をCLIから入力するには、`Ctrl/V` キーを入力してから `?` を入力してください。単に `?` を入力するとCLIヘルプが表示されてしまうためご注意ください。

       ddns-update-method openddns
        update-url http://ddnsapi-v6.open.ad.jp/api/renew/?ABCDEFGHIJKLMNOPQR
        update-interval 1
        suppress-ipv4-updates

4. WANポートeth1でIPv6のステートレスアドレス自動設定（SLAAC）を有効にします。これにはipv6 enableコマンドを使います。
   この設定により、ルーターから受信したRAのプレフィックス情報にもとづいてeth1のIPv6アドレスが自動設定されます。
   また、DNSサーバーアドレスもDHCPv6サーバーから自動取得します。
   IPv6インターフェースの詳細は「IPv6」/「IPv6インターフェース」をご覧ください。
   さらにアップデートサーバーへのアドレス更新通知のためダイナミックDNSクライアント機能を有効にします。これには、ipv6 ddns-update-methodコマンドを使います。

       interface eth1
        ipv6 enable
        ipv6 ddns-update-method openddns

5. LAN側インターフェースeth0のIPアドレスは、AT-NFV-APLの事前設定時に設定済みのため、次のコマンドを手で入力する必要はありません。

       interface eth0
        ip address 192.168.10.1/24

6. IPv6パケット転送機能を有効化します。これにはipv6 forwardingコマンドを使います。

       ipv6 forwarding

7. ファイアウォールやNATのルール作成時に使うエンティティー（通信主体）を定義します。
   エンティティー定義の詳細は「UTM」/「エンティティー定義」をご覧ください。
   内部ネットワークを表すゾーン「private_ipv4」を作成します。
   これには、zone、network、ip subnetの各コマンドを使います。

       zone private_ipv4
        network lan
         ip subnet 172.16.0.0/30
         ip subnet 192.168.0.0/16

8. 外部ネットワークを表すゾーン「external_ipv6」を作成します。
   前記コマンドに加え、ここではipv6 subnet、host、ipv6 addressの各コマンドも使います。

       zone external_ipv6
        network wan
         ipv6 subnet ::/0 interface eth1
         host eth1
          ipv6 address dynamic interface eth1

9. ファイアウォールのルール作成時に通信内容を指定するために使う「アプリケーション」を定義します。
   これには、application、protocol、dportの各コマンドを使います。
   アプリケーション定義の詳細は「UTM」/「アプリケーション定義」をご覧ください。
   DHCPv6パケットを表すカスタムアプリケーション「dhcpv6」を定義します。

       application dhcpv6
        protocol udp
        dport 546 to 547

10. IPsecのESPパケットを表すカスタムアプリケーション「esp」を定義します。

        application esp
         protocol 50

11. GREパケットを表すカスタムアプリケーション「gre」を定義します。

        application gre
         protocol 47

12. ICMPv6パケットを表すカスタムアプリケーション「icmpv6」を定義します。

        application icmpv6
         protocol ipv6-icmp

13. ISAKMPパケットを表すカスタムアプリケーション「isakmp」を定義します。

        application isakmp
         protocol udp
         dport 500

14. 外部からの通信を遮断しつつ、内部からの通信は自由に行えるようにするファイアウォール機能の設定を行います。
    これには、firewall、rule、protectの各コマンドを使います。
    ・rule 10 - 本製品のWAN側インターフェースからのIPv6通信を許可します
    ・rule 20 - ISAKMPパケットを許可します
    ・rule 30 - IPsec（ESP）パケットを許可します
    ・rule 40 - GREパケットを許可します
    ・rule 50 - DHCPv6パケットを許可します
    ・rule 60 - ICMPv6パケットを許可します
    ・rule 100 - 内部から内部へのIPv4通信を許可します
    ファイアウォールの詳細は「UTM」/「ファイアウォール」をご覧ください。

        firewall
         rule 10 permit any from external_ipv6.wan.eth1 to external_ipv6
         rule 20 permit isakmp from external_ipv6 to external_ipv6.wan.eth1
         rule 30 permit esp from external_ipv6 to external_ipv6.wan.eth1
         rule 40 permit gre from external_ipv6 to external_ipv6.wan.eth1
         rule 50 permit dhcpv6 from external_ipv6 to external_ipv6.wan.eth1
         rule 60 permit icmpv6 from external_ipv6 to external_ipv6.wan.eth1
         rule 100 permit any from private_ipv4 to private_ipv4
         protect

15. 対向ルーターとの間で使用するISAKMPの事前共有鍵を設定します。これにはcrypto isakmp keyコマンドを使います。

        crypto isakmp key secret hostname sample2.i.open.ad.jp

16. GREトンネルインターフェースtunnel0を作成します。
    トンネルインターフェースはinterfaceコマンドで作成し、以下の設定を行います。
    ・トンネルインターフェースから送信するデリバリーパケットの始点（自装置）アドレス（tunnel source）
    ・トンネルインターフェースから送信するデリバリーパケットの終点（対向装置）アドレス（tunnel destination）
    ・トンネルインターフェースにおけるISAKMP 自装置ID（ローカルID）（tunnel local name）
    ・トンネルインターフェースにおけるISAKMP 対向装置ID（リモートID）（tunnel remote name）
    ・トンネルインターフェースに対するIPsec保護の適用（tunnel protection ipsec）
    ・トンネリング方式（tunnel mode gre）
    ・トンネルインターフェースのIPアドレス（ip address）
    ・トンネルインターフェースにおけるMSS書き換え設定（ip tcp adjust-mss）
    トンネルインターフェースの詳細は「VPN」/「トンネルインターフェース」を、GREの詳細は「VPN」/「GRE」を、IPsecの詳細は「VPN」/「IPsec」をご覧ください。

        interface tunnel0
         tunnel source eth1
         tunnel destination sample2.i.open.ad.jp
         tunnel local name sample1.i.open.ad.jp
         tunnel remote name sample2.i.open.ad.jp
         tunnel protection ipsec
         tunnel mode gre ipv6
         ip address 172.16.0.1/30
         ip tcp adjust-mss 1366

17. ルーターBのLAN側（192.168.20.0/24）への経路を設定します。これにはip routeコマンドを使います。
    IP経路設定の詳細は「IP」/「経路制御」をご覧ください。

        ip route 192.168.20.0/24 tunnel0

18. 以上で設定は完了です。

        end

## ルーターB（AR4050S）の設定

1. LANポートにおいて初期状態で有効化されているスパニングツリープロトコル（RSTP）を無効化します。これにはspanning-tree enableコマンドをno形式で実行します。
   スパニングツリープロトコルの詳細は「L2スイッチング」/「スパニングツリープロトコル」をご覧ください。

       no spanning-tree rstp enable

2. DNS問い合わせ機能を有効にします。これには、ip domain-lookupコマンドを使います。

       ip domain-lookup

3. ダイナミックDNSクライアント機能を有効にします。これには、ddns enableコマンドを使います。

       ddns enable

4. アップデートサーバーにIPv6アドレスの更新情報を通知するためのダイナミックDNS（DDNS）サービス固有設定を作成します。
   これには、ddns-update-methodコマンドでDDNSアップデートメソッドモードに入り、update-url、update-interval、suppress-ipv4-updatesの各コマンドで具体的なパラメーターを設定します。
   ダイナミックDNSクライアント機能の詳細は「IP付加機能」/「ダイナミックDNSクライアント」をご覧ください。
   ※クエリーパラメーターの開始を表す「`?`」をCLIから入力するには、`Ctrl/V` キーを入力してから `?` を入力してください。単に `?` を入力するとCLIヘルプが表示されてしまうためご注意ください。

       ddns-update-method openddns
        update-url http://ddnsapi-v6.open.ad.jp/api/renew/?RQPONMLKJIHGFEDCBA
        update-interval 1
        suppress-ipv4-updates

5. WANポートeth1でIPv6のステートレスアドレス自動設定（SLAAC）を有効にします。これにはipv6 enableコマンドを使います。
   この設定により、ルーターから受信したRAのプレフィックス情報にもとづいてeth1のIPv6アドレスが自動設定されます。
   また、DNSサーバーアドレスもDHCPv6サーバーから自動取得します。
   IPv6インターフェースの詳細は「IPv6」/「IPv6インターフェース」をご覧ください。
   さらにアップデートサーバーへのアドレス更新通知のためダイナミックDNSクライアント機能を有効にします。これには、ipv6 ddns-update-methodコマンドを使います。

       interface eth1
        ipv6 enable
        ipv6 ddns-update-method openddns

6. LAN側インターフェースvlan1にIPアドレスを設定します。これにはip addressコマンドを使います。
   IPインターフェースの詳細は「IP」/「IPインターフェース」をご覧ください。

       interface vlan1
        ip address 192.168.20.1/24

7. IPv6パケット転送機能を有効化します。これにはipv6 forwardingコマンドを使います。

       ipv6 forwarding

8. ファイアウォールやNATのルール作成時に使うエンティティー（通信主体）を定義します。
   エンティティー定義の詳細は「UTM」/「エンティティー定義」をご覧ください。
   内部ネットワークを表すゾーン「private_ipv4」を作成します。
   これには、zone、network、ip subnetの各コマンドを使います。

       zone private_ipv4
        network lan
         ip subnet 172.16.0.0/24
         ip subnet 192.168.0.0/16

9. 外部ネットワークを表すゾーン「external_ipv6」を作成します。
   前記コマンドに加え、ここではipv6 subnet、host、ipv6 addressの各コマンドも使います。

       zone external_ipv6
        network wan
         ipv6 subnet ::/0 interface eth1
         host eth1
          ipv6 address dynamic interface eth1

10. ファイアウォールのルール作成時に通信内容を指定するために使う「アプリケーション」を定義します。
    これには、application、protocol、dportの各コマンドを使います。
    アプリケーション定義の詳細は「UTM」/「アプリケーション定義」をご覧ください。
    DHCPv6パケットを表すカスタムアプリケーション「dhcpv6」を定義します。

        application dhcpv6
         protocol udp
         dport 546 to 547

11. IPsecのESPパケットを表すカスタムアプリケーション「esp」を定義します。

        application esp
         protocol 50

12. GREパケットを表すカスタムアプリケーション「gre」を定義します。

        application gre
         protocol 47

13. ICMPv6パケットを表すカスタムアプリケーション「icmpv6」を定義します。

        application icmpv6
         protocol ipv6-icmp

14. ISAKMPパケットを表すカスタムアプリケーション「isakmp」を定義します。

        application isakmp
         protocol udp
         dport 500

15. 外部からの通信を遮断しつつ、内部からの通信は自由に行えるようにするファイアウォール機能の設定を行います。
    これには、firewall、rule、protectの各コマンドを使います。
    ・rule 10 - 本製品のWAN側インターフェースからのIPv6通信を許可します
    ・rule 20 - ISAKMPパケットを許可します
    ・rule 30 - IPsec（ESP）パケットを許可します
    ・rule 40 - GREパケットを許可します
    ・rule 50 - DHCPv6パケットを許可します
    ・rule 60 - ICMPv6パケットを許可します
    ・rule 100 - 内部から内部へのIPv4通信を許可します
    ファイアウォールの詳細は「UTM」/「ファイアウォール」をご覧ください。

        firewall
         rule 10 permit any from external_ipv6.wan.eth1 to external_ipv6
         rule 20 permit isakmp from external_ipv6 to external_ipv6.wan.eth1
         rule 30 permit esp from external_ipv6 to external_ipv6.wan.eth1
         rule 40 permit gre from external_ipv6 to external_ipv6.wan.eth1
         rule 50 permit dhcpv6 from external_ipv6 to external_ipv6.wan.eth1
         rule 60 permit icmpv6 from external_ipv6 to external_ipv6.wan.eth1
         rule 100 permit any from private_ipv4 to private_ipv4
         protect

16. 対向ルーターとの間で使用するISAKMPの事前共有鍵を設定します。これにはcrypto isakmp keyコマンドを使います。

        crypto isakmp key secret hostname sample1.i.open.ad.jp

17. GREトンネルインターフェースtunnel0を作成します。
    トンネルインターフェースはinterfaceコマンドで作成し、以下の設定を行います。
    ・トンネルインターフェースから送信するデリバリーパケットの始点（自装置）アドレス（tunnel source）
    ・トンネルインターフェースから送信するデリバリーパケットの終点（対向装置）アドレス（tunnel destination）
    ・トンネルインターフェースにおけるISAKMP 自装置ID（ローカルID）（tunnel local name）
    ・トンネルインターフェースにおけるISAKMP 対向装置ID（リモートID）（tunnel remote name）
    ・トンネルインターフェースに対するIPsec保護の適用（tunnel protection ipsec）
    ・トンネリング方式（tunnel mode gre）
    ・トンネルインターフェースのIPアドレス（ip address）
    ・トンネルインターフェースにおけるMSS書き換え設定（ip tcp adjust-mss）
    トンネルインターフェースの詳細は「VPN」/「トンネルインターフェース」を、GREの詳細は「VPN」/「GRE」を、IPsecの詳細は「VPN」/「IPsec」をご覧ください。

        interface tunnel0
         tunnel source eth1
         tunnel destination sample1.i.open.ad.jp
         tunnel local name sample2.i.open.ad.jp
         tunnel remote name sample1.i.open.ad.jp
         tunnel protection ipsec
         tunnel mode gre ipv6
         ip address 172.16.0.2/30
         ip tcp adjust-mss 1366

18. ルーターAのLAN側（192.168.10.0/24）への経路を設定します。これにはip routeコマンドを使います。
    IP経路設定の詳細は「IP」/「経路制御」をご覧ください。

        ip route 192.168.10.0/24 tunnel0

19. 以上で設定は完了です。

        end

## 設定の保存

設定が完了したら、現在の設定内容を起動時コンフィグとして保存してください。これには、copyコマンドを「`copy running-config startup-config`」の書式で実行します。

    awplus# copy running-config startup-config
    Building configuration...
    [OK]

また、write fileコマンド、write memoryコマンドでも同じことができます。

    awplus# write memory
    Building configuration...
    [OK]

その他、設定保存の詳細については「運用・管理」/「コンフィグレーション」をご覧ください。

## ファイアウォールログについて

ファイアウォールのログをとるには、次のコマンド（log(filter)）を実行します。

    awplus(config)# log buffered level informational facility local5

記録されたログを見るには、次のコマンド（show log）を実行します。ここでは、ファイアウォールが出力したログメッセージだけを表示させています。

    awplus# show log | include Firewall

## ルーターA（本製品）のコンフィグ

    !
    ip domain-lookup
    !
    ddns enable
    !
    ddns-update-method openddns
     update-url http://ddnsapi-v6.open.ad.jp/api/renew/?ABCDEFGHIJKLMNOPQR
     update-interval 1
     suppress-ipv4-updates
    !
    interface eth1
     ipv6 enable
     ipv6 ddns-update-method openddns
    !
    interface eth0
     ip address 192.168.10.1/24
    !
    ipv6 forwarding
    !
    zone private_ipv4
     network lan
      ip subnet 172.16.0.0/30
      ip subnet 192.168.0.0/16
    !
    zone external_ipv6
     network wan
      ipv6 subnet ::/0 interface eth1
      host eth1
       ipv6 address dynamic interface eth1
    !
    application dhcpv6
     protocol udp
     dport 546 to 547
    !
    application esp
     protocol 50
    !
    application gre
     protocol 47
    !
    application icmpv6
     protocol ipv6-icmp
    !
    application isakmp
     protocol udp
     dport 500
    !
    firewall
     rule 10 permit any from external_ipv6.wan.eth1 to external_ipv6
     rule 20 permit isakmp from external_ipv6 to external_ipv6.wan.eth1
     rule 30 permit esp from external_ipv6 to external_ipv6.wan.eth1
     rule 40 permit gre from external_ipv6 to external_ipv6.wan.eth1
     rule 50 permit dhcpv6 from external_ipv6 to external_ipv6.wan.eth1
     rule 60 permit icmpv6 from external_ipv6 to external_ipv6.wan.eth1
     rule 100 permit any from private_ipv4 to private_ipv4
     protect
    !
    crypto isakmp key secret hostname sample2.i.open.ad.jp
    !
    interface tunnel0
     tunnel source eth1
     tunnel destination sample2.i.open.ad.jp
     tunnel local name sample1.i.open.ad.jp
     tunnel remote name sample2.i.open.ad.jp
     tunnel protection ipsec
     tunnel mode gre ipv6
     ip address 172.16.0.1/30
     ip tcp adjust-mss 1366
    !
    ip route 192.168.20.0/24 tunnel0
    !
    end

## ルーターB（AR4050S）のコンフィグ

    !
    no spanning-tree rstp enable
    !
    ip domain-lookup
    !
    ddns enable
    !
    ddns-update-method openddns
     update-url http://ddnsapi-v6.open.ad.jp/api/renew/?RQPONMLKJIHGFEDCBA
     update-interval 1
     suppress-ipv4-updates
    !
    interface eth1
     ipv6 enable
     ipv6 ddns-update-method openddns
    !
    interface vlan1
     ip address 192.168.20.1/24
    !
    ipv6 forwarding
    !
    zone private_ipv4
     network lan
      ip subnet 172.16.0.0/24
      ip subnet 192.168.0.0/16
    !
    zone external_ipv6
     network wan
      ipv6 subnet ::/0 interface eth1
      host eth1
       ipv6 address dynamic interface eth1
    !
    application dhcpv6
     protocol udp
     dport 546 to 547
    !
    application esp
     protocol 50
    !
    application gre
     protocol 47
    !
    application icmpv6
     protocol ipv6-icmp
    !
    application isakmp
     protocol udp
     dport 500
    !
    firewall
     rule 10 permit any from external_ipv6.wan.eth1 to external_ipv6
     rule 20 permit isakmp from external_ipv6 to external_ipv6.wan.eth1
     rule 30 permit esp from external_ipv6 to external_ipv6.wan.eth1
     rule 40 permit gre from external_ipv6 to external_ipv6.wan.eth1
     rule 50 permit dhcpv6 from external_ipv6 to external_ipv6.wan.eth1
     rule 60 permit icmpv6 from external_ipv6 to external_ipv6.wan.eth1
     rule 100 permit any from private_ipv4 to private_ipv4
     protect
    !
    crypto isakmp key secret hostname sample1.i.open.ad.jp
    !
    interface tunnel0
     tunnel source eth1
     tunnel destination sample1.i.open.ad.jp
     tunnel local name sample2.i.open.ad.jp
     tunnel remote name sample1.i.open.ad.jp
     tunnel protection ipsec
     tunnel mode gre ipv6
     ip address 172.16.0.2/30
     ip tcp adjust-mss 1366
    !
    ip route 192.168.10.0/24 tunnel0
    !
    end