フロア間LANケーブルが断線(ショート)して引き直した話

2021年12月(1.5年前)にエアコンダクトを使って2Fのメインルーターから1FリビングまでLANケーブルを通しました。

その後、ルーターをRTX1300にし、回線もフレッツ光クロスにしたので、リビングのスイッチも10Gbps化して使っていました。

10Gbpsポートx2、2.5Gbpsポートx4のスイッチなので、幹線用に10Gbpsを使い、2.5Gbpsアダプタ経由で自分と同居人のPCを使いネトゲなどをしていたのですが、最近頻繁に切断するようになってしまいました。一度切れるけど放置すると数分で復帰し、また切れる、ような状態で同居人曰く10Gbps化した頃からということでRTX1300のログを見たりするも原因がわからず。

調べると、発熱がひどくて切れまくりだったBUFFALOのLXW-10G2/2G4と違い、QNAPのQSW-2104-2T/AZは熱くはならないものの切れるというレビューが散見され、キレたネトゲ廃人の同居人がネットが安定するならYAMAHAの高いスイッチに替えても良い(半額出す)と行ったので、業務用のSWX2220-10NT(以下SWX2220)を導入しました。

YAMAHAで揃えればルーターから一元管理/監視できるし、2.5Gbpsが倍の8ポートになるし、デカいけどその分、熱設計的にも安定するんじゃねぇの?という期待。

■スイッチを替えても安定せず…

まさかの再発。しかも遅い。回線もルーターも10Gbpsと余裕があるので、階下のPCではNICの限界である2.5Gbpsに近い値が上下とも出てたんですが、YAMAHAにしたら1Gbps前後。そして切れる。あと謎のループ発生エラーが頻発。SWX2220はインテリジェントスイッチなので色々設定項目があり、フロー制御、ストーム制御、ループ検出、リンク速度固定などあらゆる設定項目を試すも効果無し。

どちらかというと電気的な接触不良のような気まぐれな症状発生をするので、まさかと思いケーブルをテスターにかけると…

反対側をつないでないのに1-8番線のLEDが全点灯(写真撮り忘れたのでPhotoshopでイメージ合成)

このテスターはケーブル両端に測定機を取り付けるタイプなんですが、なぜか片方をつけただけで1〜8のランプが全点灯します(正常なケーブルだと全消灯)。もう片方をつなげてテストを実行すると全ペアが点灯(OK)。んー、でも明らかに正常なケーブルと挙動が違うぞと。点くはずのないタイミングで点くからショート??

ケーブルを2Fから1Fに敷くのは大仕事で、できれば二度とやりたくありません。なんか両端のちょろっと余らしてあるところに不具合があるならそこだけカットして成端し直して済ませるのですが、フルークのような高級テスターではないので異常箇所まではわからず。

ざっと調べたところ、このテスターなら「何mの位置でショート」みたいなことができるっぽい。

HIOKI (日置電機) LANケーブルハイテスタ 3665

HIOKI (日置電機) LANケーブルハイテスタ 3665

49,596円(12/22 13:51時点)
Amazonの情報を掲載しています

ン゛ーー、4,5万。払っても結局ショート箇所がど真ん中の位置だと判明したら結局全部引き直す手間は発生するので、「不具合箇所を知る」ためだけに買うのはちょっと…

そんなことを考えつつSWX2220の管理画面をいじっていると、なんと、「ケーブル診断」の項目が!YAMAHAさんスゲー、サスガ!「簡易的な診断のため、ケーブル障害位置までの距離や推定ケーブル長の診断結果には誤差があります。」とは書かれていますが、さっそく実行。

SWX2220の診断画面

反対側に機器がつながっていると正常となりますが、抜いた状態でやるとこのように「Pair3: Short」と出ました。Pair 1,2,4はOpen、つまりつながっていないということですね。端子抜いてあるのでそれが正しい。これで1ペアがショートしてることがハッキリしました。原因わかったけどケーブル引き直し確定して悲しい瞬間でもあります。ちなみにショート箇所位置は「100±10m」とありますが、他のペアをみると16〜17±10mなので、基本的にアテにはならない感じですね。物理的なケーブル長が16,7mなんでしょうが、ショートということは電気抵抗が極小なので推測不能ということなんでしょう。ちなみに検測する度に130mになったり不確定ですし、そもそもShort判定にならないことも何回かに一回ある感じ。実際の通信断が不定期に起きるように、かなり微妙なショート状態なんでしょう。わざわざSWX2220を2Fに移動してケーブルの反対側から測ってみても同じような数値でした。数値に違いが出て、せめてどちら寄りか推測できるかと思ったけど無理だったw。

