RTX1200で構成したネットワークにDeco M4でメッシュWifiを追加する

## 目的
- 既存のネットワーク環境に対して、TP-Link Decoの「ルーターモード」でメッシュWifiを追加構築したい
- Decoアクセスポイント間を有線LANで通信させたい


## ネットワーク構成図
![home_network.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57739/196fd945-9255-31ca-eabe-deb03432dac1.png)

- RTX1200のLAN2は「ホームゲートウェイ」であるPR-500KIと接続する。インターネット側
    - PPPoEをRTX1200から張るため、PR-500KIはPPPoEブリッジモードにしておく。過去のメモ: [NTT光ネクストにRTX1200経由で接続](https://qiita.com/haruyosh/items/d80c50c8d1a59d25b040)
- RTX1200の8ポートあるLAN1をVLAN分割する
    - 192.168.1.0/24が静的IPをもつ子たち用
    - 192.168.2.0/24がDeco用、ただし使われない。詳細は次節で述べる
- 真ん中のDecoが「メインDeco」となり、ルーター機能を持つ
    - メインDeco LAN1はインターネットに出られる側
    - メインDeco LAN2はメインDecoの管理するネットワーク(192.168.3.0/24)側。このサブネットはDeco管理画面から任意のものを指定可能
- 屋内配線経由でメインDecoと子供Decoとを接続する
    - 今回は余っているハブがなかったこと、RTX1200のLAN1にある8ポートを使い切る予定がなかったことから、RTX1200のLAN1をVLANに分割し、擬似的にスイッチングハブ相当の動作とみなした
    - もし物理的に別のスイッチングハブがある場合は、それをメインDecoのLAN2からカスケードさせれば良さそう


## 考慮が必要だった点
調査に当たって[@ma2shita](https://qiita.com/ma2shita)さんの[TP-Link Deco の Ethernet Backhaul を有効にするネットワークトポロジー](https://qiita.com/ma2shita/items/576b9dffbdab7101e786)を大いに参考にさせていただきました。先人の経験と知恵に感謝します。

必要な情報自体はTP-Linkの[Deco間をLANケーブルで繋いで利用できますか？(Ethernet Backhaul)](https://www.tp-link.com/jp/support/faq/1794/)の記事にすべて書いてある。とはいえ、手を動かして初めて理解できる仕様・動作も多かった。

- Decoのメイン機はそれぞれ2つのネットワークに足を伸ばす必要がある
- RTX1200のポートベースVLAN機能で2つのネットワークを設定する
    - サーバー用サブネット: 192.168.1.0/24を設定
    - 端末用サブネット: 192.168.2.0/24を設定
        - こちらにメッシュWifiを引く
- Decoの「ルーターモード」は自身がルーターになる。Deco自身が管理するサブネットが作られる (今回は192.168.3.0/24を指定)
- Decoの上位でDHCPサーバーを動かすのは非推奨
    - > 3. Decoユニットの上位にDHCPサーバーがあると、接続に支障をきたす場合があります。
    - RTX1200の192.168.2.0/24に対するDHCP設定は削除しておく
- 結果、屋内配線に接続した各端末、またDecoアクセスポイントに接続した端末は無線・有線にかかわらず、192.168.3.0/24に収容される
    - 192.168.2.0/24はRTX1200に定義だけされた状態で、基本的に端末から見えることはない。有線のときもDHCPブロードキャストに(メイン)Decoが返事してくれているのが面白い
    - MacBookに192.168.2.0/24の静的IPアドレスを振ってやったとしても、おそらく動作すると思われる(未検証)

## 下準備 - RTX1200へのシリアル接続
[昔のメモ](https://qiita.com/haruyosh/items/d80c50c8d1a59d25b040)を頼りに作業した。まずcorega CG-USBRS232Rからシリアル接続できるようにする。

[PROLIFIC DRIVERS](https://plugable.com/drivers/prolific/)に行って
> MacOS 10.15 Catalina, MacOS 10.14 Mojave, MacOS 10.13 High Sierra, MacOS 10.12 Sierra, OS X 10.11 El Capitan, 10.10 Yosemite, and 10.9 Mavericks (all 64-bit)
> PL2303 Prolific MacOS/OS X 10.9, 10.10, 10.11, 10.12, 10.13, 10.14, 10.15 – v2.0.0
Installer version & Build date: 2.0.0 (2019-12-04)

今回はmacOS 10.12(古い)を使用する。上記をダウンロード。zipに丁寧な説明PDFがあるのでそれを読む。インストールし、再起動する

MacとRTX1200をUSBシリアルケーブルで接続し、カーネルが認識するか、キャラクタデバイスが作成されるかを確認する。

Macの「システム情報」からUSB情報を確認。「システム情報」を先に起動してからUSBシリアルを接続した場合、macOS 10.12ではリフレッシュしてくれないようなので注意。

ちゃんとできた。

```
$ ls -l /dev/tty.u*
crw-rw-rw-  1 root  wheel   20,   6 12  6 18:50 /dev/tty.usbserial
```

接続する。

```
$ screen /dev/tty.usbserial 9600
(空エンター)
Password: (入力)
RTX1200 Rev.10.01.59 (Tue Aug 19 19:26:02 2014)
  Copyright (c) 1994-2014 Yamaha Corporation. All Rights Reserved.
  Copyright (c) 1991-1997 Regents of the University of California.
  Copyright (c) 1995-2004 Jean-loup Gailly and Mark Adler.
  Copyright (c) 1998-2000 Tokyo Institute of Technology.
  Copyright (c) 2000 Japan Advanced Institute of Science and Technology, HOKURIKU.
  Copyright (c) 2002 RSA Security Inc. All rights reserved.
  Copyright (c) 1997-2010 University of Cambridge. All rights reserved.
  Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.
  Copyright (c) 1995 Tatu Ylonen , Espoo, Finland All rights reserved.
  Copyright (c) 1998-2004 The OpenSSL Project.  All rights reserved.
  Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved.
  Copyright (c) 2006 Digital Arts Inc. All Rights Reserved.
  Copyright (C) 1994-2012 Lua.org, PUC-Rio.
  Copyright (c) 1988-1992 Carnegie Mellon University All Rights Reserved.
  Copyright (C) 2004-2007 Diego Nehab. All rights reserved.
  Copyright (c) 2005 JSON.org
00:a0:de:c0:51:7b, 00:a0:de:c0:51:7c, 00:a0:de:c0:51:7d
Memory 128Mbytes, 3LAN, 1BRI
> 
```

## よく使うコマンド
- screenを殺す `screen -X -S [session # you want to kill] quit`
    - screenセッション一覧 `screen -ls`
- 作業前後のおまじないというか安全確保 `pp disable all; (作業); pp enable 1`
- ppの選択を解除 `pp select none`
- 今のpp1の接続状態 `show status pp 1`
- DNSキャッシュのクリア `clear dns cache`
- PPPoEを張り直す `disconeect pp 1`

## RTX1200の設定

このページにYAMAHAルーターでの設定の流れが簡潔にまとめられている: [設定情報と不揮発性メモリへの保存](http://www.rtpro.yamaha.co.jp/RT/docs/console/save-config.html)。

設定にあたってYAMAHAの記事: [部門ごとに社内ネットワークを構成する](https://network.yamaha.com/setting/router_firewall/security/lan_side/divide_network-rtx1200)を参考にした。


```
# 経路設定
ip route default gateway pp 1
# VLAN設定
vlan port mapping lan1.1 vlan1
vlan port mapping lan1.2 vlan1
vlan port mapping lan1.3 vlan1
vlan port mapping lan1.4 vlan2
vlan port mapping lan1.5 vlan2
vlan port mapping lan1.6 vlan2
vlan port mapping lan1.7 vlan2
vlan port mapping lan1.8 vlan2
# LAN分割機能の設定
lan type lan1 port-based-option=divide-network
# LANインターフェースの設定
ip vlan1 address 192.168.1.1/24
ip vlan2 address 192.168.2.1/24
# WANインターフェース（ISPへの接続）の設定
pp select 1
 pp always-on on
 pppoe use lan2
 pp auth accept pap chap
 pp auth myname (ISP接続情報)
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp mtu 1454
 ip pp secure filter in 1020 1021 1030 1031 2000
 ip pp secure filter out 1010 1011 1012 1013 1014 1015 3000 dynamic 100 101 102
 103 104 105 106 107
 ip pp nat descriptor 1
 pp enable 1
# フィルターの設定	
ip filter source-route on
ip filter directed-broadcast on
ip filter 1010 reject * * udp,tcp 135 *
ip filter 1011 reject * * udp,tcp * 135
ip filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 1014 reject * * udp,tcp 445 *
ip filter 1015 reject * * udp,tcp * 445
ip filter 1021 reject 192.168.2.0/24 *
ip filter 1030 pass * 192.168.1.0/24 icmp
ip filter 1031 pass * 192.168.2.0/24 icmp
ip filter 2000 reject * *
ip filter 3000 pass * *
ip filter dynamic 100 * * ftp
ip filter dynamic 101 * * www
ip filter dynamic 102 * * domain
ip filter dynamic 103 * * smtp
ip filter dynamic 104 * * pop3
ip filter dynamic 105 * * submission
ip filter dynamic 106 * * tcp
ip filter dynamic 107 * * udp
# NATの設定
nat descriptor type 1 masquerade
# DHCPの設定
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.1.9-192.168.1.20/24
# DNSの設定
dns host any
dns server pp 1
```

## テスト項目
段階的にテストした。

### 最小構成でのテスト
- LAN2にPR-500KIを、LAN1.1(vlan1)にPCを接続し、インターネットに出られるか
- LAN2にPR-500KIを、LAN1.4(vlan2)にPCを接続し、インターネットに出られるか

### NASとの接続
- LAN1.2(vlan1)にNASを、LAN1.1(vlan1)にPCを接続し、NASと通信できるか
- LAN1.2(vlan1)にNASを、LAN1.4(vlan2)にPCを接続し、NASと通信できるか
    - これがなぜか失敗したため、一度コンフィグのフィルタをすべて削除してやり直した。本来、VLAN間は特別な設定なしに通信できる仕様

### メインDecoの接続
- LAN1.1(vlan1)にメインDecoのLAN1ポートを、LAN1.4(vlan2)にメインDecoのLAN2ポートを接続
    - iPhoneからDeco APに接続し、インターネットに出られるか
    - Nintendo SwitchからDeco APに接続し、スプラができるか(重要)

### Deco子機の接続
- LAN1.5 - LAN1.8を屋内配線に接続
- 屋内配線にDeco子機のLAN1ポートを接続
    - DecoアプリからDeco子機が有線接続していることを確認できるか
        - 子機1台目はすんなり成功
        - 2台目がうまくいかずハマった。ずっとエラー表示(Deco子機の赤点滅)が出続ける
            - DecoのLED表示の定義はここ: [What do the different LED colors meaning of Deco?](https://www.tp-link.com/us/support/faq/1464/)
            - 一度工場出荷状態にリセットし、メインDecoのある部屋に持ち込んで無線で親のDecoとセットアップを完了させた。その状態でDeco子機のLAN1に接続したところ有線を認識した
            - さらにこの子機を本来設置したい部屋に持って行き、LAN1に有線LAN接続して電源投入するとまたエラーの赤点滅
                - 一度有線を抜いた状態で電源投入し、白の正常表示を確認したのちに有線接続したところ、一時的に赤点滅から白、となってようやく成功した
            - 失敗した理由の仮説として、本来設置したかった部屋はメインDecoと距離があり、無線がほとんど届かなかった。有線を接続した状態で電源投入することはDecoが想定していないのかもしれないが、未検証