私は学生で、インターネットに接続していますシボレス実際、私は Raspberry Pi に Selenium と Phantomjs をインストールして、実行時に自動的に接続する Python スクリプトを実行しています。
ネットワークを混雑させずにインターネット接続を確認したい。
Icinga 監視、netstat 確立された接続、ping、nmap ... 最善の方法は?
答え1
接続が死んでいるか生きているかのどちらかであり、その違いを確実に判別できると想定するのは誤りです。このような想定は、期待した生存特性を実際にチェックしないヒューリスティックに頼ることになり、信頼性の低いシステムにつながります。
より良いアプローチは、接続に実行させる必要があるものが実際に機能しているかどうかを監視することです。たとえば、特定のクライアントが特定のサーバーに接続する必要がある場合、それを監視する必要があります。2 つのクライアントが通信を続けている限り、別のヒューリスティックが接続がダウンしていると見なすかどうかは気にする必要はありません。
監視によって問題が検出された場合は、監視によってそのことを警告するようにしたい場合があります。監視によって接続がダウンしていることを検出して警告するだけでなく、問題の修正も試みるようにしたい場合があります。ただし、これにより、さらに多くの疑問が生じます。
たとえば、停電時にネットワーク コンポーネントの電源を入れ直すことができるハードウェアがあるとします。クライアントとサーバーが相互に通信できないという理由だけで、電源を入れ直すことは望ましくないかもしれません。接続のもう一方の端がダウンしていて、電源を入れ直す必要がない場合もあります。電源を入れ直すと、それ自体で停電が発生したり、手動による介入の妨げになったりする可能性もあります。
このような問題を回避する方法があります。たとえば、サーバーへの接続がダウンしているように見える場合、サーバーの DNS ルックアップを送信できます。応答があった場合、接続が完全にダウンしているわけではありません。ただし、DNS サーバーに要求を送信する必要さえありません。ホップ制限を低くして DNS ルックアップを送信できます。たとえば、ホップ制限を 3 にして DNS ルックアップを送信し、3 番目のホップから ICMP が返された場合、1 番目のホップの電源を入れ直しても問題が解決する可能性は低くなります。
もちろん、これは万能薬ではありません。最高のヒューリスティックでも、失敗することがあります。壊れた接続を自動的に再起動する何かを構築する場合は、繰り返し再起動しないように指数バックオフ戦略を確実に採用する必要があります。
当然、パケットを交換せずに接続を監視することはできません。しかし、それらのパケットの処理コストは制限する必要があります。たとえば、パケットを数ホップ送信して特定のルーターからエラー メッセージが返されるという方法がありますが、これはほとんどのルーターにとって最も安価な操作ではありません。ルーターのハードウェア転送部分以外を介さずにパケットを送受信する方法が見つかれば、ホップ数が増えてもコストは低くなります。
複数のサイトがある場合は、定期的にサイト同士がペアで通信するようにすることで、接続監視の信頼性を向上させることができます。 1 つのサイトが同時に他のすべてのサイトとの接続を失った場合、この 1 つのサイトに接続の問題がある可能性が非常に高くなります。
答え2
インターネット アクセスが可能かどうかを知りたい場合は、8.8.8.8 および 8.8.4.4 のサーバー経由で www.google.com の DNS ルックアップを行うのが最も信頼性の高い方法です。
回答が得られない場合、インターネット接続に何らかの問題があることはほぼ間違いありません。ただし、「何らかの問題がある」ということは、まったくアクセスできないことを意味するわけではありません。
インターネット接続が完璧であることを証明することはできません。