通用家庭 DNS

通用家庭 DNS

我家裡有很多網路設備,我希望能夠以人性化的方式在網路上存取它們。我不希望直接從網路存取這些設備。

我的需求:

  1. 設備可以有多個“別名”- 例如。它應該可以透過backup,dockernasname 進行訪問
    • 因為我在單一設備上運行多個服務,並且喜歡區分它們,並可以選擇將它們移動到另一個設備
  2. 應可使用家庭託管 VPN 遠端存取設備
    • 因為我想存取我的 NAS 並能夠從遠端位置運行備份
  3. 應可從連接到工作 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網域)進行解析。

⚠️不過。這是不安全的:

  1. 我會將我的所有設備名稱及其(家庭)IP 位址公開到互聯網
  2. 當從家庭網路外部(在工作場所、咖啡館等)存取時docker.example.com,我將連接到192.168.0.17in他們的本地網路。這可能會以不同的方式結束
    • 位址不存在 - 連線失敗
    • 地址存在 - 我將連接到某人的設備,這可能非常危險(例如,對於不安全的連接)

有誰有更好的想法如何做到這一點?

答案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 個唯一位,這通常足以避免任何衝突。

相關內容