Linux システムにおける一般的なネットワークの問題と解決策

1.ネットワーク接続を確認します。ping コマンドを使用して、ターゲット アドレスに到達できるかどうかをテストします (例: ping www.google.com)。

ping が失敗した場合は、DNS 解決の失敗またはネットワーク構成の問題が原因である可能性があります。

2. DNS 解決を確認する: nslookup または dig コマンドを使用して、DNS 解決が正常かどうかをテストします (例: nslookup www.google.com) DNS 解決が失敗した場合は、DNS サーバーを置き換えるか、ローカル DNS 構成を確認してください。

DNS 設定手順:

次のコマンドを入力して、resolv.conf ファイルを開きます。

sudo nano /etc/resolv.conf

ファイル内のネームサーバー行を確認します。この行には、DNS 解決に使用される DNS サーバーの IP アドレスがリストされています。たとえば、次のサンプル ファイルには 2 つの DNS サーバーがリストされています。

nameserver 8.8.8.8 nameserver 8.8.4.4

DNS サーバーを変更する必要がある場合は、resolv.conf ファイルを編集して、nameserver 行の IP アドレスを、使用する DNS サーバーの IP アドレスに変更します。

ファイルを保存して終了し、ping または nslookup を試して、DNS 解決が正常かどうかをテストします。

Linux システムが NetworkManager を使用している場合、resolv.conf ファイルが別のファイルを指すか、動的に生成される可能性があることに注意してください。この場合、nmcli コマンドを使用して DNS サーバーの構成を確認および変更できます。たとえば、次のコマンドは、Google のパブリック DNS サーバーを優先 DNS サーバーとして追加します。
sudo nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8, 8.8.4.4"

このうち、「有線接続 1」はネットワーク接続の名前、ipv4.dns は DNS サーバーのアドレスです。変更を保存した後、変更を有効にするには、ネットワーク接続を再起動するか、次のコマンドを使用する必要があります。

sudo systemctl restart NetworkManager

3.ネットワーク カードのステータスを確認します。ifconfig または ip コマンドを使用して、ifconfig eth0 などのネットワーク カードのステータスを確認します。ネットワーク カードが有効になっていない場合、またはネットワーク カードに障害がある場合は、ネットワーク カードを再度有効にするか、ネットワーク カードを交換してみることができます。

トラブルシューティングと解決:

ネットワーク構成ファイルを確認します。 /etc/network/interfaces や /etc/sysconfig/network-scripts/ifcfg-eth0 (例として eth0) などのファイル内のネットワーク構成が正しいかどうかを確認します。ネットワーク構成ファイル内のIPアドレス、サブネットマスク、ゲートウェイ、DNSなどの情報がネットワーク環境と一致していることを確認してください。

ネットワーク カードがアクティブ化されているかどうかを確認する: ifconfig -a コマンドを使用して、ネットワーク カードがアクティブ化されているかどうかを確認します。ネットワーク カードがアクティブ化されていない場合は、ifup eth0 コマンドを使用してネットワーク カードをアクティブ化できます。

ネットワーク リンクを確認する: ping コマンドを使用して、ネットワーク リンクがスムーズかどうかを確認します。他のデバイスに ping できない場合は、ネットワーク ケーブル、スイッチ、その他のネットワーク デバイスが正常に動作しているかどうかを確認できます。

ファイアウォールを確認する: Linux システムのファイアウォール設定を確認して、ネットワーク通信がブロックされているかどうかを確認します。iptables -L コマンドを使用すると、現在のファイアウォール設定を表示できます。

ネットワークサービスの確認:ネットワークサービスが開始されているかどうかを確認します。systemctl status network コマンドを使用して、ネットワーク サービスのステータスを確認します。

ネットワーク カード ドライバーを確認します。 lspci -v コマンドを使用して、ネットワーク カード ドライバーが正しくインストールされているかどうかを確認し、ドライバーが現在の Linux カーネル バージョンをサポートしているかどうかを確認します。

