このトピックでは、Linux Elastic Compute Service (ECS) インスタンスからパブリックIPアドレスにアクセスするときに「ネットワークに到達できません」というエラーメッセージが表示される問題をトラブルシューティングする方法について説明します。
問題の説明
Linux ECSインスタンスからパブリックIPアドレスにアクセスすると、[ネットワークに到達できません] というエラーメッセージが表示されます。
原因
インスタンスのデフォルトルートがなく、パケットの宛先IPアドレスが見つかりません。 これにより、インターネットアクセスが失敗します。
解決策
仮想プライベートクラウド (VPC) のECSインスタンスの場合、動的ホスト設定プロトコル (DHCP) を使用して動的IPアドレスとデフォルトルート設定を取得することを推奨します。 これにより、不適切な静的IP設定によるデフォルトルートの欠落によって引き起こされるほとんどのネットワーク問題が防止されます。
静的IPアドレスを動的IPアドレスに変更する方法については、「LinuxインスタンスのローカルネットワークインターフェイスコントローラーのDHCP設定チェックと修復」をご参照ください。
手順1: デフォルトゲートウェイのIPアドレスの取得
インスタンスがインスタンスのIPアドレス以外のIPアドレスにアクセスできない場合は、インスタンスと同じvSwitchに接続されている他のインスタンスからデフォルトゲートウェイのIPアドレスを取得します。 次の操作を実行します。
問題のあるインスタンスと同じvSwitchに接続されている正常なインスタンスにログインします。
次のコマンドを実行して、vSwitchに接続されているネットワークインターフェイスコントローラー (NIC) を表示し、MACアドレスを記録します。
ip addr次のようなコマンド出力が表示されます。 eth0という名前のプライマリNICは、問題のあるインスタンスと同じvSwitchに接続されており、NICのMACアドレスは
00:16:52:07:**:**です。1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdiscノキュー状態UNKNOWNグループデフォルトqlen 1000 リンク /ループバック00:00:**:**:**:**:**brd 00:00:**:**:** inet 127.0.0.1/8スコープホストlo valid_lft forever preferred_lft forever inet6 ::1/128スコープホスト valid_lft永遠にpreferred_lft永遠に 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq状態UPグループデフォルトqlen 1000 link/ether 00:16:52:07:**:** brd ff:ff:ff:ff:ff:ff inet 172.16。* 。***/24 brd 172.16.2.255スコープグローバルeth0 valid_lft 311974909sec preferred_lft 311974909sec inet6 fe80::216:52ff:fe07:1306/64スコープリンク valid_lft永遠にpreferred_lft永遠に次のコマンドを実行して、インスタンスメタデータサーバーからデフォルトゲートウェイIPアドレスを取得します。
説明問題のあるインスタンスがインスタンスメタデータサーバーの
100.100.100.200IPアドレスをpingできる場合は、問題のあるインスタンスで次のコマンドを実行して、eth0という名前のプライマリNICをデフォルトの出力として選択できます。 ビジネス要件に基づいて別のNICを選択できます。curl http:// 100.100.100.200/latest/meta-data/network/interfaces/macs/[$MAC_Address]/gateway説明[$MAC_Address]パラメーターを、前の手順で取得したMACアドレスに置き換えます。
手順2: デフォルトルートの設定
デフォルトルートを一時的に設定する場合、NICの設定を変更したり、ネットワークサービスを再起動したりする必要はありません。 ただし、システムがシャットダウンまたは再起動されると、デフォルトのルート設定は無効になります。
一時的なデフォルトルートの設定
次のコマンドを実行して、ルーティングテーブルにデフォルトルートを追加します。
ip route add default via [$Gateway_IP] dev [$Network]説明[$Gateway_IP]パラメーターを、手順1で取得したデフォルトのゲートウェイIPアドレスに置き換えます。[$Network]パラメーターを、問題のあるインスタンスと同じvSwitchに接続されている他のインスタンスで照会したデフォルトゲートウェイIPアドレスを持つNICに置き換えます。
次のコマンドを実行して、ルーティングテーブルを照会します。 デフォルトルートがルーティングテーブルに追加されているかどうかを確認します。
ipルート次のようなコマンド出力が表示されます。
172.16.2.253 dev eth0経由のデフォルト 172.16.2.253 dev eth0経由10.64.0.0/10 169.254.0.0/16 dev eth0スコープリンクメトリック1002 172.16.2.0/24 dev eth0 protoカーネルスコープリンクsrc 172.16.2.248説明上記のコマンド出力では、デフォルトゲートウェイは
172.16.2.253に設定され、デフォルト出口NICはプライマリNICであるeth0に設定されます。
一貫したデフォルトルートの設定
整合性のあるデフォルトルートを設定する場合は、NICの設定ファイルを変更する必要があります。 構成ファイルの変更をすぐに有効にするには、ネットワークサービスを再起動する必要があります。これにより、ネットワークが中断する可能性があります。 次の例では、CentOS 7.9が使用されます。 他のLinuxディストリビューションについては、対応するシステムドキュメントとネットワーク構成ドキュメントを参照してください。
デフォルトの出力として機能するNICの
/etc/sysconfig/network-scripts/ifcfg-eth0構成ファイルを開きます。 前の手順で記録したゲートウェイ情報を設定ファイルに入力し、ファイルを保存して閉じます。 たとえば、eth0という名前のプライマリNICがデフォルトの出力として使用され、ゲートウェイIPアドレスが172.16.2.253されます。デバイス=eth0 TYPE=イーサネット BOOTPROTO=static ONBOOT=はい STARTMODE=auto IPADDR=172.16.2.248 NETMASK=255.255.255.0 ゲートウェイ=172.16.2.253次のコマンドを実行して、ネットワークサービスを再起動します。
systemctl再起動ネットワーク