A-TAK.COM

PPPoEとIPoE併用でネットワークが全滅した

※Amazonのアソシエイトとして、A-TAK.COMは適格販売により収入を得ています
※本サイトではその他アフィリエイトも利用しております。

広告
シェア

自宅のNASやWebサーバーを外部に公開したくてネットワーク変更したらパケットが溢れて通信できなくなってましたが、なんとか解決しました。

前回の記事

そもそも何をしようとしたのか

やりたかったのは自宅のNAS(Synology DS923+)とWebサーバーとして使っているRaspberry Pi 5を外部からアクセスできるようにすることです。

以前使っていたNURO光の回線ではルーターにポート転送などの設定をして、特定の通信をNASに飛ぶようにすれば普通に使えていたのですが、現在、私が使っている楽天ひかりはIPv4 over IPv6の方式に「Ds-Lite(Dual-Stack Lite)」というものが使われており、仕組み上そもそもポート開放が出来ません(プロバイダ側でポート制御されていて手が出せない)。

こちらの記事を参考にさせてもらいました

この場合、自宅のルーターの設定を変更してPPPoEというレガシーな接続設定に変えるとポート開放も出来るのですが、インターネットの通信速度が低下してしまいます(IPv4 over IPv6の方が速い!)。

そこで外部からアクセスする機器はPPPoEを、他の機器はIPv4 over IPv6(IPoE)をそれぞれ併用できる環境を作ろう!というのが、そもそもの発端です。

IPoEとPPPoEを併用する

環境はこちらの記事を元に構築しました(ありがとうございます!)。

疲労コンパイル: v6プラスとIPv4(PPPoE)を併用する(その1) (dotsukareta.blogspot.com)

簡単に言うと、自宅のネットワークにルーターを追加してそこからPPPoEで接続する経路を作って、外部からアクセスしたい機器のデフォルトゲートウェイ(ネットワーク外に出て行く出口)に追加したルーターを指定する…という感じです。

元々はこんなネットワークだったのを…

こんな風にしました。

新しくTP-LinkのAX1800というルーターを購入してNew Routerのところにはそれが配置されています。

Router のLAN側のポートと New Router のWAN側のポートをLANケーブルで繋いでいます。さらに New Router のLAN側と Router のLAN側のポートもLANケーブルで繋いでいます。

Router にPPPoEパススルーの設定をし、New Router はPPPoEでインターネットに接続する設定をした。

New RouterはIP固定で192.168.1.100のようにし、NASやRaspberry PiはDHCP使わずにIP固定にしてデフォルトゲートウェイにNew RouterのIPを指定して、これらの機器がインターネット側と通信するときは New Router 経由になるようにしました。

前述の記事にあるようにNew Router のDHCPはオフにしIPv6パススルーは無効にしないとネットワーク繋がらなくなるのでこれも設定。

TP-LinkのルーターにはRaspberry Piに向けてのポート転送も設定しました。SynologyのNASはUPnPで自動的にルーターのポート開放するので設定不要でした。

TP-Link AX1800の設定画面

そしてネットワークが死んだ

これで外からNASやうちのサイトにもアクセスできたのでオッケーと思っていたのも束の間、しばらくすると自宅のSwitchBotがアクセス不能になり、アレクサも、そしてRaspberry PiもNASも全部不通に。さらにはTCLのテレビまで突然再起動したりしはじめました、やべえ。

スイッチングハブをみると猛烈な勢いで通信ランプが点滅。これはおかしい。

試しに新しく追加したルーターの電源を切ったり、LANケーブルを抜くと点滅が落ち着く。

デスクトップPCにWireSharkというソフトを入れて通信の状況を見てみました(通常は問題のある箇所に挟み込むような形でPCを接続しないとわからないが、今回は自宅のネットワーク全体怪しかったので、そのままやってみた)。

するとSSDPという通信が大量に発生していることがわかった。

↓こんなのが大量に流れている。

643175	354.891449	192.168.1.10	239.255.255.250	SSDP	143	M-SEARCH * HTTP/1.1 

詳しく見てみるとIPはEcho Show(アレクサ)でMACアドレスは今回追加したTP-Linkのルーターになっていた。

IGMPプロキシを止めたら解決

SSDPというのは実態はUDPのパケットで、UDPは動画配信なんかでも使われている技術。一斉にいろんなクライアントにデータ送るときなんかに使われる。

UDPはIGMPという仕組みを使ってデータの送り先を決めようになっている。ルーターからクエリというのがPC等に届いて、PCからはこの通信は受け取りたいんで俺にも送ってというのをルーターに返す。ルーターはその情報を元にどのUDPパケットをどの機器に送るか管理してるわけです。

で、通常はUDPはルーターを超えて通信を送らないのだけど、IGMPプロキシを使うと親のルーターからのクエリを受け取って転送されるようになります。

転送…怪しいと言うことでNew RouterIGMPプロキシをオフ。

すると、UDPパケットの氾濫は収まりネットワークも正常に!

(IGMPスヌーピングはむしろ無駄な通信を減らしてくれそうなので現在はオンにして使っている)

原因の推測

ここからは予想交えてなんだけど…

Router からLANに繋がっている各機器に対してクエリを送ってるはずで、New Router にも送られているはず。IGMPプロキシがONだとLAN側に再度New Routerがクエリを投げ直すと思われる。

そうするとそれを受け取ったRouterNew Router のWAN側にまたクエリを送ってしまって、それを受けたNew Router がクエリをLAN側に投げて…みたいなのを繰り返して無限増殖してしまっているのではなかろうかと推測した。

一応、IGMPプロキシをオフにして問題は解決したけど、最終的にはこのような構成にしています。

ONUの後にスイッチをおいて外からのPPPoEの通信は Router を通過しないようにした(PPPoEパススルーの設定も外した)。

試してないけど、この構成だとIGMPプロキシをオンにしていても問題にならないかもしれない。これだとIGMPのクエリはRouter 止まりでNew RouterのWAN側に来ないはずなので、ループは起きないと思われる。

NASだけ外に見せたい場合はもっとシンプルにできる

ちなみにNASだけを外に見せたい場合は、こんなルーター追加は不要ということもお伝えしておきます。

NASの機能によるけどNAS自体にPPPoEの設定が出来る機種があります。私が使っているSynology DS932+も設定ありました。そうするとNAS自身が直接インターネットに晒された状態になるので外部からNASにアクセスできるようになります。

ネットワークは難しい

結局、一週間ぐらいこの件でハマってた気がします。
ゴールデンウィーク中、結局こればかりやってた(汗)

おかげでなんとか問題は解決できたし、ノウハウも得られたし、目的であったNASを外からアクセスするというのが出来たので良かったですけどね。

広告

シェア

投稿日

カテゴリー:

投稿者:

カテゴリ一覧