【Windows】リナックス環境での通信の不備をネットワーク設定の修正で直す手順

【Windows】リナックス環境での通信の不備をネットワーク設定の修正で直す手順
🛡️ 超解決

Windows上でLinux環境であるWSL Windows Subsystem for Linuxを利用している際、突然ネットワーク通信ができなくなり、業務が滞ることはありませんか。

これはWindows側のネットワーク設定や仮想ネットワークアダプターの不具合が原因で発生することが多くあります。

この記事では、WSL2のネットワーク通信の問題を解決するための具体的な手順を解説し、安定した開発環境を取り戻せるよう支援します。

【要点】Windows上のLinux環境でネットワーク通信を安定させる

  • WSL2仮想ネットワークのリセット: 仮想ネットワークアダプターの問題を解消し、通信を復旧できます。
  • DNS設定の調整: 名前解決の失敗を防ぎ、インターネットアクセスを正常化できます。
  • Windows Defender ファイアウォールの確認: 通信がブロックされるのを防ぎ、WSL2からの接続を許可できます。

ADVERTISEMENT

Windows上のLinux環境で通信が不安定になる原因

Windows Subsystem for Linux 2 WSL2は、軽量な仮想マシン技術を利用してLinuxカーネルを実行します。

そのため、WSL2のネットワーク通信はWindowsホストの仮想ネットワークアダプターを介して行われます。

この仕組みが、通信の不備を引き起こす主な要因となります。

仮想ネットワークアダプターの不具合

WSL2は、Hyper-Vが提供する仮想スイッチと仮想ネットワークアダプターを利用して、ネットワークに接続します。

これらの仮想デバイスに一時的な不具合や設定の破損が生じると、WSL2からの通信が阻害されます。

特にWindowsのアップデート後や、他の仮想化ソフトウェアとの競合で問題が発生することがあります。

DNS解決の失敗

WSL2は通常、WindowsホストのDNS設定を継承して名前解決を行います。

しかし、何らかの理由でこの継承がうまくいかない場合や、WindowsホストのDNSサーバー自体に問題がある場合、WSL2内で名前解決ができなくなり、インターネット上のリソースにアクセスできなくなります。

特定のウェブサイトやサービスに接続できない場合、DNS解決が原因の可能性が高いです。

ファイアウォールによる通信ブロック

Windows Defender ファイアウォールや、サードパーティ製のセキュリティソフトウェアが、WSL2からのネットワーク通信を不正なものと判断し、ブロックすることがあります。

特に新しいアプリケーションをWSL2内にインストールした場合や、Windowsのセキュリティ設定が変更された際に、この問題が発生しやすくなります。

特定のポート番号での通信ができない場合、ファイアウォールの設定を確認する必要があります。

お探しの解決策が見つからない場合は、こちらの「Windowsトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

Windows上のLinux環境のネットワーク設定を修正する手順

ここでは、WSL2のネットワーク通信の問題を解決するための具体的な手順を解説します。

以下の手順を順番に試すことで、多くの通信不備が解消できます。

  1. WSL2仮想ネットワークの確認とリセット
    まずWSL2の仮想ネットワーク状態をリセットし、再構築を促します。

    1. スタートボタンを右クリックし、「Windows ターミナル 管理者」または「PowerShell 管理者」を選択して起動します。
    2. 以下のコマンドを入力し、WSL2インスタンスをすべてシャットダウンします。
      wsl --shutdown
    3. 「スタート」メニューから「Hyper-V マネージャー」を検索して開きます。
    4. 左ペインの「仮想スイッチマネージャー」を選択します。
    5. 「WSL」または「WSL2」と名付けられた仮想スイッチがあれば、それを選択し、「削除」ボタンをクリックします。警告メッセージが表示されたら「はい」を選択します。
    6. Hyper-V マネージャーを閉じます。
    7. 再度、管理者権限でWindows ターミナルまたはPowerShellを起動し、以下のコマンドを実行して、WSL2インスタンスを起動します。これにより、仮想スイッチが自動的に再作成されます。
      wsl
    8. WSL2内でネットワーク通信が可能になったか確認します。例えば、ping google.comと入力して応答があるか確認します。
  2. DNS設定の調整
    WSL2インスタンス内で直接DNSサーバーを設定し、名前解決の問題を回避します。

    1. WSL2インスタンスを起動します。
    2. 以下のコマンドで、/etc/resolv.confファイルを編集します。
      sudo nano /etc/resolv.conf
    3. ファイルの内容を以下のように変更または追記します。
      nameserver 8.8.8.8
      nameserver 8.8.4.4
      これはGoogle Public DNSのIPアドレスです。お好みの安定したDNSサーバーを設定してください。
    4. ファイルを保存してエディターを終了します。nanoエディターの場合、Ctrl + Oで保存、Ctrl + Xで終了です。
    5. WSL2が/etc/resolv.confを自動生成しないように設定します。以下のコマンドで/etc/wsl.confファイルを編集または作成します。
      sudo nano /etc/wsl.conf
    6. ファイルに以下の内容を追記します。
      [network]
      generateResolvConf = false
    7. ファイルを保存してエディターを終了します。
    8. WSL2をシャットダウンし、再度起動して設定を適用します。
      wsl --shutdown
      wsl
  3. Windows Defender ファイアウォールの確認と設定
    WindowsのファイアウォールがWSL2の通信をブロックしていないか確認し、必要に応じて許可します。

    1. スタートボタンをクリックし、「Windows Defender ファイアウォール」と検索して開きます。
    2. 左ペインの「Windows Defender ファイアウォールを介したアプリまたは機能を許可」をクリックします。
    3. 表示されるリストで「Windows Subsystem for Linux」または「WSL」に関連する項目があるか確認します。もしあれば、「プライベート」と「パブリック」の両方にチェックが入っていることを確認します。
    4. 項目がない場合や、特定の通信がブロックされている疑いがある場合は、左ペインの「詳細設定」をクリックします。
    5. 「受信の規則」と「送信の規則」の両方で、WSL2に関連する規則が存在するか、またはブロックされていないか確認します。
    6. 必要に応じて、「新しい規則」を作成し、WSL2が利用するアプリケーションやポートの通信を許可する規則を追加します。規則の作成には、プログラムパス、ポート番号、プロトコルなどの情報が必要になります。
  4. ネットワークアダプターのリセット
    Windowsのネットワーク設定全体をリセットし、潜在的な問題を解決します。

    1. 「スタート」ボタンをクリックし、「設定」を開きます。
    2. 「ネットワークとインターネット」を選択します。
    3. 「ネットワークの詳細設定」をクリックし、「ネットワークのリセット」を選択します。
    4. 「今すぐリセット」ボタンをクリックし、確認のメッセージで「はい」を選択します。
    5. PCが自動的に再起動します。再起動後、WSL2のネットワーク通信が復旧したか確認します。

