はじめに (対象読者・この記事でわかること)

この記事は、LANケーブルを抜き差しした後に、特定のウェブサイトにはアクセスできるのに、一部のサイト(特にSNSや動画サイトなど)には繋がらないという奇妙な現象に遭遇した方を主な対象としています。また、ネットワークのトラブルシューティングに興味がある方や、MTU(Maximum Transmission Unit)値について詳しく知りたい方も対象です。

この記事を読むことで、LANケーブルの再接続後に発生する「一部サイトのみアクセスできない」という現象の主要な原因の一つを理解できます。さらに、MTU値がネットワーク接続に与える影響とその最適化方法を学び、ご自身でインターネット接続問題を解決できるようになります。私自身も同様のトラブルで半日以上悩んだ経験があり、その解決策を共有することで、同じ問題で困っている方の時間と労力を節約できれば幸いです。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。 - Windows/macOSなどの基本的なOS操作 - コマンドプロンプトまたはターミナルの基本的な利用経験

LANケーブル接続不良?一部サイトに繋がらない謎の現象とその背景

「LANケーブルを抜き差ししただけなのに、なぜかインターネット接続がおかしくなった…」 このような経験はありませんか?Googleの検索結果やシンプルなウェブページは閲覧できるのに、YouTubeやX(旧Twitter)、Amazonなどの特定のサイトにアクセスしようとすると、読み込みが途中で止まったり、「接続がタイムアウトしました」といったエラーが表示されたりする現象です。一見するとLANケーブルの物理的な問題やインターネット回線の障害のように思えますが、実際には別の原因が潜んでいることが多いです。

この奇妙な現象の背後には、MTU(Maximum Transmission Unit)値の不一致が隠れている可能性が高いです。MTUとは、ネットワーク上で一度に送受信できるデータパケットの最大サイズを指します。インターネット上のデータは、このパケットという単位に分割されてやり取りされます。MTU値が正しく設定されていない場合、特にサイズの大きいデータや複雑な暗号化通信(HTTPS)を含むウェブサイトのパケットが、途中でうまく処理されずに破棄されてしまうことがあります。

なぜLANケーブルの抜き差しでMTU値が影響を受けるのかというと、PCがネットワークインターフェースを再初期化する際に、MTU値のネゴシエーションがうまく行われない、あるいはルーターやプロバイダー側の設定とPC側の設定に食い違いが生じることが稀にあります。例えば、PPPoE接続ではMTUが1492バイトに制限されることが多いですが、PCがデフォルトの1500バイトのままだと、その差分の8バイトを処理しきれずにパケットが「フラグメンテーション(断片化)」されてしまいます。このフラグメンテーションが頻繁に起こると、パケットの再構築に失敗したり、通信効率が著しく低下したりして、結果として一部のサイトにアクセスできなくなるという問題が発生するのです。

MTU値の最適化によるトラブルシューティングと解決策

ここからは、LANケーブルを再接続した後に発生した「一部サイトにしか繋がらない」問題を、MTU値の最適化によって解決する具体的な手順を解説します。PC側の設定を変更することで、ネットワーク通信が正常に行われるように調整していきます。

ステップ1:現在のMTU値の確認と最適なMTU値の特定

まずは、現在お使いのPCのMTU値を確認し、同時にネットワーク経路で最適なMTU値を見つけ出します。このステップで特定した値が、後の設定で重要になります。

  1. コマンドプロンプト(Windows)またはターミナル(macOS)を開きます。

    • Windowsの場合:「スタートメニュー」で「cmd」と入力し、「コマンドプロンプト」を右クリックして「管理者として実行」を選択します。
    • macOSの場合:「Finder」→「アプリケーション」→「ユーティリティ」→「ターミナル.app」を起動します。
  2. 現在のMTU値を確認します。

    • Windowsの場合: cmd netsh interface ipv4 show subinterfaces 実行すると、利用可能なネットワークインターフェースとそのMTU値が表示されます。通常、「イーサネット」や「Wi-Fi」などの名前で表示される行の「MTU」欄を確認します。

    • macOSの場合: まず、ifconfig コマンドでネットワークインターフェース名を確認します(例: en0)。 bash networksetup -getMTU Ethernet # 有線接続の場合 (インターフェース名は環境により異なる) networksetup -getMTU Wi-Fi # 無線接続の場合 実行すると、現在のMTU値が表示されます。

  3. 最適なMTU値を特定します(Pingコマンドを使用)。 Pingコマンドを使って、パケットのフラグメンテーション(断片化)が起こらない最大のパケットサイズを見つけます。これにより、ネットワーク経路全体で許容される最適なMTU値の目安を特定できます。接続できないサイトのIPアドレスや、GoogleのDNSサーバー(8.8.8.8)など、安定して応答するIPアドレスを対象とします。

    • Windowsの場合: 以下のコマンドを、[パケットサイズ] を調整しながら実行します。最初はデフォルトMTUから28バイト引いた値(1500-28=1472、または1492-28=1464)から試します。ping -f オプションは、パケットのフラグメンテーションを禁止する意味です。 cmd ping -f -l 1472 8.8.8.8

      • 「要求がタイムアウトしました」または「Packet needs to be fragmented but DF flag is set.」と表示された場合:パケットサイズが大きすぎるため、[パケットサイズ] の値を少しずつ(例えば10ずつ)減らして再試行します。
      • 正常に応答が返ってきた場合:その[パケットサイズ] でパケットがフラグメンテーションなしで通過できたことを意味します。次に、その値から1ずつ増やして、フラグメンテーションなしで通過できる最大のパケットサイズを見つけます。
    • macOSの場合: 以下のコマンドを、[パケットサイズ] を調整しながら実行します。ping -D オプションはパケットのフラグメンテーションを禁止する意味で、-s オプションは送信パケットサイズを指定します。 bash ping -D -s 1472 8.8.8.8

      • 「Packet too big」または応答がない場合:[パケットサイズ] を少しずつ減らして再試行します。
      • 正常に応答が返ってきた場合:その[パケットサイズ] から1ずつ増やして、フラグメンテーションなしで通過できる最大のパケットサイズを見つけます。

    最適なMTU値の計算: 上記のテストで「フラグメントなしでpingが成功する最大のパケットサイズ」を見つけたら、それに28バイト(IPヘッダ20バイトとICMPヘッダ8バイトの合計)を加算したものが、ネットワーク経路で最適なMTU値の目安となります。 例:ping -f -l 1464 8.8.8.8 が成功し、ping -f -l 1465 8.8.8.8 が失敗した場合、最適なパケットサイズは1464バイトです。したがって、最適なMTU値は 1464 + 28 = 1492 となります。

