我有一個網域名稱(例如example.com
)、靜態 IP 位址(例如)和位於、、、、212.5.5.5
的本機裝置(這不是網站)。192.168.0.1:80
192.168.0.2:80
192.168.0.3:80
192.168.0.4:80
192.168.0.4:47
如何使用子網域(例如 、device1.example.com
等device2.example.com
)存取這些裝置?
目前我只能得到example.com:80
andexample.com:47
工作,它指向192.168.0.4:80
和192.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 和連接埠。
這是一個非常有用的功能,但必須在客戶對於您正在造訪的服務