はじめに
有線LANに繋いだはずのLinuxマシンで、speedtestが130Mbpsしか出ない。
ケーブルはCat5e、ルーターも1Gbps対応、PCのNICも1Gbps対応のはず。
なのに実測値が100Mbps台で頭打ち。
この状態から原因を切り分けていった過程を、打ったコマンドとなぜそれを打ったかをセットで時系列に記録します。
先に結論だけ書くと:
- 実はWi-Fiと有線が両方つながっていた
- Wi-Fiを切って物理層を確認したところ、PC〜ルーター間は1Gbpsで正常だった
- 130Mbpsのボトルネックは「家の外」(ISP・混雑・ルーター処理)側だった
前提:ネット速度は3レイヤーで決まる
ネットが遅いとき、原因は次の3つのどこかに必ずある。
[物理層] ケーブル・NIC ←→ ルーターのリンク速度
[接続層] OSのインターフェース設定・IP・経路(有線/Wi-Fi)
[実効層] ISP・ルーター処理能力・外部混雑
どこが詰まっているかをレイヤーごとに潰していくのが切り分けの基本になる。
リンク速度と実効速度は別物
この記事で一番大事な概念整理。
-
リンク速度: PC〜ルーター間の最大通信速度(
ethtoolで見る) - 実効速度: インターネット全体で実際に出るスループット(speedtestで見る)
👉 リンク速度が1Gbpsでも、実効速度は100Mbpsしか出ないことがある
本記事のケースはまさにこれで、物理層(リンク速度)は正常なのに、実効層(ISP側)で詰まっていた。
Step 1: ip a — 何がつながっているか確認
最初にやるのは状況把握。ネットワークインターフェースが今どう見えているか。
ip a
見るべき項目:
- インターフェース名
-
enで始まる = Ethernet(有線) -
wlで始まる = Wireless(Wi-Fi)
-
- 各インターフェースに振られている
inetアドレス
打った理由
「speedtestが遅い」という現象から逆算すると、そもそも何の経路で通信しているのかが分からないと話が進まない。
有線で繋いだつもりでも、OSがWi-Fi経由で通信していたら有線の問題ではなくなる。
今回の結果
enp1s0: inet 192.168.18.23/24
wlp2s0: inet 192.168.18.15/24
有線とWi-Fiの両方にIPが振られていた。
Step 2: 両挿しという罠
ip a の出力で有線とWi-Fiが両方アクティブになっていた。これが最初の落とし穴。
両方つながっていると何が起きるか:
- OSはルーティングテーブルに従って片方を選んで通信する
- 「有線で測っているつもりが、実際はWi-Fi経由で測っていた」ということが起こり得る
- Wi-Fiの実効上限(今回は130Mbps程度)が、そのまま speedtest の結果になっていた可能性が高い
仮説:130Mbpsは有線の実力ではなくWi-Fiの実力だったのでは?
この仮説を検証するには、Wi-Fiを物理的に切って「有線だけの状態」を作る必要がある。
Step 3: nmcli radio wifi off — Wi-Fiを落とす
検証のためWi-Fiを無効化する。
nmcli radio wifi off
打った理由
仮説(実はWi-Fi経由で測っていた)を検証可能な状態に持ち込むため。
Wi-FiがONのままだと、いくら speedtest を打っても「どっちで測っているか」が確定できない。
補足
-
nmcliは NetworkManager の CLI -
radio wifi offはWi-Fi無線そのものをOFFにする(インターフェースを削除するわけではない) - 戻すときは
nmcli radio wifi on
この時点で ip a を再度打てば、wlp2s0 からIPが消えているはず。
Step 4: ethtool enp1s0 — 物理層のリンク速度を見る
Wi-Fiを切って有線のみにしたら、次は物理層が本当に1Gbpsで繋がっているかを確認する。
sudo ethtool enp1s0
打った理由
ここで 100Mb/s しか出ていなければ、原因はケーブルや NIC 側(物理層)に確定する。
逆にここが 1Gbps なら、物理層は無罪として消去できる。
ネット診断で最も事実が明確にわかるコマンド。CS的にも、PHYチップがネゴシエートした結果が直接読める。
見るべき項目
今回の出力から抜粋:
Speed: 1000Mb/s
Duplex: Full
Link detected: yes
Link partner advertised link modes: 1000baseT/Full
| 項目 | 今回の値 | 意味 |
|---|---|---|
Speed |
1000Mb/s |
PC側が認識しているリンク速度 = 1Gbps |
Duplex |
Full |
全二重(送受信同時)で正常 |
Link detected |
yes |
物理リンク確立済み |
Link partner advertised link modes |
1000baseT/Full を含む |
相手側(ルーター)も1Gbps対応 |
結果
物理層は完全に正常。 PC〜ルーター間は1Gbpsでリンクしている。
Step 5: 再測定 → 回線側が原因と確定
Wi-FiをOFFにして有線単独、かつ物理層は1Gbps確認済みの状態で speedtest を再実行。
結果は変わらず 130Mbps台。
ここから言えること
| レイヤー | 状態 | 根拠 |
|---|---|---|
| 物理層 | 正常 |
ethtool で 1000Mb/s / Full / Link yes |
| 接続層 | 正常 | 有線単独経路、IPも取れている |
| 実効層 | 詰まっている | 上2つが正常なのに130Mbps |
消去法で、ボトルネックは家の外(ISP・回線プラン・混雑・ルーターの処理能力)に確定する。
ケーブル・NIC・配線は全て無罪
この時点で次のものは全部消せる:
- Cat5eケーブル品質の問題
- 壁内配線の問題
- PCのNICの問題
- Linuxの設定の問題
原因切り分けとして、ここまで到達すれば対処方針が定まる(ISPプラン見直し/時間帯での再測定/ルーター交換の検討、など)。
補足:NetworkManager が挙動不審なときは再起動
今回の診断ではここまでで原因が切り分けられたが、接続層そのものが怪しいときのために1つ覚えておくと強いコマンド。
sudo systemctl restart NetworkManager
打つ場面
-
ip aで想定したインターフェースが出てこない -
nmcliの応答がおかしい - 有線/Wi-Fi の切り替えが効かない
- 設定変更後に状態が反映されない
なぜ使うか
NetworkManager は Linux のネットワーク設定を一元管理しているデーモン。状態の食い違いや設定反映のおかしさは、このプロセスを再起動すればだいたい戻る。Windows で言う「ネットワーク接続を切って繋ぎ直す」に近い強制リセット。
再起動中は一瞬ネットが切れるので、SSH 越しのリモート作業中は注意。
まとめ:3レイヤー・チートシート
次回「ネットが遅い」となったとき、上から順に見れば切り分けが進む。
| レイヤー | 確認コマンド | OKの目印 |
|---|---|---|
| 物理層 | sudo ethtool <iface> |
Speed: 1000Mb/s / Duplex: Full / Link detected: yes
|
| 接続層 |
ip a / nmcli device status
|
想定したインターフェースにだけIPが振られている |
| 実効層 | speedtest / fast.com | 契約プラン上限に近い値 |
そして一番忘れがちなポイントをもう一度:
リンク速度が1Gbpsでも、実効速度が1Gbpsとは限らない。
この2つが別物だと知っているだけで、「ネット遅い問題」に対する解像度がまったく変わる。