Linuxでの「connect: Network is unreachable」エラーの解決方法

intermediate🌐 Networking2026-04-30| Linux (Ubuntu, Debian, CentOS, RHEL), Unix系システム, WSL2

Error Message

connect: Network is unreachable
#ネットワーク#linux#ゲートウェイ#ルーティング#netplan

エラーの読み解き

サーバーにpingを打とうとしたり、apt updateを実行したりした際、ターミナルにconnect: Network is unreachableという無愛想なメッセージが即座に返ってくることがあります。これは「Connection Timeout(接続タイムアウト)」とは異なります。タイムアウトはシステムが応答を待ってから発生しますが、このエラーはOSがパケットを送信しようとさえしなかったことを意味します。単純に、どこに送ればいいのか分からなくなっている状態です。

$ ping 8.8.8.8
connect: Network is unreachable

Linuxカーネルを郵便の仕分け人だと考えてみてください。宛先不明の郵便物を渡されたとき、「差出人に返送」する場所も「既定の出口」となるポストもなければ、仕分け人はその手紙を床に捨ててしまうしかありません。

根本原因:ルートの欠如

このエラーは、ほとんどの場合ルーティングテーブルの問題を指しています。これは、特定のIP範囲に対してどのネットワークインターフェース(eth0wlan0など)を使用すべきかをLinuxに教える内部リストです。インターネットにアクセスしようとしているのに「デフォルトゲートウェイ」が定義されていない場合、システムはすぐに諦めてしまいます。

主な原因は以下の通りです:

  • ネットワークインターフェースが物理的、または論理的に「Down(停止)」している。
  • DHCPによるIPアドレスやゲートウェイの割り当てに失敗している。
  • 静的IP設定(Netplanや/etc/network/interfaces)にタイポがある。
  • デフォルトルートが手動で削除されたか、VPNによって上書きされている。

解決方法

1. インターフェースが有効か確認する

まずは、ネットワークカードが稼働しているか確認しましょう。以下のコマンドを実行します:

ip addr show

インターフェース名(通常はenp0s3eth0wlp2s0など)を探します。<BROADCAST,MULTICAST>は表示されているが、UPという文字がない場合、そのインターフェースは無効になっています。以下のコマンドで有効化します:

sudo ip link set enp0s3 up

2. デフォルトゲートウェイの確認

ここで問題が見つかることがほとんどです。ルートを確認します:

ip route show

正常なシステムであれば、次のようにdefaultで始まる行が表示されるはずです:

default via 192.168.1.1 dev enp0s3 proto dhcp src 192.168.1.50 metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.50

出力が空、またはdefaultの行がない場合、システムは孤立しています。192.168.1.1が外部世界への出口であることを認識できていません。

3. 一時的な修正の適用

すぐにオンラインに戻る必要がありますか?カーネルにゲートウェイの場所を手動で教えることができます。ルーターのIP(通常は.1.254)が必要です。

sudo ip route add default via 192.168.1.1 dev enp0s3

すぐに8.8.8.8にpingを打って接続をテストしてください。成功すれば、原因が確定します。ただし、この設定は再起動すると消えてしまうので注意してください。

4. 設定を永続化する

再起動後も修正を維持するには、設定ファイルを更新する必要があります。

最新のUbuntu(Netplan)の場合

/etc/netplan/にあるYAMLファイルを開きます(ファイル名は環境によりますが、通常は0150で始まります):

sudo nano /etc/netplan/01-netcfg.yaml

最新のNetplan(バージョン0.100以降)では、非推奨となったgateway4キーではなく、routesブロックを使用することが推奨されています。以下の構造を使用してください:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.50/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

保存して変更を適用します:

sudo netplan apply

Debianまたは古いUbuntuの場合

/etc/network/interfacesを編集し、staticブロックにゲートウェイが含まれていることを確認します:

iface enp0s3 inet static
    address 192.168.1.50
    netmask 255.255.255.0
    gateway 192.168.1.1

経路のテスト

修正を適用したら、mtrを使ってパケットがネットワークを通過する様子を確認しましょう:

mtr -n 8.8.8.8

最初のホップにゲートウェイ(例:192.168.1.1)が表示され、その後に外部IPが続くようであれば、無事にオンライン復旧です。

予防策と仮想マシン

サブネットマスクの計算ミスは、ルーティングを壊す典型的な原因です。たとえば、/28のネットワークを定義したのにゲートウェイが.30にある場合、到達不能になります。私は静的IPを設定する前に、このサブネット計算機を使ってCIDR範囲を確認するようにしています。これにより、単純な入力ミスを防ぐことができます。

VirtualBoxなどの仮想マシンでLinuxを実行している場合は、「アダプタータイプ」を再確認してください。「ホスト専用アダプター」ではインターネットへの経路がありません。「ブリッジ」または「NAT」に切り替えるだけで、OS内部の設定を変更することなく「Network is unreachable」エラーが解消されることがよくあります。

Related Error Notes