FreeBSD w/ 兩個網路介面和不同的域
我有一台帶有兩個 NIC 的 FreeBSD 機器,設置如下:
em0 ---> IP set via DHCP (192.168.1.0/24). "home" domain
em1 ---> IP set statically (10.0.0.2). "lab" domain
出於所有意圖和目的,我的主域執行良好。我可以上網並 ping 網路上的任何主機。路由也有效,我可以通過 IP 從 FreeBSD 機器上的任何一個域 ping 任何主機,但是我只能解析家庭網路上的名稱。
我創建了一個
/etc/resolvconf.conf
文件以將搜尋域和名稱伺服器添加到resolv.conf
文件中,如下所示:search_domains="lab" name_servers="10.0.0.10"
然後我使用以下命令更新 resolv.conf:
$ sudo resolvconf -u
我現在可以在
lab
網路上解析名稱,但不再在home
網路上。手動編輯 resolv.conf 文件並顛倒域和名稱伺服器的順序會導致解析home
但不是lab
- 完全相反。我如何知道
resolv.conf
將一個 DNS 伺服器用於特定域(靜態設置的 IP)並允許它通過 DHCP 獲取另一個 IP 的 DNS 資訊?僅供參考……
/etc/rc.conf:
hostname="beastie1" ifconfig_em0="DHCP" ifconfig_em1="inet 10.0.0.2 netmask 255.255.255.0" defaultrouter="192.168.1.1"
/etc/resolv.conf
# Generated by resolvconf search lab home. nameserver 10.0.0.10 nameserver 192.168.1.1
域 10.0.0.0上的 DNS“伺服器”
lab
只不過是提供 DHCP 租約的廉價消費者 Netgear 路由器。我只有靜態設置,因為它是用於引導映像的 TFTP 伺服器,我特意將其設置為 10.0.0.2,以便在嘗試在某些 Cisco 設備上刷新韌體更新時使用。
您為這項工作使用了完全錯誤的工具。
此工作不在 DNS 客戶端庫中完成。DNS 客戶端庫不夠複雜,無法根據正在查找的名稱來決定將查詢路由到不同的內容 DNS 伺服器集。DNS 客戶端庫將查詢解析的繁重工作(包括這類東西)委託給解析代理 DNS 伺服器。 它們是實現水平分割 DNS 服務的,這是您在這裡想要的機制。
在您的情況下,如果您正在使用開箱即用的 FreeBSD(或其衍生產品,如 DragonFly BSD 和 TrueOS),這將是一個
unbound
本地執行的實例。你做三件事:
- 你跑
unbound
。local_unbound_enable=YES
使其以/etc/rc.conf
通常的方式自動啟動。- 您配置
unbound
為執行水平分割 DNS 服務。 您可以使用您和您的域的存根區域來執行此操作,將這些域名及其下面的所有內容 表示為內容 DNS 伺服器。unbound.conf``lab.example.com.``home.example.com.``10.0.0.10``192.168.1.1
- **您告訴 DNS 客戶端庫查詢您的伺服器,並且只查詢您的伺服器。**您有
nameserver
一行 in/etc/resolv.conf
(來自 中的一個name_servers
鍵值對/etc/resolvconf.conf
)指示您的 DNS 客戶端庫與unbound
.筆記:
- 您不使用
home.
andlab.
。 這些是真正的頂級域名,您並不擁有.home.
目前是 ICANN 的 10 份申請的主題。使用您擁有的域名,而不是您不擁有的域名。用上面的那個代替example.com.
。**不,****您不擁有local.
,localhost.
,或許多其他人。dev.``corp.
**例如,如果您擁有radiantnexus.com.
,您將使用home.allan.radiantnexus.com.
andlab.allan.radiantnexus.com.
。- 如果您希望在本地命名空間中找到非完全限定域名,請適當調整您的搜尋域。
search_domains="home.allan.radiantnexus.com lab.allan.radiantnexus.com"
繼續前面的例子。- 不要認為您可以退回到其他人解析代理 DNS 伺服器。 一個大錯誤是添加由您的現成路由器、您的 ISP 或 Google 提供的解析代理 DNS 伺服器。您的 DNS 客戶端庫直接與之通信的所有伺服器都必須提供相同的 DNS 名稱空間視圖,並且彼此保持一致。首先, Google 公共 DNS對您的內部命名空間一無所知。如果您想要一個備用 DNS 伺服器,則需要在某個地方使用另一個本地DNS 伺服器,並使用相同的水平分割設置進行配置。
- 您還需要所有非公共 IPv6 和 IPv4 地址到名稱查找名稱的存根區域。 實際上有很多這樣的,它們的查找流量真的不應該洩漏到您/您的組織的邊界之外。是的,如果您希望地址到名稱查找適用於由您的組合 DHCP/DNS 伺服器分發的租約,它們確實應該是存根區域,而不是本地區域。
獎勵內容
我在 FreeBSD 上使用 djbdns(由……好吧……我修補)。
- nosh 工具集的配置導入子系統為我設置了一個
dnscache@127.0.0.1
執行本地解析代理 DNS 伺服器的服務,以及一個執行tinydns@127.53.0.1
與之對話axfrdns@127.53.0.1
的本地根內容 DNS 伺服器的服務dnscache@127.0.0.1
。enable
我使用以下指令啟用這些服務/etc/system-control/presets/20-djbwares.preset
:啟用 axfrdns@127.53.0.1 啟用 cyclog@axfrdns 啟用 tinydns@127.53.0.1 啟用 cyclog@tinydns 啟用 dnscache@127.0.0.1 啟用 cyclog@dnscache
- 本地根內容 DNS 伺服器在其數據庫中混合了公共
.
數據,大約每年從 ICANN 提取axfr-get
,以及我擁有的域名下的內部名稱數據。% ls -dl root/{data*,p*,root*,Makefile} -rw-r--r-- 1 根輪 968 9 月 16 日 09:43 根/Makefile -rw-r--r-- 1 根輪 571334 11 月 28 日 00:33 根/數據 -rw-r--r-- 1 根輪 1088169 11 月 28 日 00:33 root/data.cdb -rw-r--r-- 1 根輪 3243 9 月 16 日 09:55 根/私人 -rw-r--r-- 1 根輪 6962 11 月 28 日 00:32 根/公共 -rw-r--r-- 1 根輪 560853 2017 年 3 月 11 日根/根 -rw-r--r-- 1 根輪 3668733 2017 年 3 月 11 日 root/root.zone %
該
root/private
文件是我將擁有私人數據的地方,例如:=machine97.jdebp.eu:192.168.100.97:::lo
- 我為各種水平分割修剪點複製了
root/servers/@
文件,以便知道覆蓋可能恰好發送的那些點的任何公共內容 DNS 伺服器地址資訊:dnscache@127.0.0.1``dnscache
% ls -dli root/servers/{@,CEFip6.arpa,machine97.jdebp.eu} 352608 -rw-r--r-- 46 根輪 11 2016 年 11 月 23 日根/伺服器/@ 352608 -rw-r--r-- 46 根輪 11 2016 年 11 月 23 日 root/servers/CEFip6.arpa 352608 -rw-r--r-- 46 根輪 11 2016 年 11 月 23 日 root/servers/machine97.jdebp.eu %
(實際上,nosh 工具集為我設置了私有 IP 地址,作為標準。在nosh 指南中有一整章介紹了提供的內容以及使用它的各種方式。)
這是一個私有根設置。這是使用兩個內容 DNS 伺服器提供水平分割 DNS 服務的其他方式之一(有幾種方式)。(在上述
unbound
設置中,您也有多個內容 DNS 伺服器安排;您的本地內容 DNS 伺服器是LAN 上的其他機器上10.0.0.10
和其他機器上的伺服器,而不是機器本身上的私有伺服器。)192.168.1.1``127.53.0.1
私有根還給我帶來了不存在的東西的 duff DNS 查詢流量的好處,從Google瀏覽器的探測到試圖反向映射 IPv6 地址
fec0::/12
和 IPv4 地址的東西192.168.0.0/16
,而不是逃逸到整個網際網路。您也可以使用私人根
unbound
。不過,它比存根區域更複雜。我把它留給讀者作為練習,它超出了這個答案的範圍。進一步閱讀
- 喬納森·德博因·波拉德 (2004)。什麼是 DNS 查詢解析。經常給出答案。
- 喬納森·德博因·波拉德 (2002)。提供“水平分割”DNS 服務。. 經常給出答案。
- 喬納森·德博因·波拉德 (2003)。您的備用代理 DNS 伺服器必須提供與您的主體相同的 DNS 名稱空間視圖。. 經常給出答案。
- 喬納森·德博因·波拉德 (2012)。使用您擁有的域名,不要濫用您不擁有的域名。. 經常給出答案。
- 喬納森·德博因·波拉德 (2017)。什麼是 DNS 名稱限定。經常給出答案。
- 喬納森·德博因·波拉德 (2000)。“內容”和“代理”DNS 伺服器。經常給出答案。
- 喬納森·德博因·波拉德 (2004)。如果您使用非公共 IP 地址範圍,請使用水平分割 DNS 服務。. 經常給出答案。
- 喬納森·德博因·波拉德 (2003)。您忘記用數據填充“內部”DNS 數據庫。. 經常給出答案。
- 邁克·韋斯特 (2012-02-18)。 Chrome 在啟動時連接到三個隨機域。. mikewest.org。
- 喬納森·德博因·波拉德 (2016)。“
dnscache
,tinydns
和axfrdns
服務”。 小吃指南。軟體。- 喬納森·德博因·波拉德 (2016)。Daniel J. Bernstein 的軟體合二為一。軟體。
- “域名系統”。FreeBSD 手冊。自由BSD。