すべてのプロダクト
Search
ドキュメントセンター

:LinuxインスタンスからMetaserverにアクセスするためにcurlコマンドを実行できず、「curl: (7) Failed to connect to 100.100.XX.XX port 80: Connection timed out」というエラーメッセージが表示された場合はどうすればよいですか?

最終更新日:Dec 12, 2024

このトピックでは、次の問題の原因と解決策について説明します。curlコマンドを実行してLinux Elastic Compute Service (ECS) インスタンスからMetaserverにアクセスできず、「curl :( 7) Failed to connect to 100.100.XX.XX port 80: Connection timed out」というエラーメッセージが表示されます。

問題の説明

Linuxインスタンスでcurlコマンドを実行し、IPアドレス100.100.XX.XXを使用してMetaserver (メタデータサーバー) に接続すると、接続が失敗し、次のエラーメッセージが表示されます。

curl: (7) Failed to connect to 100.100.XX.XX port 80: Connection timed out

エラーメッセージは、前のIPアドレスのポート80への接続がタイムアウトして失敗したことを示します。

説明

LinuxインスタンスがMetaserverにアクセスできない場合、キーペアの設定、ホスト名の初期化、ホストの初期化など、インスタンスの特定の初期化操作が失敗することがあります。

原因

ほとんどの場合、この問題は、Linuxインスタンスのネットワーク環境に例外が存在し、インスタンスが宛先IPアドレスへのネットワーク接続を確立できないために発生します。 Linuxインスタンスのネットワーク環境には、次の例外が存在する可能性があります。

  • 異常なネットワーク設定: Linuxインスタンスがネットワーク接続の確立に失敗する原因となります。 その結果、インスタンスはMetaserverに接続できません。 この問題を解決するには、ネットワーク構成をDynamic Host configuration Protocol (DHCP) にリセットします。 詳細については、このトピックの「ネットワーク設定をDHCPにリセットする」をご参照ください。

  • Metaserverへのアクセスをブロックするファイアウォールルール: Linuxインスタンスが100.100.**.** を使用してMetaserverにアクセスできなくなります。 システムファイアウォールの設定を確認し、一時的にシステムファイアウォールを無効にして、ファイアウォールの設定によってLinuxインスタンスがMetaserverにアクセスできないかどうかを確認できます。 詳細については、このトピックの「システムファイアウォールの無効化」をご参照ください。

解決策

ネットワーク設定をDHCPにリセット

この例では、Red Hatシリーズオペレーティングシステムを実行するLinuxインスタンスを使用して、ネットワーク構成をDHCPにリセットする方法を説明します。 他のLinuxディストリビューションでネットワーク構成をDHCPにリセットする方法については、「LinuxイメージでネットワークをDHCPとして構成する方法」をご参照ください。

  1. Red Hatシリーズオペレーティングシステムを実行するLinuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、ネットワーク設定ファイルを変更します。

    sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 
  3. 次のネットワーク設定を変更します。

    BOOTPROTO=dhcp
    DEVICE=eth0
    ONBOOT=yes
    STARTMODE=auto
    TYPE=Ethernet
    USERCTL=no
  4. Escキーを押して挿入モードを終了します。 :wqと入力し、Enterキーを押してファイルを保存して閉じます。

  5. ネットワークサービスを再起動します。

    • インスタンスがCentOS 6またはRed Hat 6を実行している場合は、次のコマンドを実行します。

      sudo service network restart
    • インスタンスがCentOS 7、Red H、Anolis 7、またはAlibaba Cloud Linux 2を実行している場合、次のコマンドを実行します。

      sudo systemctl restart network
    • インスタンスがCentOS 8、Red Hat 8、Anolis 8、Fedora 33、Fedora 34、Fedora 35、またはAlibaba Cloud Linux 3を実行している場合、次の操作を実行します。

      1. 次のコマンドを実行して、すべてのネットワークインターフェイスコントローラー (NIC) 設定をリロードします。

         sudo nmcli c reload
      2. 次のコマンドを実行してNICを有効にします。

        sudo nmcli d connect eth0

システムファイアウォールを無効にする

システムファイアウォールを有効または無効にするために使用されるコマンドは、Linuxディストリビューションによって異なります。 実際のシナリオに基づいて、次のコマンドを変更します。

CentOS 5およびCentOS 6

次のコマンドを実行してシステムファイアウォールを有効または無効にし、CentOS 5およびCentOS 6のシステムファイアウォールのステータスを確認します。

  • システムファイアウォールを有効にします。

    sudo service iptables start
  • システムファイアウォールを無効にします。

    sudo service iptables stop
  • システムファイアウォールの状態を確認してください。

    sudo service iptables status

CentOS 7、Red Hat 7、Alibaba Cloud Linux 2

次のコマンドを実行して、CentOS 7、Red Hat、およびAlibaba Cloud Linux 2でシステムファイアウォールを有効または無効にし、システムファイアウォールのステータスを確認します。

  • システムファイアウォールを有効にします。

    sudo systemctl start firewalld.service
  • システムファイアウォールを無効にします。

    sudo systemctl stop firewalld.service
  • システムファイアウォールの状態を確認してください。

    sudo firewall-cmd -- state

Ubuntu

次のコマンドを実行して、システムファイアウォールを有効または無効にし、Ubuntuのシステムファイアウォールのステータスを確認します。

  • システムファイアウォールを有効にします。

    sudo ufw enable
  • システムファイアウォールを無効にします。

    sudo ufw disable
  • システムファイアウォールの状態を確認してください。

    sudo ufw status

Debian

デフォルトでは、Debianにファイアウォールはインストールされていません。 ファイアウォールがDebianにインストールされている場合は、すべてのファイアウォールルールを削除してトラフィックのブロックを解除できます。 以下の操作を実行します。

重要

すべてのファイアウォールルールを削除する前に、ルールをバックアップします。

  1. 次のコマンドを実行して、ファイアウォールルールをバックアップします。

    touch [$Iptables]
    sudo iptables-save > [$Iptables]
    説明

    [$Iptables] は、ファイアウォールルールのバックアップファイルを保存するディレクトリを指定します。

  2. 次のコマンドを実行して、すべてのファイアウォールルールを削除します。

    sudo iptables -F