Cloudflare Magic WAN と FITELnet をつなぐ - ダイナミック IP 編

こんにちは。

[Magic WAN](https://www.cloudflare.com/ja-jp/network-services/products/magic-wan/) と [FITELnet](https://www.furukawa.co.jp/fitelnet/) の接続は以前の[記事](https://qiita.com/KeioCF/items/427507edcb462c6983f2)がありますが、今回は CPE 側の IP アドレスが不定な場合の設定例を頂きました。ありがとうございます。

少し前置きを。

グローバル IP のダイナミックでランダムなアサインもよくあるケースなので、臨機応変、いいですね。
FITELnet を置いてケーブル繋いで電源ポンで Magic しちゃうゼロタッチプロビジョニングも加速します。
... ん？ [LTE 通信モジュール](https://www.furukawa.co.jp/fitelnet/product/f70/#anc_06)があればケーブルもいらなそうですね。

"いつでもどこにでも **LAN・WAN の持ち運び** ができる時代が来た" ってことですね。
**インターネットさえあれば**。

逆に "インターネットがないと WAN が作れない" って、WAN の構築とインターネットの接続が別物だった時代とは隔世の感です。


また、パフォーマンスの面でも、[クラス最高クラスの IPsec 性能](https://www.furukawa.co.jp/fitelnet/product/f220/#anc_04)を持つCPE ルーターが、 [AS の3分の1 と直接接続](https://blog.cloudflare.com/ja-jp/cloudflare-connected-in-over-300-cities-ja-jp/)し[最高クラスのコンテンツデリバリー性能](https://blog.cloudflare.com/speed-week-2023-network-performance-update/)を持つ Cloudflare の [Anycast IPsec](https://blog.cloudflare.com/ja-jp/anycast-ipsec-ja-jp/) エンドポイントとランデブーするとき、そのシナジーは世の中を変えるものがあるんじゃないかと期待します。

> 現在、世界でルーティングされているAS番号は約74,0001 におよびます。 自律システム（AS） 番号はBGPを使用してインターネットルーティング機能を維持する、ISP、企業、クラウド、同様のネットワークごとに割り当てられる一意の番号です。約 74,000のAS番号のうち、43,000はスタブASNまたは他の 1 つのネットワークにのみ接続されています。
Cloudflareは12,372の固有のインターネットネットワークに直接接続していますが、これは世界で接続可能なネットワークの約3分の1に相当することになるのです！この直接接続のおかげで耐障害性を構築し、パフォーマンスの向上が実現しています。また、ネットワーク、ISP、企業間の接続場所が複数存在し、それらが可能なかぎり高速接続になることを保証します。


では能書きを現実にしましょう。
（以下の内容は予告なく変更されることがあります）

# 古河電気工業　FITELnet
このチュートリアルは、古河電気工業製の FITELnet F220シリーズ、F70シリーズ(CPE)と、Cloudflare MagicWANとIPsecトンネルを確立し、MagicWANをバックボーンネットワークとしたLAN間接続を構成する設定例です。<br>CPEのアドレスが不定の場合の設定例です。

<img width="600" alt="FITEL-Cloudflare-dynamic.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218045/244a9f1c-4a8d-f86f-0374-bbaf16130c60.jpeg">

--- 

## IPsecの設定
まず、IPsecトンネルを構成します。

### MagicWAN設定  
Cloudflare MagicWANのコンソールで、IPsecのトンネルを生成します。  
サイドメニュー【Magic WAN】を選択し、メイン画面の、Magic WAN構成の管理の【設定】をクリックして、トンネルの作成画面に遷移します。  
【＋作成】をクリックして、IPsecトンネルの生成を行います。  
<p>
<img width="600" alt="MagicWan-Potal1.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218045/861c1b1b-993b-96bc-009a-14d6d1c2bf8a.jpeg">
</p>
IPsecトンネルを選択して、【次へ】をクリックします。
<p>
<img width="600" alt="MagicWan-Potal2-Agg.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218045/f93dc9f8-f22e-5f6b-b965-21f5cf25c527.jpeg">
</p>

| 設定項目               | 内容                                                                                                             | 設定例１                                    | 設定例２                            |
| ------------------ | -------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------------- |
| トンネル名              | トンネルの名称を設定する                                                                                                   | FITEL-tunnel-1                          | FITEL-tunnel-2                  |
| 説明                 | 生成したトンネルの説明                                                                                                    | IPsec tunnel with FITELnet No.1         | IPsec tunnel with FITELnet No.2 |
| インタフェースアドレス        | トンネルインタフェースのIPアドレス。MagicWAN側につけるIPアドレス。<br>FITEL側は同じサブネットの別のアドレスを設定する                                          | 10.0.0.1/31                             | 10.0.0.3/31                     |
| カスタマーエンドポイント       | FITEL側のグローバルインタフェースにつけるIPアドレス                                                                                  | 0.0.0.0                         | 0.0.0.0                 |
| Cloudflare エンドポイント | Cloudflareから提示されたエニーキャストアドレス                                                                                   | anycast-address                         | anycast-address                 |
| 事前共有キー             | 事前共有キーを設定する。<br>Cloudflareサービスで生成される事前共有キーを使う場合は、「事前共有キーを後で追加する」を選択<br>独自の事前共有キーを使用する場合は「独自の事前共有キーを使用する」を選択する。 | 独自の事前共有キーを使用する<br>secret-pre-shared-key-1 |      独自の事前共有キーを使用する<br>secret-pre-shared-key-2                           |

同様に、もう一方のIPsecトンネルも生成します。  

トンネルを生成したら、それぞれのFQDN-IDを確認・コピーします。  
確認したFQDN-IDは、FITELnetルータ設定で使用します。
<p>
<img width="600" alt="MagicWan-FQDNID.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218045/8d08d1b8-6a8c-d04a-1b61-7a82f3435a28.jpeg">
</p>

### FITELnetルータ設定
以下のように、FITELnetルータの設定をします。  
```
interface Tunnel 1
 ip address 10.0.0.0 255.255.255.254
 tunnel mode ipsec map MAP1
 link-state sync-sa
exit
!

crypto ipsec policy IPsec_POLICY
 set security-association always-up
 set security-association lifetime seconds 28800
 set security-association transform-keysize aes 256 256 256
 set security-association transform esp-aes esp-sha256-hmac
 set mtu 1460
 set mss 1350
 set ip df-bit 0
 set ip fragment post
 set udp-encapsulation nat-t keepalive interval 30 always-send　※ Cloudflareとの間にNATルータが存在する場合に必要
 set udp-encapsulation-force  ※ Cloudflareとの間にNATルータが存在する場合に必要
exit
!
crypto ipsec selector SELECTOR
 src 1 ipv4 any
 dst 1 ipv4 any
exit
!
crypto isakmp keepalive
crypto isakmp log sa
crypto isakmp log session
crypto isakmp log negotiation-fail
crypto isakmp negotiation always-up-params interval 100 max-initiate 10 max-pending 10 delay 1
crypto ipsec replay-check disable 
!
crypto isakmp policy ISAKMP_POLICY
 authentication pre-share
 encryption aes
 encryption-keysize aes 256 256 256
 group 14
 lifetime 14400
 hash sha sha-256
 initiate-mode aggressive
exit
!
crypto isakmp profile PROF1
 self-identity fqdn xxxxxxxxxxxxxxxxxxxxxxxxx.ipsec.cloudflare.com
 set isakmp-policy ISAKMP_POLICY
 set ipsec-policy IPsec_POLICY
 set peer anycast-address
 ike-version 2
 local-key secret-pre-shared-key-1
exit
!
crypto map MAP1 ipsec-isakmp
 match address SELECTOR
 set isakmp-profile PROF1
exit
! 
```  
  
同様に、もう一方のFITELnetルータも設定します。  

---

## 経路（スタティックルート）の設定
LAN間接続するための経路設定をします。  

## MagicWAN設定
Cloudflare MagicWANのコンソールで、スタティックルートを生成します。  
サイドメニュー【Magic WAN】を選択し、メイン画面の、Magic WAN構成の管理の【設定】をクリックして、トンネルの作成画面に遷移します。画面上部の「スタティックルート」タブをクリックします。  
【＋作成】をクリックして、IPsecトンネルの生成を行います。  
<p>
<img width="600" alt="MagicWan-Potal3.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218045/d160b4fd-770e-b303-6ee3-428382a21f9c.jpeg">
</p>
<p>
<img width="600" alt="MagicWan-Potal4.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218045/28d07b39-b626-6da2-f651-090d39d4bb0c.jpeg">
</p>

| 設定項目         | 内容                        | 設定例１                     | 設定例２                      |
| ------------ | ------------------------- | ------------------------ | ------------------------- |
| 説明           | 生成したスタティックルーティング経路の説明     | FITEL-route-1            | FITEL-route-2             |
| プレフィックス      | トンネルの先のプレフィックス情報          | 192.168.0.0/24           | 192.168.1.0/24            |
| トンネル/ネクストホップ | 指定したプレフィックスへのトンネルを選択      | FITEL-tunnel-1 - 10.0.0.0 | FITEL-tunnel-2 - 10.0.0.2 |
| 優先順位         | 同一宛先への経路の優先順位             | 100                      | 100                       |
| ウェイト         | ECMP（優先順位を同じに設定）した際の、ウェイト | なし                       | なし                        |
| リージョンコード     | 適用するリージョン                 | すべてのリージョン                | すべてのリージョン                   |


同様に、もう一方のスタティックルートも生成します。  

### FITELnetルータ設定
以下のように、FITELnetルータの設定をします。  
```
ip route 192.168.1.0 255.255.255.0 tunnel 1 
```
同様に、もう一方のFITELnetルータも設定します。 　

---

## 接続確認
### IPsec確立確認
FITELnetルータのCLIで、show crypto sa を実行し、IPsecの確立状態を確認することができます。<br>Total number of ISAKMP/IPSEC SA に、確立しているSAの数が表示されます。  

```
#show crypto sa

  IKE_SA
    Mode: <I>
    Local IP : xxx.xxx.xxx.xxx/4500 (behind NAT)
    Local ID : xxxxxxxxxxxxxxxxxxxxxxxxx.ipsec.cloudflare.com (fqdn)
    Remote IP : anycast-address/4500
    Remote ID : anycast-address (ipv4)
    Local Authentication method : Pre-shared key
    Remote Authentication method : Pre-shared key
    Encryption algorithm : aes256-cbc
    Hash algorithm : hmac-sha256-128
    Diffie-Hellman group : 14 (2048 bits)
    Initiator Cookie : aaaaaaaa bbbbbbbb
    Responder Cookie : cccccccc dddddddd
    Life time : 6852/14400 sec
    DPD : on

  CHILD_SA <I>
    Selector :
      0.0.0.0/0 ALL ALL <---> 0.0.0.0/0 ALL ALL
    Interface : tunnel 1
    Peer IP : anycast-address/4500
    Local IP : xxx.xxx.xxx.xxx/4500
    Encryption algorithm : AES-CBC/256
    Authentication algorithm : HMAC-SHA2-256
    Life time : 22868/28800 sec
    PFS : off ESN : off
    IN
      SPI : eeeeeeee
      Packets       : 0
      Octets        : 0
      Replay error  : 0
      Auth error    : 0
      Padding error : 0
      Rule error    : 0
    OUT
      SPI : ffffffff
      Packets       : 0
      Octets        : 0
      Seq lapped    : 0

  Total number of ISAKMP SA 1
  Total number of IPSEC SA 1
```
  
### 経路登録確認
FITELnetルータのCLIで、show ip route を実行し、経路情報を確認することができます。 <br>経路情報に '*'が表示されている場合は、経路情報が有効であることを表します。 
```
#show ip route

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, T - Tunnel, i - IS-IS, V - VRRP track,
       Iu - ISAKMP SA up, It - ISAKMP tunnel route, Ip - ISAKMP l2tpv2-ppp
       Dc - DHCP-client, L - Local Breakout
       > - selected route, * - FIB route, p - stale info

<snip>
S > * 192.168.1.0/24 [100/0] is directly connected, Tunnel1
<snip>
#
```

## 確認ファームウェア版数
F220シリーズ：Version 01.11(00)  
F70シリーズ：Version 01.09(00)