Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxで「No route to host(ホストへのルートがありません)」接続エラーを解決する方法

Linuxで「No route to host(ホストへのルートがありません)」接続エラーを解決する方法

Linuxでサービスに接続しようとしたとき、「No route to host(ホストへのルートがありません)」というエラーは最も避けたいメッセージの一つです。このエラーは、システム上で動作しているローカルのサーバーデーモンであれ、何らかの理由でアクセスできないリモートサーバーであれ、コンピュータが対象のサーバーに到達できないことを示す広範なメッセージです。本記事では、Linuxにおける「no route to host」接続エラーの原因と、その具体的な解決方法を順を追って解説します。

「No Route to Host」エラーが発生する主な原因

このエラーが発生する理由は実にさまざまです。Linuxのネットワーキングは多層的で複雑な仕組みを持つため、問題がどこに潜んでいるのかを正確に特定するのは容易ではありません。以下に、代表的な原因とそれぞれの対処法を紹介します。

1. ホストがオフライン/サービスが起動していない

基本的なことのように思えますが、まず最初に確認すべきは、接続先のサーバーがオンライン状態であるかどうかです。メンテナンスのため一時的に停止している、あるいは障害が発生している可能性もあります。

Linuxで「No route to host(ホストへのルートがありません)」接続エラーを解決する方法

また、サービス自体が起動していないケースも少なくありません。自分で管理しているサーバーであれば、該当サービスが正常に稼働しているかを確認しましょう。systemdを採用している環境では、以下のコマンドでサービスの状態をチェックできます。

sudo systemctl status SERVICENAME

2. 接続先のポートが間違っている

誤ったポート番号に接続しようとしている可能性もあります。多くのシステム管理者は、SSHのような攻撃の標的になりやすいサービスを、デフォルトとは異なるポートで運用することでセキュリティを強化しています。

他人が管理するサーバーに接続する場合は、公式ドキュメントを確認するか、サポート窓口に問い合わせて正しいポート番号を把握しておきましょう。

自分のサーバーであれば、Nmapを使って実際にどのポートでサービスが待ち受けているのかを調査できます。

sudo nmap -sS your.server.ip

あまり一般的でないポートを使っていると思われる場合は、-p-オプションを付けて全ポートをスキャンすることも可能です。ただし、スキャンにはある程度時間がかかる点に注意してください。

3. iptablesが接続をブロックしている

意図せずiptablesの設定によって、そのポートへの接続がブロックされていることもあります。iptablesはサーバー側だけでなくクライアント側(デスクトップ)でも設定されるため、どちらで設定しても同じエラーメッセージが表示されます。両方のマシンでルールを確認するのが確実です。現在のiptablesルールを表示するには、次のコマンドを実行します。

sudo iptables -S

4. DNSの設定に問題がある

上記の方法で解決しない場合は、接続したいIPアドレスに対してpingを実行してみてください。コンピュータがDNSサーバーに正しく接続できていない可能性があります。

ping -c3 your.server.ip

pingによるIP直指定では成功するのに、ドメイン名を使った接続が失敗するなら、それは明確にDNSの問題です。

systemdを採用している環境では、systemd-resolve --statusコマンドでシステムが参照しているDNSサーバーを確認できます。結果はインターフェースごとに表示されるため、実際に接続に使っているインターフェースの項目を必ずチェックしてください。

Linuxで「No route to host(ホストへのルートがありません)」接続エラーを解決する方法

通常、DNS情報はDHCP経由で自動取得されます。しかし、静的IPアドレスを使用している場合や、ネットワーク構成が特殊な場合は、DNSを手動で設定する必要があるかもしれません。

「/etc/systemd/resolved.conf」ファイルを開き、DNS行のコメントを解除して、ルーターのIPアドレスまたは信頼できるDNSサーバーのIPを入力します。なお、systemdのフォールバックDNSとしては、FallbackDNSにGoogleのパブリックDNSが登録されています。

DNS=192.168.1.1

OpenRCなどsystemd以外のinitシステムを使用している場合は、「/etc/resolv.conf」にDNSの設定情報が記述されています。

nameserver 192.168.1.1

ファイルが空の場合は、ルーターのIPアドレスや、利用したい任意のDNSサーバーのIPを追記してください。

編集後は、ネットワークサービスを再起動するか、システム全体を再起動して変更を反映させましょう。

GUIでDNSを設定する方法

Network Managerを搭載したグラフィカルなデスクトップ環境を使用している場合は、GUIから簡単に接続情報を編集できます。ネットワークアプレットを開くか、システム設定画面にアクセスし、対象の接続を選択して「IPv4」タブを表示します。接続方式を「手動(Manual)」に切り替え、コンピュータ自身のIPアドレスと、ゲートウェイとしてルーターのIPアドレスを入力します。さらに、下部のDNS欄にルーターまたは任意のDNSサーバーのIPアドレスを記入すれば完了です。

ネットワーク設定・ホスト設定の誤りを確認する

上記以外にも、誤り得る設定項目はいくつか存在します。いずれも、コンピュータがサーバーへ接続できなくなる原因となり得ます。

まず、自分のコンピュータのネットワーク設定が正しいかを確認しましょう。設定ファイルの内容を再チェックするとともに、ブラウザなど別の手段でインターネットに接続できるかどうかも試してみてください。

特定のホスト名を使って接続している場合や、サーバー・クライアントのいずれかにホスト固有の設定を行っている場合は、両方のマシンが互いを認識できることを確認する必要があります。「/etc/hosts」「/etc/hosts.allow」「/etc/hosts.deny」の各設定ファイルを点検しましょう。

Linuxで「No route to host(ホストへのルートがありません)」接続エラーを解決する方法

最後に、サーバー側の設定も見直してください。サーバー側の設定ミスによって、クライアントからの正常な接続が拒否されているケースもあります。

これらのヒントを活用することで、「No Route to Host」エラーの原因となっていた問題を解消できるはずです。併せて、LinuxでWi-Fiネットワークを管理する方法や、ファイアウォールが送受信接続をブロックしていないかを確認する方法についても学んでおくと、トラブル発生時に迅速に対応できるでしょう。

  1. 【Windows 10】「DNSサーバーが応答しません」エラーの原因と12の解決方法を徹底解説

    現代において、ほとんどのビジネスパーソンや専門家はインターネットなしには仕事が成り立ちません。そのため、貴重な情報を収集しようとしている最中にインターネットへアクセスできなくなると、深刻な支障をきたします。特に、締め切りが迫った作業に追われているときはなおさらです。インターネット接続を妨げる厄介な原因のひとつが、「DNSサーバーが応答しません(DNS Server Not Responding)」というエラーです。まるで昔話に出てくるように、橋の下に座るトロールが「ここは通さぬぞ!」と言って行く手を阻むようなものです。しかし安心してください。この記事で紹介するシンプルなトラブルシューティングの

  2. Google Playストアで表示される「接続を再試行」エラーを解決する5つの対処法

    Android端末をしばらく使っている方なら、Google Playストアで「接続を再試行してください」というエラーメッセージを目にしたことが一度はあるのではないでしょうか。これはPlayストアで最も頻繁に報告されるエラーの一つで、何の前触れもなく突然表示されるのが厄介な点です。このエラーが出たとき、多くの人はまずインターネット接続を確認するでしょう。ところが、Wi-Fiやモバイルデータ通信に何も問題がないのにエラーが消えない場合、かなりストレスを感じてしまいますよね。そんなときに試したい具体的な解決策を5つ紹介します。Google Playストアのサーバーエラー「接続を再試行」を直す方法以下