4.ファイアウォール構成を確認します。 iptables -L などの iptables コマンドを使用して、ファイアウォール ルール構成を確認します。ファイアウォール ルールに問題がある場合は、ルールを調整するか、ファイアウォールを無効にしてテストすることができます。

ルールの設定とトラブルシューティングの基本的な手順は次のとおりです。

現在の iptables ルールを表示する: iptables -L コマンドを使用して、現在の iptables ルールをすべて表示します。

iptables ルールの構成: iptables ルールの構成には、ルールの追加、削除、変更などの操作が含まれます。たとえば、SSH 接続を許可するルールを追加するには、次のコマンドを使用できます。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

このコマンドは、TCP ポート 22 (SSH ポート) での接続を許可するルールを INPUT チェーンに追加します。

iptables ルールの保存: デフォルトでは、iptables ルールは再起動後に自動的に保存されません。iptables ルールを保存するには、次のコマンドを使用できます。

/sbin/service iptables save

また

/usr/libexec/iptables/iptables.init save

これにより、現在の iptables ルールが /etc/sysconfig/iptables ファイルに保存され、システムの再起動後に自動的にロードされます。

iptables ルールの削除: 次のコマンドを使用して iptables ルールを削除できます。

iptables -D INPUT -p tcp --dport 22 -j ACCEPT

このコマンドは、SSH 接続を許可する INPUT チェーン内のルールを削除します。

ファイアウォールのトラブルシューティング: サーバーに接続できない場合は、ファイアウォール ルールの構成が正しくないことが原因である可能性があります。この場合、次の手順に従って問題をトラブルシューティングできます。

a. サーバー上のファイアウォール ルールに接続を許可するポートが含まれていることを確認します。

b. iptables ルールがネットワーク インターフェイス構成やルーティング テーブルなどの他のネットワーク構成と一致していることを確認します。

c. サーバーで SELinux が有効になっているかどうかを確認し、有効になっている場合は、SELinux ポリシーが必要なポートへの接続を許可していることを確認する必要があります。

d. ファイアウォールやルーターなどの他のネットワーク デバイスがサーバーとクライアント間の接続をブロックしていないことを確認します。

iptables ログを監視する: iptables がネットワーク トラフィックをブロックすると、ログ内の関連情報を表示できます。次のコマンドを使用して iptables ログを表示できます。

tail -f /var/log/messages | grep iptables

これにより、iptables 関連のログ情報が表示されます。

iptables ログを有効にする: iptables ルールを変更することでログを有効にできます。たとえば、次のルールを INPUT チェーンに追加できます。

iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

これにより、ブロックされた各パケットをログに記録し、ログの先頭に「iptables Deniet: 」を付けるルールが INPUT チェーンに追加されます。

ファイアウォール管理ツールを使用する: iptables ルールの構成と管理では、firewalld や ufw などの一部のファイアウォール管理ツールを使用して操作を簡素化できます。これらのツールは、ファイアウォール ルールを構成するための簡単なインターフェイスを提供します。

5.ルーティング設定を確認します。route コマンド (route -n など) を使用して、ルーティング テーブルの設定を確認します。ルーティング テーブルの構成が間違っている場合は、正しいルーティング ルールの追加を試みることができます。

ルーティング設定エラーを確認して解決する手順は次のとおりです。

現在のルーティング テーブルを確認する: 現在のルーティング テーブルを表示するには、ip Route show コマンドを使用します。これにより、現在システム内にあるすべてのネットワーク インターフェイスのルーティング情報が表示されます。

ネットワーク インターフェイスの IP アドレスを確認する: ip addr show コマンドを使用して、現在のシステムのネットワーク インターフェイスの IP アドレスとその他の関連情報を表示します。各インターフェイスに、ネットワーク トポロジ内の他のデバイスと一貫性のある一意の IP アドレスがあることを確認してください。

デフォルト ゲートウェイを確認する: 現在のシステムのデフォルト ゲートウェイを表示するには、iproute showdefault コマンドを使用します。デフォルト ゲートウェイの IP アドレスがネットワーク トポロジ内の他のデバイスと一致していることを確認してください。

