我有一個網域名稱、靜態 IP 位址和許多我想在屋外存取的設備。我該如何路由它們?

我有一個網域名稱、靜態 IP 位址和許多我想在屋外存取的設備。我該如何路由它們?

我有一個網域名稱(例如example.com)、靜態 IP 位址(例如)和位於、、、、212.5.5.5的本機裝置(這不是網站)。192.168.0.1:80192.168.0.2:80192.168.0.3:80192.168.0.4:80192.168.0.4:47

如何使用子網域(例如 、device1.example.comdevice2.example.com)存取這些裝置?

目前我只能得到example.com:80andexample.com:47工作,它指向192.168.0.4:80192.168.0.4:47

我知道您無法在 DNS 伺服器上設定連接埠。

我該如何克服我的問題?

答案1

您可以擁有一台運行 nginx 反向代理的面向公眾的伺服器,該伺服器根據子網域將流量重新導向到正確的伺服器。

「主」伺服器上的 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

除其中一個連接埠外,您需要對所有連接埠使用備用連接埠。例如,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.這應該可以在大多數現代 NAT 設備上進行配置。

另一種方法是,如果您願意使用 IPv6,只需在 NAT 裝置或路由器上開啟 IPv6 直通即可。這基本上將 LAN 上的每個 IPv6 位址暴露給公共互聯網,讓您可以直接從外部存取它們。正如您可能想像的那樣,存在一些與此相關的風險。由您決定是否可以承受該風險。

答案3

您不應該將這些服務直接暴露給網路。您無法審核這些設備以確保它們是安全的,僅僅暴露它們就會洩露有關內部網路狀態的資訊。

正確的解決方案是設定一個 VPN 伺服器,讓您可以遠端存取內部網路。理想情況下,內部網路應與主網路隔離,僅用於這些暴露的設備。如果它們被駭客攻擊,這可以限制損失。

開源 VPN 軟體是成熟的、經過審核的並且安全性問題是眾所周知的。您將自己限制在更小的攻擊面內。

答案4

您可以先確保每個人都需要從網路存取這些服務(=它們確實是公開的)。否則,您可以考慮設定 VPN 伺服器並存取網路內的服務。

我假設連接埠上的服務80是提供典型 Web 服務的 Web 伺服器。在這種情況下,其他答案中建議的反向代理解決方案適用。

它們可能是準備/打算與SRV您的 DNS 中的項目一起執行的服務。這個想法是,您解析服務的眾所周知的記錄,這反過來又為您提供要連接的名稱:連接埠。以《我的世界》為例:

  • 您設定要連線的用戶端minecraft.example.com
  • 您的用戶端知道它可以查詢_minecraft._tcp.minecraft.example.com.以取得要連接的實際 IP 和連接埠。

這是一個非常有用的功能,但必須在客戶對於您正在造訪的服務

相關內容