# VPN / GRE

GRE（Generic Routing Encapsulation）は、任意のネットワーク層プロトコルパケットを、別のネットワーク層プロトコルパケットに包み込んで送信する汎用のトンネリングプロトコルです。
本製品はIPv4/IPv6ネットワーク上におけるIPv4/IPv6パケットのトンネリングに対応しています。
また、トランスポートモードIPsecを併用した通信内容の暗号化と認証にも対応しています。
Note

ファームウェアバージョン5.4.5-0.4までのAT-ARシリーズと5.4.5-1.1以降のAT-ARシリーズとの間ではIPsec接続ができません。GREトンネルインターフェースをトランスポートモードIPsecで保護する場合はファームウェアのバージョンを揃えてください。

本製品のGREトンネルインターフェースの基本仕様は以下のとおりです。

- デリバリー（外側）プロトコル：IPv4/IPv6
  IPv4およびIPv6ネットワーク上にGREトンネルを構築可能
- ペイロード（内側）プロトコル：IPv4/IPv6
  - トンネルインターフェースにIPv4アドレスを割り当てれば、IPv4インターフェースとしてIPv4パケットのルーティングが可能
  - トンネルインターフェースにIPv6アドレスを割り当てれば、IPv6インターフェースとしてIPv6パケットのルーティングが可能
- トランスポートモード IPsec を併用することによりトンネルトラフィックの保護（ESPによる暗号化と認証）が可能。
  またIPアドレスが不定な対向装置との接続も可能。

本章ではGREトンネルインターフェースに特化した説明を行います。
トンネルインターフェース全般については「VPN」の「トンネルインターフェース」を、インターフェース全般については「インターフェース」の「一般設定」を、IPsecについては「VPN」の「IPsec」をご覧ください。

## 基本設定

### GRE over IPv4

IPv4ネットワーク上にGREトンネルインターフェースを作成し、拠点間でIPv6パケットをトンネリングするには、次の手順にしたがいます。

以下では、上記構成図のルーターAを例に具体的な設定手順を示します。
なお、前提事項として、ルーターA・BはIPv4でインターネットに接続しているものとします。WAN側インターフェースのIPアドレスは固定であり、ルーター間でのIP通信もできているものとします。

1. トンネルインターフェースtunnel0を作成します。

       awplus(config)# interface tunnel0

2. トンネリング方式としてgre（GRE over IPv4）を指定します。これには、tunnel mode greコマンドを使います。

       awplus(config-if)# tunnel mode gre

3. トンネルインターフェースから送信するデリバリーパケットの始点・終点アドレス（自装置と対向装置のIPアドレス）を指定します。これには、tunnel source / tunnel destinationコマンドを使います。

       awplus(config-if)# tunnel source 10.1.1.1
       awplus(config-if)# tunnel destination 10.2.2.2

4. トンネルインターフェースtunnel0にIPv6のリンクローカルアドレスを設定して、同インターフェースでIPv6パケットのルーティングが行われるようにします。これには、ipv6 enableコマンドを使います。

       awplus(config-if)# ipv6 enable

   Note

   IPv6パケットをルーティング（転送）するだけであれば、トンネルインターフェースのIPv6アドレスはこの例のようにリンクローカルアドレス（ipv6 enable）だけでかまいませんが、BGPを使用する場合などグローバルアドレスが必要な場合はipv6 addressコマンドで適切なIPv6アドレスを設定してください。

5. 対向拠点へのスタティック経路を登録します。これには、ipv6 routeコマンドを使います。

       awplus(config-if)# exit
       awplus(config)# ipv6 route 2001:db8:10:20::/64 tunnel0

インターフェースへのIPv6アドレス設定については「IPv6」/「IPv6インターフェース」を、IPv6の経路設定については「IPv6」/「経路制御」、および、ダイナミックルーティングに関する各セクションをご覧ください。

#### IPsecによる保護

上記設定ではGREトンネル上を流れるIPv6パケットは平文のままです。トンネル上のトラフィックを暗号化するには、次の手順を追加してIPsec保護を有効にしてください。

1. ISAKMPの事前共有鍵を設定します。これにはcrypto isakmp keyコマンドを使います。addressパラメーターで指定するのは、IPsecの接続相手（対向装置）、すなわち、ルーターBのIPアドレスです。

       awplus(config)# crypto isakmp key ouR4ecret address 10.2.2.2