スタティック ルートを追加する: スタティック ルートを追加して特定のネットワークに到達できるようにする必要がある場合は、ip Route add コマンドを使用できます。たとえば、10.0.0.0/24 ネットワークを 192.168.1.1 ゲートウェイに追加する場合は、次のコマンドを使用します。

ip route add 10.0.0.0/24 via 192.168.1.1

スタティック ルートの削除: スタティック ルートを削除する必要がある場合は、ip Route del コマンドを使用できます。たとえば、上で追加したルートを削除する場合は、次のコマンドを使用できます。

ip route del 10.0.0.0/24 via 192.168.1.1

ルーティング エラーを確認する: それでもターゲット ネットワークに到達できない場合は、ルーティング エラーがないか確認します。たとえば、10.0.0.0/24 ネットワークにアクセスしようとしてアクセスできない場合は、次のコマンドを使用してルーティング エラーを確認できます。

traceroute 10.0.0.1

これにより、リクエストがネットワーク内のどのデバイスに送信され、どこで停止したかが表示されます。

ルーティング エラーを修正する:traceroute コマンドの出力に基づいて、ルーティング エラーを特定して解決できます。たとえば、traceroute コマンドが 1 つのデバイスで停止した場合、そのデバイスのルーティング テーブルと設定を調べて問題を特定できます。

6.ネットワーク サービスを確認します。 netstat -tln などの netstat コマンドを使用して、ネットワーク サービスのステータスを確認します。ネットワーク サービスが開始されていないか、障害がある場合は、サービスを再起動するか、構成を調整してみてください。

ネットワーク サービスの障害を確認して解決する手順は次のとおりです。

サービスのステータスを確認する: systemctl status コマンドを使用して、サービスのステータスを確認します。たとえば、Apache HTTP サーバーのステータスを確認する場合は、次のコマンドを使用できます。

systemctl status httpd

これにより、Apache HTTP サーバーが実行されているかどうか、有効になっているかどうかなど、Apache HTTP サーバーのステータスが表示されます。

サービス構成を確認する: cat コマンドを使用して、サービスの構成ファイルを表示します。たとえば、Apache HTTP サーバーの構成ファイルを表示したい場合は、次のコマンドを使用できます。

cat /etc/httpd/conf/httpd.conf

これにより、Apache HTTP サーバーの構成ファイルが表示されます。

ネットワーク ポートを確認する: netstat コマンドを使用して、ネットワーク ポートのステータスを確認します。たとえば、Apache HTTP サーバーのリスニング ポートを確認する場合は、次のコマンドを使用します。

netstat -anp | grep :80

これにより、Apache HTTP サーバーがポート 80 でリッスンしているかどうかが表示されます。

ファイアウォールを確認する: サーバーを保護するためにファイアウォールを使用している場合は、ファイアウォールが必要なサービスの通過を許可していることを確認する必要があります。たとえば、iptables ファイアウォールを使用しており、HTTP サービスの通過を許可したい場合は、次のコマンドを使用します。

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

これにより、ポート 80 を介した HTTP サービスが許可されます。

サービスを再起動する: サービスが失敗した場合は、サービスを再起動して問題の解決を試みることができます。たとえば、Apache HTTP サーバーが応答を停止した場合は、次のコマンドを使用してサービスを再起動します。

systemctl restart httpd

ログを確認します。journalctl コマンドを使用してシステム ログを表示します。たとえば、Apache HTTP サーバーのログを表示する場合は、次のコマンドを使用します。

journalctl -u httpd

これにより、Apache HTTP サーバーのログが表示されます。

トラブルシューティング: 検査結果とログ情報に基づいて、ネットワーク サービスの障害を特定して解決できます。たとえば、Apache HTTP サーバーの構成が間違っていることがわかった場合は、構成ファイルを編集してサービスを再起動できます。

ネットワーク問題の解決策はケースバイケースで決定する必要があり、場合によっては複数の検査とデバッグの手順が必要になります。同時に、Linux システムで提供されるネットワーク診断ツールを最大限に活用して、問題をより迅速に発見して解決します。

おすすめ

転載: blog.csdn.net/weixin_47450720/article/details/129702712