ネットワーク通信が改善しない場合の追加対処法

上記の手順を試してもWSL2のネットワーク通信が改善しない場合、以下の追加対処法を検討してください。

特定のポートでの通信ができない

原因: Windowsのファイアウォールや、ルーターのポートフォワーディング設定の問題が考えられます。

  1. ファイアウォール規則の確認
    Windows Defender ファイアウォールの「詳細設定」を開き、「受信の規則」と「送信の規則」で、特定のポートに対する規則が適切に設定されているか確認します。必要に応じて、新しい規則を作成し、対象のポートを許可します。
  2. ポート開放の確認
    ルーターの設定画面にアクセスし、WSL2内で起動しているサービスが利用するポートが、正しく外部に開放 ポートフォワーディング されているか確認します。

インターネット接続はあるが速度が遅い

原因: Windowsホストのネットワーク帯域の競合や、WSL2の仮想ネットワーク設定に起因する場合があります。

  1. ホストPCのリソース確認
    タスクマネージャーを開き、「パフォーマンス」タブでCPU、メモリ、ネットワークの使用率を確認します。他のアプリケーションがネットワーク帯域を過度に消費していないか確認してください。
  2. WSL2メモリ制限の調整
    WSL2に割り当てるメモリを調整することで、パフォーマンスが改善する場合があります。ユーザープロファイルフォルダに.wslconfigファイルを作成し、例えば[wsl2]の下にmemory=4GBのように記述してメモリ上限を設定します。

WSL2のIPアドレスが頻繁に変わってしまう

原因: WSL2はDHCPによりIPアドレスが自動割り当てされるため、WSL2の起動や再起動ごとに変更されることがあります。

  1. 固定IPアドレスの設定
    WSL2インスタンス内で固定IPアドレスを設定することは可能ですが、Windowsホストの仮想ネットワーク設定に依存するため、上級者向けの操作となります。通常は推奨されません。
  2. WindowsホストからのWSL2 IP取得
    WSL2のIPアドレスが変更されても、Windowsホスト側からwsl -d <ディストリビューション名> hostname -Iコマンドで現在のIPアドレスを取得できます。このコマンドをスクリプトに組み込むことで、動的なIPアドレスに対応できます。

ADVERTISEMENT

Windows 11とWindows 10でのWSLネットワーク設定の違い

Windows 11とWindows 10では、WSLの基本的な動作原理は同じですが、一部のインターフェースやデフォルト設定に違いがあります。

項目 Windows 11 Windows 10
WSLバージョン WSL2がデフォルトで推奨され、導入が簡素化されている WSL1とWSL2が混在するケースがあり、手動でのバージョン指定が必要な場合がある
ネットワーク設定画面 「設定」アプリでのネットワーク管理がより統合され、WSL関連の項目も確認しやすい コントロールパネルと「設定」アプリが混在しており、設定の場所がわかりにくい場合がある
Hyper-Vの利用 WSL2の利用にはHyper-V機能が必須であり、OSの機能としてより深く統合されている WSL2の利用にはHyper-V機能が必須だが、Windows Proエディションでのみ利用可能
DNS解決の挙動 WSL2のネットワークスタックが改善され、DNS解決の問題が比較的発生しにくい 一部環境でDNS解決の問題が報告されやすく、手動での設定変更が必要になる場合が多い

まとめ

この記事で解説した手順を実行することで、Windows上のLinux環境であるWSL2でのネットワーク通信の不備を解決できるはずです。

仮想ネットワークのリセット、DNS設定の調整、ファイアウォールの確認は、多くの通信問題に有効な対処法です。

安定したネットワーク環境を取り戻し、Linuxでの開発や作業をスムーズに継続できるようになります。

定期的にWSLのアップデートを確認し、最新の状態に保つことも、通信の安定性維持に役立ちます。

💻
Windowsトラブル完全解決データベース 起動不能、更新の不具合、動作が重い、設定の消失など、Windows 10/11のあらゆるトラブル解決手順を網羅しています。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。