我家裡有很多網路設備,我希望能夠以人性化的方式在網路上存取它們。我不希望直接從網路存取這些設備。
我的需求:
- 設備可以有多個“別名”- 例如。它應該可以透過
backup
,docker
或nas
name 進行訪問- 因為我在單一設備上運行多個服務,並且喜歡區分它們,並可以選擇將它們移動到另一個設備
- 應可使用家庭託管 VPN 遠端存取設備
- 因為我想存取我的 NAS 並能夠從遠端位置運行備份
- 應可從連接到工作 VPN 的家庭工作站存取設備
- 因為我有時在家工作,但仍然想訪問我的本地網絡
多年來我嘗試過以下解決方案。然而,他們都不能不妥協地滿足我所有的需求。
使用mDNS
這是我的初始設置,可以在以下位置存取設備hostname.local
❓ 設備可以有多個“別名”
每個設備可能有多個 mDNS 名稱,但由於以下問題,我從未進一步調查過它
❌ 應可使用家庭託管 VPN 遠端存取設備
mDNS
正在使用的協定不broadcast
透過 VPN 連線轉送。來自裝置的回應mDNS
無法到達 VPN 用戶端。
✅ 設備應可從連接到工作 VPN 的家庭工作站進行存取
這可以正常工作,因為mDNS
「繞過」VPN 並訪問本地網路。
mDNS
透過家庭DNS
伺服器使用
DNS
我在家裡託管自己的伺服器。我的想法是,這應該可以解決我的前兩個需求。但是不建議在伺服器中保留*.local
記錄。DNS
例如dig
輸出警告
$ dig docker.local
...
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
...
✅ 設備可以有多個“別名”
儘管不建議正確解析名稱。
✅ 應可使用家庭託管 VPN 遠端存取設備
伺服器DNS
採用簡單的請求-響應方式訪問,與VPN完全相容。
❌ 設備應可從連接到工作 VPN 的家庭工作站進行存取
這不起作用,因為工作站正在 VPN 內使用工作 DNS,(顯然)沒有我的docker.local
.
DNS
使用具有自訂僅限家庭網域的家庭伺服器
這應該是「要走的路」。我已經創建了我的主域,例如。myplace
(避免黑幕*.home
)並讓 DHCP 伺服器將此網域設定為所有裝置。我們的想法是正確使用DNS
伺服器。
✅ 設備可以有多個“別名”
感謝DNS
服務器。
✅ 應可使用家庭託管 VPN 遠端存取設備
伺服器DNS
採用簡單的請求-響應方式訪問,與VPN完全相容。
❌ 設備應可從連接到工作 VPN 的家庭工作站進行存取
這不起作用,因為工作站正在 VPN 內使用工作 DNS,(顯然)沒有我的docker.myplace
.
使用具有公共網域的公共DNS
伺服器(到目前為止僅是理論上的)
我也付費購買公共領域,隨它去example.com
。這個想法是透過例如來解決先前解決方案中的第三個需求。docker.example.com = 192.168.0.17
記錄在公開場合DNS
。
✅ 設備可以有多個“別名”
感謝DNS
服務器。
✅ 應可使用家庭託管 VPN 遠端存取設備
伺服器DNS
採用簡單的請求-響應方式訪問,與VPN完全相容。
✅ 設備應可從連接到工作 VPN 的家庭工作站進行存取
由於公共網域託管在公共DNS
伺服器上,因此docker.example.com
應該可以從任何地方(如superuser.com
網域)進行解析。
⚠️不過。這是不安全的:
- 我會將我的所有設備名稱及其(家庭)IP 位址公開到互聯網
- 當從家庭網路外部(在工作場所、咖啡館等)存取時
docker.example.com
,我將連接到192.168.0.17
in他們的本地網路。這可能會以不同的方式結束- 位址不存在 - 連線失敗
- 地址存在 - 我將連接到某人的設備,這可能非常危險(例如,對於不安全的連接)
有誰有更好的想法如何做到這一點?
答案1
這不起作用,因為工作站正在 VPN 內使用工作 DNS,(顯然)沒有我的 docker.myplace 的記錄。
如果您的作業系統支援拆分 DNS,則內部家庭 DNS 可以正常運作。例如,對於Linux 上的systemd-resolved,有多組<網域,DNS 伺服器>(每個網路介面一組),因此您可以為工作網域使用VPN DNS 伺服器,而為其他所有網域使用家庭DNS – 反之亦然, “.home.arpa”的家庭 DNS,但其他所有內容的 VPN DNS。在 systemd 之前,也可以設定 dnsmasq 或 Unbound 來達到相同的目的。
(不要與“split-brain”或“split-view”DNS 混淆,這是伺服器端的事情。)
Windows 似乎在其 DNS 伺服器軟體中將此稱為“條件轉送”,並且可能儘管企業 VPN 可能不太可能允許,但內建 VPN 用戶端 (IKEv2) 支援它。
我會將我的所有設備名稱及其(家庭)IP 位址公開到互聯網
就是它實際上不過,這是一個問題嗎?設備名稱是,好吧,名稱 - 它們並不讓我覺得本質上是私人的東西(儘管也許我對它有一些老派的看法,從那時起這曾經是家庭網絡中非常常見的事情) ;無論如何,IP 位址在您的家庭 LAN 之外沒有任何意義。
不過,您始終可以混合使用兩者:docker
為您需要從工作站存取的少數裝置使用公共 DNS 名稱(可能是通用名稱,例如 ),但對其他所有裝置使用內部 DNS。在大多數 PC 中可以配置多個網域後綴(甚至可以透過 DHCP 部署一個清單)。
當從家庭網路外部(在工作場所、咖啡館等)存取 docker.example.com 時,我將連接到本地網路中的 192.168.0.17。這可能會以不同的方式結束
IPv6 將是通常的「解決方案」;隨機產生的私有 IPv6 前綴將具有約 56 個唯一位,這通常足以避免任何衝突。