Linuxシステムでネットワークカードを再起動した後、ネットワークに障害が発生しました(NetworkManagerの記事)

1.故障現象

RHEL7.6システムでは、nmcliを使用してデュアルネットワークカードをバインドし、次のコマンドを使用してネットワークサービスを再起動した後、ホストネットワークが異常であり、sshを介してシステムにリモートログインできません。

     # systemctl restart network

2.理論的知識

ネットワークサービス制御ネットワークインターフェイスの構成情報を変更した後、ネットワークサービスを再起動して新しいネットワーク構成をアクティブにし、構成を有効にする必要があります。操作のこの部分は、システムを再起動する場合と同じ効果があります。コントロール(コントロール)はファイル/etc/init.d/networkです。このファイルを次のパラメーターとともに使用して、ネットワークサービスを操作できます。例:
     # /etc/init.d/network restart
serviceコマンドを使用してネットワークサービスを操作することもできます。例:
     # service network restart
     # systemctl restart network
(NetworManager)は、ネットワークを検出し、ネットワークに自動的に接続するプログラムです。ワイヤレス接続でも有線接続でも、簡単に管理できます。ワイヤレスネットワークの場合、ネットワークマネージャは最も信頼性の高いワイヤレスネットワークに自動的に切り替えることができます。ネットワークマネージャのプログラムを使用して、オンラインモードとオフラインモードを自由に切り替えることができます。ネットワークマネージャは、有線ネットワークを優先し、VPNをサポートできます。ネットワークマネージャーは元々Redhatによって開発され、現在はGNOMEによって管理されています。

3.環境分析

システムバージョン:Red Hat Enterprise Linux Serverリリース7.6
カーネルバージョン:3.10.0-957.el7.x86_64
ハードウェアタイプ:Huawei 2288H V5
最初にシステムネットワーク構成を確認します。システムは2つのボンディングデバイスで構成されています。つまり、
bond0:ビジネスネットワーク
bond1 :Oracle RACハートビートネットワーク
はシステムログを分析します。ネットワークサービスを再起動すると(systemctl restart network)、システムメッセージログに明らかな異常はありません。テストでは、NetworkManagerサービスを停止すると問題が解消される、つまり次の操作を実行することがわかりました。

     # systemctl stop NetworkManager

この時点で、ネットワークサービスを再起動します。

     # systemctl restart network

bond0のビジネスアドレス10.116.6.194にすばやくpingを実行できます。
さらに分析したところ、NetworkManagerサービスを停止せずに、ネットワークカード構成ファイルを変更した場合、ボンディングネットワークカードとボンディングを形成するスレーブネットワークカードの構成ファイルに構成行を追加することでも問題を解決できることがわかりました。

     NM_CONTROLLED=no

Red Hat RHEL7構成ネットワークカードボンディングの公式ドキュメントを参照してください。https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-network_bonding_using_the_command_line_interface公式ドキュメントの
構成例で設定されていることがわかります。 NM_CONTROLLED =” no”:
Linuxシステムでネットワークカードを再起動した後、ネットワークに障害が発生しました(NetworkManagerの記事)
Linuxシステムでネットワークカードを再起動した後、ネットワークに障害が発生しました(NetworkManagerの記事)

4.元の工場の問題に関する提案

この問題はNetworkManagerサービスが原因で発生し、次の2つの方法で解決できます。

  • ネットワークカード構成ファイルにパラメータNM_CONTROLLED = no(「no」の引用符は省略可能)を追加し、設定後にネットワークサービスを再起動して有効にします。NM_CONTROLLED = noを設定する目的は、NetworkManagerサービスの管理からネットワークデバイスを削除することです。設定後、ネットワークデバイスはネットワークサービスによってのみ管理され、NetworkManagerサービスによって制御されないため、nmcliコマンドはネットワークデバイスに対して有効ではなくなります。
  • NetworkManagerサービスを停止して無効にします。非アクティブ化すると、すべてのネットワークデバイスがネットワークサービスによって管理されます。nmcliコマンドを使用してネットワークデバイスを管理することはできません。

     # systemctl stop NetworkManager
     # systemctl disable NetworkManager

5.解決策

上記によると、NetworkManagerサービスを閉じるか、BOND構成ファイルにパラメータを追加できますが、環境要件により、nmcliコマンドを使用する必要があるため、NetworkManagerを閉じることはできません。NetManagerがネットワークサービスnmcliと競合するため、複数回のテストで検討した後、このコマンドはNetworkManagerに属しています。Systemctlは通常、ネットワークの管理に使用されます。2つの管理コマンドも競合する可能性があることを考慮した後、一連のテストを実行しました。NetworkManagerのnmcliを使用してネットワークカードを再起動します。次のコマンドを使用すると、ネットワークにすぐにpingを実行してSSHを渡すことができます。接続

     # nmcli connection down 网口名称
     # nmcli connection up 网口名称

6.結論

NetworkManagerとネットワークサービスの間に競合があり、デュアルネットワークカードがバインドされるときに使用されるnmcliがバインドされるため、nmcliはNetworkManagerに属します。したがって、ネットワークカードを再起動するときは、nmcliコマンドを上下に使用します。systemctlを使用してネットワークカードを再起動しないでください。

再版の出所を
明記してください:1。ブログに記載されている原作の著作権は原作者の聴聞会に帰属します;
2。この記事の内容は原作者の許可なしに転載することはできません。さもなければ侵害とみなされます;
3。この記事の転載または引用の出所を示す必要がありますそして、原作者;
4.私は、この声明に従わない、またはこの記事の内容を違法に使用する人々のために調査を追求する権利を留保します。

おすすめ

転載: blog.51cto.com/13906754/2595626