[toc] # 測試架構 <img width=540 src='https://hackmd.io/_uploads/S1A_f6WF3.png'> 1. 將內部 DNS 權威主機的 DNS Zone 做 DNS zone transfer 抄寫一份到 Infoblox。 2. 變更 DHCP 設定將所派發 IP 的 DNS 第一筆指向 Infoblox DNS。 3. Infoblox 能從 DNS 查詢中分析是否有資料外洩及惡意網域存取。 4. Infoblox 資料外洩白名單網域即時更新。 5. 完整集中管理機制。 6. 獨立報表系統,不影響 DNS 服務運作。 # Forward Zone 需求 以上架構為一般測試及生產環境架構,若初期測試希望環境變動最小的狀況下,在測試架構的步驟一在 Internal DNS 可改用 **Forwarder 模式**。不過這樣一來,原有終端客戶若將**第一筆 DNS 紀錄指向 Infoblox DNS** 後,終端用戶若要解析內部名稱領域(Zone)的主機,因為 Infoblox DNS 上並無相關紀錄,便會發生查詢不到的問題,這時只要在 Infoblox DNS 上組態 **Forward Zone**,告知解析該網域的主機名稱時,轉發至指定 DNS(應為原有 Internal DNS)查詢,便可解決問題。 :::info **Microsoft DNS 設定 Forwarders** - 開啟 **DNS Maamger**,DNS 主機圖示按下**滑鼠右鍵**,選擇 **Properties**。 <img width=320 src='https://hackmd.io/_uploads/BybBsCFE6.png'> - 選擇 **Forwarders**,輸入 Infoblox DNS 主機名稱和 IP 位址。 <img width=320 src='https://hackmd.io/_uploads/ryISoRtNa.png'> - 設定 Forwarder 功能,DNS 主機不需重啟也不會影響原有服務。 ::: ## 測試環境資訊 - Infoblox DNS: 10.7.150.85 - Internal DNS: 10.7.150.201 - 查詢網域: **`sysagelab.com`** 使用 **`nslookup`** 指定 DNS Server 進行 **`*.sysagelab.com`** 主機查詢。在 Infoblox DNS 未啟用 Forward Zone 設定,便會產生 **NXDOMAIN** 結果。  :::warning - 使用 Infoblox DNS 無法查詢 **`vrops.sysagelab.com`**,且顯示為 **NXDOMAIN**。 - 使用 Internal DNS 可查詢結果為 10.7.150.74。 ::: # Infoblox DNS 設定 Forward Zone 內部名稱網域(zone)以 **`sysagelab.com`** 為例,若在內部有其他 zone 需要透過 Infoblox DNS 查詢,請按照下列步驟分別完成。 1. **Data Management** > **DNS** > **Zones**,點擊 **`+`** 右側箭頭,選擇 **Forward Zone**。  2. 選擇 **Add a forward forward-mapping zone**,點選 **Next**。  3. **Name** 輸入欲轉發查詢的網域 **`sysagelab.com`**,點選 **Next**。 :::info 這裡是以 <font color=red>**`sysagelab.com`**</font> 網域名稱為範例,**名稱填寫**時請修正為<font color=red>**轉發查詢的網域名稱**</font>。所以 Infoblox DNS 看到 **`www.`**<font color=red>**`sysagelab.com`**</font> 或 **`mail.`**<font color=red>**`sysagelab.com`**</font> 都會轉發 DNS 查詢給 **步驟4** 指定的 Internal DNS,以便取得正確的名稱解析。 :::  4. 點擊 **`+`**,輸入內部 **DNS 名稱**及 **IP 位址**,點選 **Next**。  :::info DNS 名稱可以是 FQDN 或一般註解名稱。 ::: 5. 點擊 **`+`**,應會自動加入 Infoblox DNS,因為測試環境只有一組,點選 **Next**。  6. 這個步驟可省略,點選 **Next** 或是直接選擇 **Save & Close** 完成設定並儲存。  7. 若上一步選擇 **Next**,這裡就選擇 **Save & Close**,完成設定。  8. 點擊主頁面上方黃色顯示處 **Restart**。  點選 **Restart** 以重啟服務。  # 測試結果 重新使用 nslookup 進行測試,透過上述設定,也可以從 Infoblox DNS 查詢內部指定網域。:100:  # 附錄 使用 **Infoblox API** 也可以**快速完成設定**!先看執行結果。   ## 範例腳本 ### 環境參數 ```bash= grid_master='' grid_master_user='' grid_master_pass='' login="${grid_master_user}:${grid_master_pass}" auth_token=$(echo -ne "${login}" | base64 --wrap 0) api_version='v2.12.3' api_baseurl="https://${grid_master}/wapi/${api_version}" ``` ### 建立 Forward Zone ```bash= #!/bin/bash function create_forward_zone () { body="{ \"fqdn\":\"${fqdn}\", \"comment\": \"${comment}\", \"forward_to\": [ { \"address\":\"${forward_dns_address}\", \"name\":\"${forward_dns_name}\" } ], \"forwarding_servers\": [ { \"forward_to\": [], \"forwarders_only\": false, \"name\": \"${grid_master_hostname}\", \"use_override_forwarders\": false } ] }" api="zone_forward" curl -s -k -X POST -L "${api_baseurl}/${api}" \ -H 'Content-Type: application/json' \ -H "Authorization: Basic ${auth_token}" \ --data "${body}" } fqdn="sysagelab.com" comment="dns query for intranet zone" forward_dns_name="ad.sysagelab.com" forward_dns_address="10.7.150.201" ## create forward zone create_forward_zone ``` ### 重啟 Grid 服務 :::warning 變更服務設定後,記得將服務重啟套用設定。 ::: ```bash= #!/bin/bash function restart_services () { body="{ \"member_order\": \"SIMULTANEOUSLY\", \"restart_option\": \"RESTART_IF_NEEDED\", \"service_option\": \"ALL\", \"user_name\": \"${grid_master_user}\" }" api="${grid_reference}?_function=restartservices" curl -s -k -X POST -L "${api_baseurl}/${api}" \ -H 'Content-Type: application/json' \ -H "Authorization: Basic ${auth_token}" \ --data "${body}" } ``` ### 暫時關閉/開啟 Forward Zone ```bash= #!/bin/bash function disable_forward_zone () { body="{ \"disable\": true }" api="${forward_zone_ref}" curl -s -k -X PUT -L "${api_baseurl}/${api}" \ -H 'Content-Type: application/json' \ -H "Authorization: Basic ${auth_token}" \ --data "${body}" | jq -r } ``` ### 移除 Forward Zone ```bash= #!/bin/bash function delete_forward_zone () { api="${forward_zone_ref}" curl -s -k -X DELETE -L "${api_baseurl}/${api}" \ -H 'Content-Type: application/json' \ -H "Authorization: Basic ${auth_token}" } ``` ### 清除 DNS 快取 ```bash= #!/bin/bash fqdn='${FORWARD_ZONE}' function clear_dns_cache () { api="${member_dns_reference}?_function=clear_dns_cache&domain=${fqdn}&clear_full_tree=true" curl -s -k -X POST -L "${api_baseurl}/${api}" \ -H 'Content-Type: application/json' \ -H "Authorization: Basic ${auth_token}" } ``` ## 清除本機 DNS 快取 ### Windows 開啟文字終端機,輸入 **`ipconfig /flushdns`**。 ### Linux 開啟終端機,輸入 **`resolvectl flush-caches`**。 ### 瀏覽器 #### Chrome 按下 **`Ctrl + T`**,輸入 **`chrome://net-internals/#dns`**,點擊 **Clear host cache**。  ### Firefox 按下 **`Ctrl + T`**,輸入 **`about:networking#dns`**,點擊 **Clear host cache**。 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up