0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

400km離れた実家の電話を自宅で受ける ~TailscaleでNVR500カスケード接続~

0
Posted at

この記事の要点

  • 400km離れた実家の固定電話を自宅で受けたい
  • Tailscaleを使って 実家と自宅のNVR500をカスケード接続できるか
  • 外線着信・発信、拠点間の内線通話が可能か

構築に至った経緯

もともと実家の迷惑電話監視を行うため、NVR500を利用していた。
実家との接続には、以前からTailscaleを利用していた。
理由は単純で、手軽にセキュアにVPN接続ができるから。

当時は「Tailscaleのサブネットルート広告は1つまで」という認識だったため、実家のネットワークだけをサブネットルート広告し、自宅側からNVR500へアクセスできるようにしていた。
現在、Personal プラン(無料)でも複数のサブネットルート広告が利用できるようになっている。

これにより、実家ネットワークと自宅ネットワークの双方をサブネットルート広告できるようになり、Tailscaleがインストールされていない端末同士でも相互通信が可能になった。

つまり、実家と自宅のNVR500も相互通信できる環境が整った ということになる。

Tailscaleを通して、実家と自宅のNVR500をカスケード接続できるのではないか?

と思い立ち、今回の検証を行った。


構成

7faeeb2e-8dcb-4d4a-a5d2-db6b1f17dca5.jpg

実家(拠点A) - 192.168.4.0/24

  • NTT加入電話(アナログ回線)
  • ZTE L13(楽天モバイルSIM)
  • NVR500(親機モード)
  • Raspberry Pi 3B+ (Tailscaleサブネットルーター)
  • アナログ電話機

自宅(拠点B) - 192.168.40.0/24

  • NTT ONU(光回線 DS-Lite)
  • NVR500(子機モード)
  • Raspberry Pi 3B+(Tailscaleサブネットルーター)
  • アナログ電話機

※自宅には加入電話、ひかり電話は引いていない


当然のことながら、各拠点のTailscale端末は同一アカウントにぶら下がる端末である。

以後、

  • 実家(拠点A) を 親機側
  • 自宅(拠点B) を 子機側

と表現する。

冒頭にも記したが、実家と自宅は直線距離で 約400km 離れている。


Tailscale サブネット広告の設定

  • 親機側にあるRaspberry Pi (192.168.4.200)
$ sudo tailscale up --advertise-routes=192.168.4.0/24 --accept-routes
  • 子機側にあるRaspberry Pi (192.168.40.110)
$ sudo tailscale up --advertise-routes=192.168.40.0/24 --accept-routes

上記実行後、TailscaleのWeb管理画面からそれぞれの端末の
Edit route settings」から該当のサブネットにチェックを入れる
ここでルートを承認しないと、サブネットルートは有効にならない。


NVR500 の設定

ルーティング

SSH、もしくはNVR500のweb管理画面の「コマンドの実行」から投入する。

  • 親機側
ip route 192.168.40.0/24 gateway 192.168.4.200
  • 子機側
ip route 192.168.4.0/24 gateway 192.168.40.110

相手ネットワーク向けのパケットをTailscaleサブネットルーターへ転送することで、Tailscale経由で相手ネットワークへ送ることができる。
これにより、ネットワーク配下に繋がっているすべての端末は、相手ネットワークを参照することが可能になる。

カスケード接続

親機側(192.168.4.1) 子機側(192.168.40.1)
  1. 親機側の「機器間アナログ通話モード」を「アナログ親機」に設定
  2. 子機側の「機器間アナログ通話モード」を「アナログ子機」に設定
  3. 子機側の「通信可能なアナログ親機」を「IPアドレス指定192.168.4.1 を指定
  4. 親機側の「アナログ子機の接続制限」に子機側のNVR500が出現することを確認し、子機情報の機器番号に「」を設定

カスケード接続の確認

  • 親機側
>show status analog extension
接続モード : 親機モード
機器番号    1 MACアドレス 00:a0:de:**:**:af 接続 IPアドレス localhost
機器番号    2 MACアドレス 00:a0:de:**:**:77 接続 IPアドレス 192.168.4.200
子機受け入れモード : 登録機器のみ
IPアドレス取得インターフェース : LAN1

子機は192.168.40.1ではなく、何故かサブネットルータ 192.168.4.200 で登録されている。
TailscaleのSNATを無効化しても表示は変化しなかった。
親機側のカスケード接続時はサブネットルーターを相手として認識しているように見えるが、詳細な動作は確認できていない。
MACアドレスは子機側のNVR500なので、とりあえずは 192.168.40.1 へ接続できているように見える。

  • 子機側
>show status analog extension
接続モード : 子機モード
親機情報 アドレス設定 固定 接続 IPアドレス 192.168.4.1
IPアドレス取得インターフェース : LAN1

親機側 192.168.4.1 への接続が確立していることが確認できる。


通話確認

カスケード接続ができたので、さっそく自分の携帯電話で親機側に掛けてみた。

携帯電話で親機側に電話を掛ける
↓
外線着信
↓
親機・子機鳴動(感動)
↓
子機側で受話器を取る
↓
ノイズ(最初の0.5秒くらい)(耳痛い・・・)
↓
2~3秒無音
↓
突然通話可能

という現象が発生。

因みに「ノイズ発生 → 2~3秒無音」の時、携帯電話側はまだコール中だった。

ここから色々と調査。


原因

ついにあることを思い出す。

親機側はナンバーディスプレイ契約をしている。

しかし、テスト用に使用していた子機側の電話機は・・・




ナンバーディスプレイ非対応 だった。

NVR500は このND非対応電話機に対して発信者番号通知を行おうとしていた。

その結果、電話番号通知の信号がノイズとして聞こえ、通話開始まで数秒の待ち時間が発生していたようだ。

結局は自分の設定ミスだった。


対応

一応、何をやったかだけでも記しておこうと思う。

  • 子機側 NVR500 の設定を変更

ナンバーディスプレイ対応機器を「使用しない」に設定する。
そう、これだけ。

結果

外線着信
↓
親機・子機で鳴動
↓
子機側で受話器を取る
↓
即通話可能

となった。

発生していた「ノイズ」「無音時間」の両方が解消した。

結果的に子機側で、

  • 外線着信
  • 外線発信
  • 拠点間内線通話

のすべてが利用できることを確認した。

まとめ

Tailscaleを利用した、NVR500カスケード接続が実現可能であることを確認できた。

外線通話、内線通話の品質も申し分なく、実用に耐えうるものであった。

結果として、約400km離れた実家の固定電話を自宅で受けられる環境を構築することができた。

受話時のノイズに関しては、ネットワークやTailscaleの設定を疑って数日調査したが、どうってことない、非常にアナログな原因だった。

「実家の電話を自宅で受けたい」と考えている方の参考になれば幸いである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?