web-dev-qa-db-ja.com

ファイアウォールの背後にある複数のデバイスをリモートで管理する

中央サーバーから複数のデバイスにリモートアクセスできるソリューションを探しています。

デバイスにはカスタムソフトウェアがプリインストールされていますが、ネットワークの状態は不明であり、おそらく3GまたはNAT制限付きWiFi環境下にあります。

私が最初に考えたのは、逆SSH接続(systemdサービスを介したssh -RまたはautoSSHのいずれか)を使用することですが、これは、デバイスごとに1つのリダイレクトポートがあることを意味します。これは実際には問題ではなく、5万台を超えるデバイスを同時に実行することはできないと思います。

ただし、万が一の場合に備えて、より管理しやすく、よりスケーラブルなインフラストラクチャを探しています。他の質問を調べてみましたが、この問題に対する答えが見つかりません。各デバイスを中央のデバイスに接続して、VPNトンネルの使用を推奨する人もいるようです。誰かがそれがどのように機能するかを説明できればそれは素晴らしいことですが、それがどのように機能するのか、各デバイスID /名前をどこで設定するのか、すべて実行されたらリモート接続を開始する方法はよくわかりません。

他のアプローチや解決策も歓迎します。

注1:1つずつリモートアクセスするだけで十分だと思いますが、(デバイスのグループにコマンドを送信するために)可能な限りすべてが役立つ場合もあります(ただし、一度に1つずつ解決策が考えられる場合は回答を停止しないでください) )。

注2:システムはDebianベースです。 (ラズビアン。必要に応じてUbuntuにすることもできます)

3
jaimehrubiks

ファッショナブルな流行語である「モノのインターネット」という言葉で、私たちは定期的にこの種の質問を受けます。いくつかの考慮事項を含めて長い回答を追加し、他の人に編集と改善を依頼します。

  • インタラクティブアクセスのアイデアを放棄する特定のデバイスへ。管理サーバーから命令/コマンドを取得し、その状態と結果/収集されたデータをポストバックするデバイス上のエージェントが必要になります。オンサイトのオペレーターが、デバイスが実際に管理サーバーと通信しているか、エラーが発生していることを確認しておくと便利です。

  • お使いのデバイスは電話ホームする必要があります。
    デバイスを管理サーバーに接続し、その逆はしないでください。 IPv4がまだ多くの消費者や企業で使用されているため、デバイスからサーバーへの接続の確立が他の方法よりもはるかにスムーズに機能するNAT)もかなりたくさんあります(ポート転送などを設定する必要があります)。
    ほとんどの消費者/中小企業のファイアウォールのデフォルトの動作は、すべての発信トラフィックを許可することです。これらは実際には管理されていないことが多いため、自宅に電話をかけることは、追加の設定なしで簡単に機能することがよくあります。
    多くの管理対象ネットワークでさえ、着信接続を開くよりも発信接続を許可することを好みます。

  • プロトコルは[〜#〜] http [〜#〜]またはむしろ[〜#〜] https [〜#〜]である必要があります。これは通常のTCP/IPで実行され、直接インターネットアクセスが許可されていない場合でも、Webプロキシを使用するようにデバイスを簡単に構成できます。

  • 管理サーバーはデフォルトのWebポート、つまり80(HTTP)または443(HTTPS)でリッスンする必要があります。大群を追うために言われることがたくさんあります...

  • デバイスは[〜#〜] dhcp [〜#〜]で自分自身を構成できる必要がありますが、静的IP構成をセットアップする方法をオンサイトオペレーターに提供する必要もあります。 /またはプロキシサーバー。

  • お使いのデバイスはIPv6とIPv4の両方をサポートする必要があります。

  • 自動登録-デバイスの数が多い場合は、展開する前に各デバイスを管理サーバーに(手動で)登録する必要はありません。代わりに、電源を入れて接続したときにデバイス自体を登録する必要があります。

  • エージェントは決まったスケジュールで実行するべきではありません。何千ものエージェントがまったく同時に自宅に電話をかけることは望ましくありません。

あなたは既存の 構成管理ツール を見てみたいと思うかもしれません。それはすでにそのような機能の多くを提供しています。

独自のフレームワークを導入する場合は、 Azure IoTゲートウェイSDKGoogle Compute IoTAWS IoT などのフレームワークを活用することを検討してください。

3
HBruijn