ドメイン、静的 IP アドレス、そして自宅の外からアクセスしたいデバイスがたくさんあります。それらをどのようにルーティングすればよいですか?

ドメイン、静的 IP アドレス、そして自宅の外からアクセスしたいデバイスがたくさんあります。それらをどのようにルーティングすればよいですか?

ドメイン (例example.com)、静的 IP アドレス (例212.5.5.5)、および、、、、のローカル デバイスがあり192.168.0.1:80ます192.168.0.2:80(192.168.0.3:80これは Web サイトではありません)。192.168.0.4:80192.168.0.4:47

サブドメイン ( device1.example.comdevice2.example.comなど) を使用してこれらのデバイスにアクセスするにはどうすればよいですか?

現時点では、とを指し示す と のみを取得しexample.com:80て動作させることができました。example.com:47192.168.0.4:80192.168.0.4:47

DNS サーバーでポートを設定できないことは承知しています。

どうすれば問題を克服できるでしょうか?

答え1

サブドメインに基づいてトラフィックを適切なサーバーにリダイレクトする nginx リバース プロキシを実行するパブリック サーバーを 1 つ持つことができます。

「メイン」サーバー上の nginx 構成:

server {
  server_name device1.example.com;
  location / {
    proxy_pass http://192.168.0.1:80;
  }
}
server {
  server_name device2.example.com;
  location / {
    proxy_pass http://192.168.0.2:80;
  }
}
server {
  server_name device3.example.com;
  location / {
    proxy_pass http://192.168.0.3:80;
  }
}

答え2

1 つを除くすべてのポートに代替ポートを使用する必要があります。たとえば、212.5.5.5:80 は 192.168.0.1:80 に転送されますが、212.5.5.5:81 は 192.168.0.2:80 に転送され、212.5.5.5:82 は 192.168.0.3:80 に転送されます。これは、ほとんどの最新の NAT デバイスで設定できるはずです。

IPv6 を使用する場合は、NAT デバイスまたはルーターで IPv6 パススルーをオンにするだけの方法もあります。これにより、基本的に LAN 上のすべての IPv6 アドレスがパブリック インターネットに公開され、外部から直接アクセスできるようになります。ご想像のとおり、これにはある程度のリスクが伴います。そのリスクが許容できるかどうかは、ユーザー次第です。

答え3

これらのサービスをインターネットに直接公開しないでください。これらのデバイスを監査して安全であることを確認することはできません。また、単に公開するだけで、内部ネットワークの状態に関する情報が漏洩します。

正しい解決策は、内部ネットワークへのリモート アクセスを許可する VPN サーバーを設定することです。理想的には、内部ネットワークをメイン ネットワークから分離し、これらの公開されたデバイスにのみ使用する必要があります。これにより、ハッキングされた場合の被害が制限されます。

オープンソースの VPN ソフトウェアは成熟しており、監査済みで、セキュリティの問題は十分に理解されています。攻撃対象領域ははるかに小さくなります。

答え4

まず、誰もがインターネットからこれらのサービスにアクセスする必要があること (= 本当に公開されることを意図していること) を確認します。それ以外の場合は、VPN サーバーを設定し、ネットワーク内でサービスにアクセスすることを検討します。

ポート上にあるサービスは、80一般的な Web サービスを提供する Web サーバーであると想定しています。このような場合は、他の回答で提案されているリバース プロキシ ソリューションが適用されます。

これらは、DNS のエントリを使用して実行するように準備されている/意図されているサービスである可能性がありますSRV。サービスの既知のレコードを解決すると、接続先の名前:ポートが提供されます。Minecraft の例を見てみましょう。

  • クライアントを接続するように設定minecraft.example.com
  • クライアントは、_minecraft._tcp.minecraft.example.com.接続する実際の IP とポートを取得するためにクエリを実行できることを認識します。

これは非常に便利な機能ですが、クライアントアクセスしているサービスについて

関連情報