ステップ2:PCのMTU値の変更

最適なMTU値が特定できたら、いよいよPCのMTU値を変更します。

  1. MTU値の変更コマンドを実行します。

    • Windowsの場合: ステップ1で確認したネットワークインターフェース名(例:「イーサネット」)と、特定した最適なMTU値を使用します。コマンドプロンプトを管理者として実行していることを確認してください。 cmd netsh interface ipv4 set subinterface "イーサネット" mtu=[最適なMTU値] store=persistent 例:最適なMTU値が1492だった場合 cmd netsh interface ipv4 set subinterface "イーサネット" mtu=1492 store=persistent store=persistent オプションは、PCを再起動してもこの設定が維持されるようにします。

    • macOSの場合: ステップ1で確認したネットワークサービス名(例:「Ethernet」)と、特定した最適なMTU値を使用します。ターミナルで以下のコマンドを実行します。 bash sudo networksetup -setMTU Ethernet [最適なMTU値] 例:最適なMTU値が1492だった場合 bash sudo networksetup -setMTU Ethernet 1492 このコマンドを実行すると、管理者パスワードの入力が求められます。

  2. PCを再起動し、動作確認を行います。 MTU値の設定変更を反映させるために、PCを再起動することを推奨します。再起動後、これまでアクセスできなかったウェブサイトに正常に接続できるか確認してください。

ハマった点やエラー解決

  • 「要求がタイムアウトしました」または「Destination Host Unreachable」: Pingコマンドで適切なMTU値を見つけられない場合、これはMTUが大きすぎるだけでなく、ルーターやプロバイダー側の問題、またはファイアウォールが原因の場合もあります。まずはLANケーブルの再接続、ルーターの再起動、PCの再起動など基本的なトラブルシューティングを試してください。
  • MTU値を変更しても改善しない: MTU値はあくまで一つの要因です。他にDNS設定、プロキシ設定、VPN接続、セキュリティソフトウェアのファイアウォール設定などが影響している可能性もあります。それぞれの設定を確認することも重要です。
  • 管理者権限が必要: MTU値の変更には、OSの管理者権限が必要です。コマンドプロンプトやターミナルを「管理者として実行」するのを忘れないでください。
  • ネットワークインターフェース名/サービス名がわからない:
    • Windows: ipconfig /all コマンドで物理アダプターの情報を確認したり、コントロールパネル > ネットワークと共有センター > アダプターの設定の変更 から確認できます。
    • macOS: システム設定 > ネットワーク で現在使用中の接続サービス名を確認できます。

解決策

Pingテストで特定した最適なMTU値をPCに設定することで、ネットワーク経路上のパケット処理がスムーズになり、これまでアクセスできなかったウェブサイトへの接続が可能になります。特にPPPoE接続環境では、MTU値を1492に設定することで解決することが多いです。また、可能であればルーター側のMTU設定も確認し、PCの設定と一致させることで、より安定した接続が期待できます。

まとめ

本記事では、LANケーブルを再接続した後に特定のサイトにしか繋がらないという、一見不可解なネットワーク問題の原因と解決策について解説しました。

  • 要点1: LANケーブルの抜き差し後に一部サイトに繋がらない問題は、MTU(Maximum Transmission Unit)値の不一致が原因である可能性が高いです。
  • 要点2: MTU値は、ネットワークで一度に送受信できる最大パケットサイズを定義し、これが適切でないとパケットのフラグメンテーションが頻発し、通信エラーを引き起こします。
  • 要点3: Pingコマンドを使ってネットワーク経路で最適なMTU値を特定し、OSのネットワーク設定を調整することで、多くの場合はこの問題を解決できます。

この記事を通して、読者はネットワーク接続のトラブルシューティングにおけるMTU値の重要性を理解し、ご自身で同様の問題に遭遇した際に解決に導くスキルを得られたはずです。ネットワークの深掘りは非常に奥深く、小さな設定一つで大きな変化が起こることを実感していただけたなら幸いです。

今後は、ネットワークトラブルのより詳細な診断方法や、IPv6環境でのMTUの課題、あるいはVPN接続時のMTU調整など、発展的な内容についても記事にする予定です。

参考資料