総とっかえはイヤづら…中継コネクタという選択肢

2Fのエアコンダクトから外壁に出して化粧配管の中を通って地上近くまで下ろし、また1Fリビングのエアコンの化粧配管を通して室内に入れる、という二箇所の難所があります。両方やり直すのは骨が折れます。障害箇所を特定して最低限の引き直しに留め、現ケーブルと再ケーブルを中継コネクタでつなぐという案を考えました。一般に中継コネクタを経由するとインピーダンスが乱れて通信が遅くなると言われますが、実効速度としてどの程度落ちるものかリサーチ。

https://internet.watch.impress.co.jp/docs/column/shimizu/1188826.html

いくつかの実測記事をみるに、実際には誤差レベルで問題ないとされていたので、今回も中継コネクタ使用を決意。もし中継箇所が屋外だったら防水テープでグルグル巻きにして凌ごうと。ケーブルがCat6だったのでこちらをチョイス。

エレコム CAT6中継コネクタ LD-RJ45JJ6Y2

エレコム CAT6中継コネクタ LD-RJ45JJ6Y2

619円(12/22 13:51時点)
Amazonの情報を掲載しています

ではあとは障害箇所の特定です。外へ出て1F,2F両方のエアコンダクトをつなぐLANケーブルを真ん中辺りでズギャンと切断。エラーが残ったのは1F引き込み側でした。既に室内側の余剰部分もカット済みなので、おそらくエアコンダクトの引き込み部分かな。ここは施工後にエアコンを交換していて、業者の方が後で配管を通し直してるんです。その時に傷をつけたんじゃないかと。まぁ工事作業からしたら保証外の邪魔者でしかないので文句も言えないですね。新しい高機能エアコンで分解も大変でしたが、なんとか配管周りのパーツを外してダクトを見える状態にし、引き込み完了。

写真右下の辺りで切断して継ぎ直し
白くまくん、分解めんどくさす…

元のケーブルは配管でギチギチに挟まれ引いても押しても全く動かない状態でした。やはりここで圧がかかってたぽい。逆にダクトの反対側はスカスカだったので新たにそちらに通線。元のケーブルは直前でカットして反対側から思い切り引き抜きました。本当は一度成端して障害箇所を特定しようと思ってましたが、面倒くさくなって廃棄。

■まとめ

屋外配線なので劣化はあるかもと思ってましたが、今回はもう少しイレギュラーな障害だった気がします。まぁでも酷暑に入る前に対処できて良かったかなと。

QNAPは無罪で、お高いSWX2220に買い換えなくても良かった説もありますが、断線/ショート診断もできるし階下で使える2.5Gbpsポートも増えたのでまぁ良し。QNAPはいずれ他の部屋でも使うか、出張セッテイングなどで活用したいと思います。

翌2023.6.18追記

一晩置いたSWX220のログ100件をチェック。2FへとつながるPort1.10がリンクダウンしたりループした形跡はなし。大丈夫そう。こういうログが見られるのもインテリジェントスイッチの良いとこですね。

ちなみにPort1.2はChromecast with GoogleTV。定期的に3秒ほどダウンしてまた100Mbpsでリンクするということを繰り返してる模様。逆なら省電力中の更新チェックみたいな動作かと思うんですが、切れて3秒で復帰するのはなんなんでしょう。ログとしてはかなりノイズなので、下位のスイッチにつなぎ替えようかな…

Port1.8はRazer Blade 14のUSBアダプタですね。PCを使ってる時は2.5Gbpsでリンクする一方、スリープにすると100Mbpsになるっぽい。省電力ですかね。Port1.7もPC。Windowsの仕様でしょうか。SWX2220にもEEEという使ってないポートの省電力機能があるんですが、ポート毎にON/OFFできてポート7と8では無効になってるので、そちらの挙動ではない気がします。