2. GREトンネルインターフェースtunnel0に対し、IPsecによる保護を適用します。これにはtunnel protection ipsecコマンドを使います。

       awplus(config)# interface tunnel0
       awplus(config-if)# tunnel protection ipsec

### GRE over IPv6

IPv6ネットワーク上にGREトンネルインターフェースを作成し、拠点間でIPv4パケットをトンネリングするには、次の手順にしたがいます。

以下では、上記構成図のルーターAを例に具体的な設定手順を示します。
なお、前提事項として、ルーターA・BはIPv6でインターネットに接続しているものとします。WAN側インターフェースのIPv6アドレスは固定であり、ルーター間でのIPv6通信もできているものとします。

1. トンネルインターフェースtunnel0を作成します。これにはinterfaceコマンドを使います。

       awplus(config)# interface tunnel0

2. トンネリング方式としてgre ipv6（GRE over IPv6）を指定します。これには、tunnel mode greコマンドを使います。

       awplus(config-if)# tunnel mode gre ipv6

3. トンネルインターフェースから送信するデリバリーパケットの始点・終点アドレス（自装置と対向装置のIPv6アドレス）を指定します。これには、tunnel source / tunnel destinationコマンドを使います。

       awplus(config-if)# tunnel source 2001:db8:1:1::1
       awplus(config-if)# tunnel destination 2001:db8:2:2::2

4. トンネルインターフェースtunnel0にIPアドレスを設定して、同インターフェースでIPv4パケットのルーティングが行われるようにします。これには、ip addressコマンドを使います。

       awplus(config-if)# ip address 192.168.254.1/30

   Note

   トンネルインターフェースにIPアドレスを設定する場合のマスク長は30ビット以下を推奨します。トンネルインターフェースのIPアドレスを「ip address 192.168.254.1/32」のように32ビットマスクで設定することも可能ですが、トンネルインターフェース上でOSPFなどの経路制御プロトコルを動作させる場合は、ホストアドレスを複数取れる30ビット以下のサブネットマスクを設定する必要があるためです。

5. 対向拠点へのスタティック経路を登録します。これには、ip routeコマンドを使います。

       awplus(config-if)# exit
       awplus(config)# ip route 192.168.20.0/24 tunnel0

インターフェースへのIPアドレス設定については「IP」/「IPインターフェース」を、IPの経路設定については「IP」/「経路制御」、および、ダイナミックルーティングに関する各セクションをご覧ください。

#### IPsecによる保護

上記設定ではGREトンネル上を流れるIPv4パケットは平文のままです。トンネル上のトラフィックを暗号化するには、次の手順を追加してIPsec保護を有効にしてください。

1. ISAKMPの事前共有鍵を設定します。これにはcrypto isakmp keyコマンドを使います。addressパラメーターで指定するのは、IPsecの接続相手（対向装置）、すなわち、ルーターBのIPアドレスです。

       awplus(config)# crypto isakmp key ouR4ecret address 2001:db8:2:2::2

2. GRE over IPv6トンネルインターフェースtunnel0に対し、IPsecによる保護を適用します。これにはtunnel protection ipsecコマンドを使います。

       awplus(config)# interface tunnel0
       awplus(config-if)# tunnel protection ipsec

## 設定と状態の確認

GREトンネルインターフェースの情報はshow interfaceコマンドで確認できます。

    awplus> show interface tunnel10
    Interface tunnel10
      Link is UP, administrative state is UP
      Hardware is Tunnel
      IPv6 address 2001:db8:10:10::1/64
      IPv6 address fe80::21a:ebff:fe92:a4bc/64
      index 27 metric 1 mtu 1476
      <UP,POINTOPOINT,RUNNING,MULTICAST>
      SNMP link-status traps: Disabled
      Tunnel source 10.1.1.1, destination 10.2.2.2
      Tunnel name local 10.1.1.1, remote 10.2.2.2
      Tunnel ID local (not set), remote (not set)
      Tunnel protocol/transport gre, key disabled, sequencing disabled
      Tunnel TTL 64
      Checksumming of packets disabled, path MTU discovery disabled
        input packets 0, bytes 0, dropped 0, multicast packets 0
        output packets 8, bytes 480, multicast packets 0 broadcast packets 0
      Time since last state change: 0 days 00:01:29