HGW+IX2105で ひかり電話SIPとInterlinkのZOOT NATIVE<IPIP>を併存する

いつの間にかフレッツ光クロスでもひかり電話が使えるようになっていたので、申し込んでみたら罠にかかったので備忘録。

本来の見通し
====

ひかり電話用に10Gbpsの口が付いたルータ貸してもらえるじゃん！
IX2105じゃ力不足だったけど、IX2310買うの流石にきっついし、、、とりあえずはコイツで置き換えよ。

致命的な課題
====

送られてきたのは、XG-100NE。HomeGateWayでHGWとか呼ばれてるやつ。

よーし、設定してやるかー。
設定にPPPoEしか出てこないぞ？
なんだこれはー？


> [ZOOT NATIVE（IPv4共有型）対応ルーター一覧](https://faq.interlink.or.jp/faq2/View/wcDisplayContent.aspx?sso_step=1&id=93)
※NTT東日本、西日本から提供されるXG-100NE/PR-500KI/PR-400NE/PR-S300NE等のホームゲートウェイ（HGW）での接続には対応しておりません。


厳密には、契約してるのは「ZOOT NATIVE IPv4固定IP1個」の方なので [ZOOT NATIVE IPv4固定IP1個対応ルーター一覧](https://faq.interlink.or.jp/faq2/View/wcDisplayContent.aspx?id=272) の方なのだけれど、
どちらにしろ、、、　HGWとやらは対応していない。


つまり、、、HGW＋ZOOT NATIVEだとIPv6<IPoE>は通信できるけど、v4の通信ができねえ。
プロバイダ変えなきゃいけない？ PPPoEに戻るの嫌だよ…

追加で面倒な課題があるらしい
- ひかり電話はIPv4で動いてるらしい。。。
- SIPはNAT超え大変らしい

構成を考える
====

HGWだけじゃどうしようもない。仕方ないので、IXを継続投入しての構成で誤魔化しを図る。

#### NGN) - ONU - IX2105 - (devices)
元々の構成がこれ。
○　Interlink対応
×　1Gbpsルータで性能不足

HGWが居ないので、ひかり電話が使えない。。。
先達によると、HGW投げ捨てて ひかり電話を自前で処理する（必要な情報取ってきて自前のSIPサーバ立てる）方法もなくもないみたいだけど、流石にちょっと大変。
[NTT光ネクストのひかり電話へAsteriskを直接接続する](https://qiita.com/kmorimoto/items/d99cd9edcf7436eea7cc)

#### NGN) - ONU - HGW - (devices)
素直に入れ替えて詰んだ構成。
○　何も考えなくていい
×　v4繋がらんのじゃが

普通の人は多分、こうしている。
プロバイダ変えればワンチャンある・・・？

#### NGN) - ONU - HGW - IX2105 - (devices)
IX戻して、ONUとの間にHGWを挟んだ構成
○　何気にちゃんと動く
×　IXがボトルネックなのは改善してない

v4繋がらないと調べ物もままならなかったので、とりあえず この構成に。
まだまだ多いですね、v4のみのサイト。

#### NGN) - ONU - IX2105 - HGW - (devices)
IXを上位に置くと、ひかり電話周りの情報がDHCPv6-PDで降ってくるのをHGWに回さなきゃとからしくで色々に大変そう。
HGWが ひかり電話関係のv4通信してるらしいので、その辺はトンネル通さないように設定とかで大変。

#### NGN) - ONU - HGW - [IX2105, (devices)] }
最終的には、この形に落ち着いていくのかもしれない？
IXをv4のゲートウェイとしてのみ使う感じ。

あとはハブ繋いで並列に並べるってのもあるらしいんだけど、、、考えることが増えて普通に面倒。



[課題] iPhoneでSIP着信したい
====
着信を受けたい。
しかし、そのためには、iPhoneをHGWの下に置かねばならぬ。
が、HGWの下にいてはv4通信できない。
かといって、IXの下にいてはHGWに繋がらぬ。

何故って、ひかり電話はIPv4使ってて、しかし、IPv4のパケットはIXのトンネルによってプロバイダ側の踏み台まで飛ばされていくから。

図に起こすと

![ざっくり構成図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66847/4ca8640f-29a9-18a4-cc36-902f4a9086e5.png)

v6については、なんかいい感じに再配布されてるっぽいから放置でいいんだけれど
v4については
　HGWの下の192.168.1.x（図に書いてないが、ひかり電話の何かに繋がってる？）
　IXの下の192.168.0.x（出口はトンネルに繋がってる）
が別のネットワークとしている事になってるはずで。

◆１のとこだと

- ひかり電話は繋がる
- 外には繋がらない

◆２のとこだと

- 外には繋がる
- ひかり電話は繋がらない

という。

そういうネットワーク境界の問題を解決するために、世の中にはNATとかいうのがあるんだけれども、、、

・・・SIPはヘッダに接続先の生IPを仕込むらしくてな！
なので、NATでパケットレベルんとこを変換しても無駄という。
（SIPのヘッダを読んで強引に書き換えてくSIP-NATなんてのもあるらしい？）

普段使いのiPhoneでの着信を諦めるなら、以下の逃げ道が考えられてはいた。（が、専用端末は面倒だよね。）

- 図のようにHGWに物理電話繋ぐか（電話線の配線が必要になる）
- ◆１のとこに適当な物理VoIP電話機 or 適当な通話専用スマホ？ とか繋ぐか



解決策
---

原理原則・基礎に従って、ルーティングした。

### IX側で

```
ip route 192.168.1.0/24 192.168.1.1 GigaEthernet0.0

interface GigaEthernet0.0
  ip address dhcp
```
上流側0.0のv4のDHCP有効にして、HGWのDHCPからIPを受け取ってHGWと通信可能に。
また192.168.1.0/24宛の通信をHGW(192.168.1.1)にルーティングするように。
（これで ひかり電話…というかSIP周りのHGW宛の通信が通じる）

この時に`ip napt enable`すると通信は通るようになって解決しそうに見えるが、SIPがNAT超えできなくて着信できない。から`no ip napt enable`だ。

あと脳死コピペで`ip address dhcp receive-default`とかするとIXがDHCPで受け取ったデフォルトゲートウェイを反映しちゃってトンネルに通信流れなくなる。なった。
`receive-default`って、その名前のデフォルトプロファイルでもあるのかと思ったら、ただのオプションだった。


#### HGW側で
`DHCPv4サーバ設定`>`DHCP固定IPアドレス設定`から、IXに適当なv4の固定IP(192.168.1.215)を付与
IXのMACアドレスはHGWの`DHCPv4サーバ払い出し状況`で見れるが、`show arp hardware-address`で確認するのが確実。

`LAN側静的ルーティング設定`から 192.168.0.0/24 に対して先のIXのアドレスをゲートウェイに指定

このNTTの何か、編集して保存するだけだと有効にならないので、一覧に戻ったらチェックボックスをチェックして設定を押さねばならんことに注意。（ハマった
ちな、IXのDHCPのリリースと確認は`clear ip dhcp-client binding`と`show ip dhcp-client binding`でした。

#### 図で
![変更後の構成図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66847/6ac78a82-ad91-4225-9dfb-a3c3c245a45d.png)

HGWとIXの関係性が、物理接続とv6では上下なのに、v4では並列に並んでいるような変な構成になった。。。

HGWは（図に書いてないが）なんか ひかり電話のサーバか何かとv4で通信しているはずで
IXは下流にいながら上流に興味はなく、トンネルで勝手に外と通信している。

互いに互いを静的にルーティングしあってるので、各々の傘下のデバイスは相互に通信可能。
NATが問題ならば、NAT使わずに解決すれば良い。うまくいった。

気になったけど本当？
===
未確認なんだけど、ひかり電話はv4だけど、HGWに載ってるSIPサーバ自体はv6対応してるから
実はSIPクライアントで接続先にv4じゃなくv6で、HGWのアドレス入れると繋がるとかいう話、本当?
v6のアドレスどっから引っ張ってくるねん、でないな、となったんだけど、本当ならお手軽ではあるのかも？


この先とか
====
今の所、10GbE対応なデバイスが少ないので、間にIX残してもいいか、と この形になったけれど。
ゆくゆくはIXにぶら下がってるデバイスを全部HGWの下に移して、（HGWのデフォルトゲートウェイは指定できなそうなので） `0.0.0.0/0` をIXにルーティングしてトンネルに流す構成にする・・・のか？

苦労して開通させた電話番号ではあるけれど、基本、留守電対応になるので、市販の電話機を買って繋ぐ未来が見えている。
SIP喋って、いい感じに留守電して、文字起こししてSMSしてくれるようなデバイスないですかね。自分で作れ、わかる。


ネットワークはそんな得意でないので間違ってたら指摘してくださいな。

今回ので想いを新たにしたけれど、一家に一台、IX。は間違いない。
捨てようとしててごめん。

ひかり電話／HGWまわり調べて残してくれた 先達の皆様に感謝を。

その後・・・
---

遊んでたらinterlinkの『大量データ通信による帯域制御』の対象に見事選出され、予告なく唐突に低品質回線を2週間に渡って強いられる罰ゲームを受けることになり、ちょっと酷すぎたので契約解除。

これに選出されると回線負荷に関わらず、日常的にパケロスさせられて、まともに使えない。
ブラウジングするのに読み込み止まる。ネトゲは普段10msが不定期に500msくらいになる。Zoomも音声が途切れ途切れって指摘される。
途上国のネット回線って感じですごい。
TCPの再送あるっても、今時にそんな低品質回線は誰も想定してないっすよ。

公式に「時間経過以外の解除方法はないから、もう1回線契約してPPPoEマルチセッションしろ」とか書いてあるんだけど、米印で「光クロスはできないよ」とか書いてある（interlinkが光クロスだとPPPoE非対応なので。多分、網終端装置入れてない）。
流石に解約のほかなし。せっかく設定したけど、さよなら。。。