2023/06/18 16:52:10: [ SESSION]:inf: Login succeeded as admin for HTTP: 192.168.0.53
2023/06/18 16:51:52: [ IF]:inf: Interface port1.8 changed state to up (2500-full)
2023/06/18 16:51:49: [ IF]:inf: Interface port1.8 changed state to down
2023/06/18 16:35:18: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 16:35:15: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 16:18:50: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 16:18:47: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 15:30:14: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 15:30:11: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 14:57:55: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 14:57:51: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 14:23:49: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 14:23:47: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 13:54:34: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 13:54:31: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 13:53:31: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 13:53:29: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 13:17:25: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 13:17:21: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 12:12:20: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 12:12:17: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 11:05:56: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 11:05:53: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 10:18:26: [ NTPC]:inf: Get the SNTP time 06/18/2023 10:18:26
2023/06/18 09:59:31: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 09:59:29: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 08:54:27: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 08:54:24: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 08:10:36: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 08:10:32: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 07:27:26: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 07:27:23: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 07:14:54: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 07:14:52: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 06:45:17: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 06:45:15: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 06:09:06: [ SESSION]:inf: Logout timer expired as (admin) for HTTP:192.168.0.7
2023/06/18 06:01:39: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 06:01:36: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 05:52:55: [ SESSION]:inf: Login succeeded as admin for HTTP: 192.168.0.7
2023/06/18 05:40:13: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 05:40:09: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 05:10:36: [ IF]:inf: Interface port1.7 changed state to up (2500-full)
2023/06/18 05:10:29: [ IF]:inf: Interface port1.7 changed state to down
2023/06/18 05:04:07: [ IF]:inf: Interface port1.8 changed state to up (100-full)
2023/06/18 05:04:05: [ IF]:inf: Interface port1.8 changed state to down
2023/06/18 04:59:50: [ IF]:inf: Interface port1.8 changed state to up (2500-full)
2023/06/18 04:59:46: [ IF]:inf: Interface port1.8 changed state to down
2023/06/18 04:47:35: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 04:47:31: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 04:35:09: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 04:35:05: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 04:21:27: [ IF]:inf: Interface port1.8 changed state to up (100-full)
2023/06/18 04:21:25: [ IF]:inf: Interface port1.8 changed state to down
2023/06/18 03:43:16: [ IF]:inf: Interface port1.8 changed state to up (2500-full)
2023/06/18 03:43:13: [ IF]:inf: Interface port1.8 changed state to down
2023/06/18 03:30:04: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 03:30:01: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 03:19:40: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 03:19:38: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 03:19:36: [ IF]:inf: Interface port1.7 changed state to up (2500-full)
2023/06/18 03:19:28: [ IF]:inf: Interface port1.7 changed state to down
2023/06/18 03:19:24: [ IF]:inf: Interface port1.7 changed state to up (1000-full)
2023/06/18 03:19:18: [ IF]:inf: Interface port1.7 changed state to down
2023/06/18 03:19:16: [ IF]:inf: Interface port1.7 changed state to up (2500-full)
2023/06/18 03:19:12: [ IF]:inf: Interface port1.7 changed state to down
2023/06/18 03:08:23: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 03:08:18: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 02:49:27: [ SESSION]:inf: Logout timer expired as (admin) for HTTP:192.168.0.53
2023/06/18 02:49:23: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 02:49:20: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 02:48:46: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 02:48:42: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 02:47:46: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 02:47:44: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 02:47:19: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 02:47:16: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 02:40:21: [ IF]:inf: Interface port1.8 changed state to up (100-full)
2023/06/18 02:40:19: [ IF]:inf: Interface port1.8 changed state to down
2023/06/18 02:39:24: [ IF]:inf: Interface port1.3 changed state to up (100-full)
2023/06/18 02:39:24: [ CONFIG]:inf: Configuration changed
2023/06/18 02:39:21: [ IF]:inf: Interface port1.3 changed state to down
2023/06/18 02:39:07: [ IF]:inf: Interface port1.4 changed state to up (1000-full)
2023/06/18 02:39:07: [ CONFIG]:inf: Configuration changed
2023/06/18 02:39:05: [ IF]:inf: Interface port1.4 changed state to down
2023/06/18 02:37:24: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 02:37:24: [ CONFIG]:inf: Configuration changed
2023/06/18 02:37:22: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 02:35:42: [ IF]:inf: Interface port1.5 changed state to up (1000-full)
2023/06/18 02:35:41: [ CONFIG]:inf: Configuration changed
2023/06/18 02:35:40: [ IF]:inf: Interface port1.5 changed state to down
2023/06/18 02:35:00: [ IF]:inf: Interface port1.7 changed state to up (2500-full)
2023/06/18 02:34:54: [ IF]:inf: Interface port1.6 changed state to down
2023/06/18 02:34:06: [ IF]:inf: Interface port1.2 changed state to up (100-full)
2023/06/18 02:34:04: [ IF]:inf: Interface port1.2 changed state to down
2023/06/18 02:33:55: [ CONFIG]:inf: Configuration changed
2023/06/18 02:33:48: [ IF]:inf: Interface port1.1 changed state to up (2500-full)
2023/06/18 02:33:47: [ CONFIG]:inf: Configuration changed
2023/06/18 02:33:45: [ IF]:inf: Interface port1.1 changed state to down
2023/06/18 02:33:33: [ IF]:inf: Interface port1.9 changed state to up (10000-full)
SWX2220-10NTのsyslogサンプル