---
# System prepended metadata

title: Infoblox POC 基礎環境佈署
tags: [poc, infoblox]

---

[toc]

> **更新說明**  
> 2023/11 更新版本至 NIOS 9

根據 [Infoblox DNS 安全解決方案測試需求及說明](https://hackmd.io/@farmer87/infoblox_poc) 內容進行 POC 環境佈署。

# 佈署版本

| 項目 | 版本 |
| --- | --- |
| VMware ESXi | 7.0.3 build-20036589 |
| Infoblox NIOS | nios-9.0.3-50212-ee11d5834df9-2023-11-23-00-01-55-fixed-500G.ova |
| NIOS Grid Master VM | TE-V1516 |
| NIOS Reporting VM | TR-V5005 |

:::info
- 目前佈署版本為 NIOS 9 ~~nios-8.6.3-51135 為最新版本，已經完成 hotfix 修補~~。
- 配置 Infoblox **Reporting** 設備時，需要選擇下列**指定機種進行安裝**：
  - **IB-V805** (TR-V805)
  - **IB-V1405** (TR-V1405)
  - **IB-V2205** (TR-V2205)
  - **IB-V4005** (TR-V4005)
  - **IB-V5005** (TR-V5005)
:::

:::warning
請根據可提供硬體資源佈署對應 vNIOS 虛擬設備。
:::

# 佈署流程圖

```mermaid
graph TD;
id1(佈署Infoblox虛擬機器)-->id2(開啟TE-V1516);
id2(開啟TE-V1516)-->id3([重新配置網路]);
id3([重新配置網路])-->id4(指派授權NIOS,DNS/DHCP,GRID);
id4(指派授權NIOS,DNS/DHCP,GRID)-->id16(建立叢集);
id16(建立叢集)-->id7(配置成員);
id7(配置成員)-->id20[(完成)];
id11(佈署Infoblox虛擬機器)-->id12(開啟TR-V5005);
id12(開啟TR-V5005)-->id13([重新配置網路]);
id13([重新配置網路])-->id14(指派授權NIOS,GRID);
id14(指派授權NIOS,GRID)-->id15(加入叢集);
id15(加入叢集)-->id17(指派Reporting授權);
id17(指派Reporting授權)-->id20[(完成)];
```

:::info
- 完成虛擬機器佈署後，可先**配置網路**，再根據配置角色**指派授權**。
- 指派授權時，可先根據功能屬性，**指派 NIOS 授權**，完成授權安裝後，**系統會自動重啟**，並根據指定的 NIOS 授權完成該機種屬性配置。
  - Reporting 角色增加的 250GB 磁碟空間，完成 NIOS 授權指派並系統重啟後才會顯示。
- 要建立叢集或加入叢集都需先**指派 GRID 授權**。
- 先在 Grid Master 角色的虛擬機器上**完成 Grid 配置**，並設定欲**加入 Grid 成員資訊**，否則成員無法成功加入叢集。
  - Grid 成員資料輸入需要 FQDN，但此時應該是不需要透過 DNS 服務達成。
- **Reporting subscription 授權** 必須要在成功加入 Gid 後才能進行指派動作。
- **Grid Master** 還需指派 **Response Policy Zones** 和 **Threat Analytics** 授權。
:::

# 佈署程序
## 佈署 Infoblox 虛擬機器
使用 **ovftool 工具**進行 POC 環境佈署，並完成以下目標：
- **佈署 2 台 Infoblox 虛擬機器**
  | VM | vCPU | RAM | Grid 角色 |
  | --- | :-: | :-: | --- |
  | TE-V1516 | 12 | 64 | Grid Master & DNS |
  | TR-V5005 | 8 | 64 | Grid Member(Reporting) |
  :::warning
  因為測試主機資源有限，將 TR-V5005 的 RAM 調降至 32GB。
  :::
- **自動新增 TR-V5005 虛擬機器 250GB 虛擬磁碟**
- **開啟虛擬機器電源**

:::info
- 參考附錄-[**`setupPoc.sh`**](#setupPoc.sh) 執行後可自動達成上述目標。
- 佈署腳本程式採用 **ovftool** 和 **govc** 工具完成。
- 若佈署標的是 vCenter，可以應用 **vApp 選項** 套用參數自動配置 IP 屬性。但佈署標的是 ESXi 則無法應用 **vApp 選項**，雖然有方法可行，這邊就不深入了！直接完成佈署後續再透過 NIOS CLI 完成 IP 組態。
:::

### 佈署結果
:::warning

:::

**Grid Master: TE-V1516**
![螢幕快照 2024-01-11 08-32-34](https://hackmd.io/_uploads/SJ9nDh2ua.png)

**Reporting: TR-V5005**
![螢幕快照 2024-01-11 08-35-27](https://hackmd.io/_uploads/HJZPu3h_6.png)

## 連線虛擬機器
確認佈署虛擬機器已正常開機，逐步完成設定程序。此階段請使用 VMware Remote Console 連線虛擬機器完成。

:::info
預設登入帳密資訊： **admin** / **infoblox**
:::

### 登入檢測
輸入以下命令確認佈署狀態。
- show version
- show license
- show status
- show disk

**TE-V1516**
![](https://hackmd.io/_uploads/SJmXUOM5h.png)

**TR-V5005**
![](https://hackmd.io/_uploads/BkLNU_z93.png)

:::warning
**注意** **Reporting 虛擬機器** 在成功指派授權前，先前新增的 250GB 虛擬磁碟無法顯示。待指派授權完成重啟系統後，便可正常顯示存儲空間。

![](https://hackmd.io/_uploads/BkpJwIA5h.png)
:::

## 配置網路
:::info
:information_source: 若此時網路配置還未確認，可以先跳過此步驟，先進行[[**授權指派**]](#指派授權)作業。
:::

預設佈署 IPv4 位址為 **192.168.1.2/255.255.255.0**，預設閘道為 **192.168.1.1**。輸入 **`show network`** 可檢視目前 IP 組態資訊。

![](https://hackmd.io/_uploads/Bk4tBKM9n.png)

POC 環境配置資訊如下。使用 **`set network`** 進行互動式配置。

| 項目 | 配置 |
| --- | :-: |
| TE-V1516 | 10.7.155.91 |
| TR-V5005 | 10.7.155.92 |
| Netmask | 255.255.255.0 |
| Gateway | 10.7.155.254 |
| VLAN Tag | Untagged(Default) 請根據實際環境調整 |
| Configure IPv6 Network | no |
| Become grid member | no |

以 **TE-1516** 作為設定範例。
![](https://hackmd.io/_uploads/B1XZLtf9h.png)

:::info
:information_source: 完成網路設定，系統會重啟網路服務。
:::

![](https://hackmd.io/_uploads/SkYHPtf53.png)

繼續完成 **TR-V5005** 網路組態。  
![](https://hackmd.io/_uploads/B1WiFl75h.png)
![](https://hackmd.io/_uploads/BJT-qe7c3.png)

:::info
- 若在完成 **Grid 授權指派**後才設定網路，使用 **`set network`** 設定網路時，會多一個 **Become grid member** 選項。
- Grid 成員加入必須先在 Grid Master 上完成**建立叢集**和**指定成員**。且 Grid 成員和 Grid Master 的網路必須能夠溝通。
:::

### Remote Console
輸入 **`set remote_console`** 啟用 SSH 遠端連線功能。完成後可透過 SSH 連線進行後續設定，而不需要使用 VMware Remote Console。  
![](https://hackmd.io/_uploads/B1H8bKG9n.png)

接著使用 SSH 遠端連線 TE-1425。  
![](https://hackmd.io/_uploads/HkyxnpQ92.png)

## 指派授權
輸入 **`set temp_license`** 命令可以為 NIOS 設備產生並安裝 **60 天臨時授權**。使用 **`show license`** 命令檢視目前授權資訊。

請根據以下功能需求配置 POC 所需的授權。

| Appliance | Model | License Type|
| --- | --- | --- |
| NIOS Appliance | TE-1516 | NIOS, Grid, DNS, [DHCP] |
| Reporting Appliance | TR-V5005 | NIOS, Grid |

### NIOS Appliance (TE-V1516)
指派 DNS, DHCP, Grid 授權。輸入 **set temp_license** > **2** > **y** > **y|n** 完成。  
![](https://hackmd.io/_uploads/HJ1CExQ5h.png)

:::info
- 指派 **Response Policy Zone** 授權，請選擇 **11**。
- 指派 **Threat Analytics** 授權，請選擇 **16**。
:::

指派 NIOS 授權。輸入 **set temp_license** > **4** > **8** > **y** 完成。  
:::danger
![](https://hackmd.io/_uploads/HyrfLlX92.png)
![](https://hackmd.io/_uploads/B1ISIl7cn.png)
:::

:::info
:information_source: 設定 **NIOS 授權**，系統會**重新啟動**，所以 NIOS Appliacne 也可以先選擇功能授權 (DNS, DHCP,Grid) 再選擇 NIOS 授權。
:::

系統重啟並成功登入後，使用 **`show license`** 檢視授權資訊。

![](https://hackmd.io/_uploads/SJ3qLeQc3.png)

### Reporting Appliance (TR-V5005)
:::info
:information_source: 對於 Reporting Appliance 請先選取 NIOS 授權。
:::

指派 NIOS 授權。輸入 **set temp_license** > **4** > **16** > **y** 完成。  
![](https://hackmd.io/_uploads/By7jox7q3.png)
![](https://hackmd.io/_uploads/HyNpjxmq2.png)

系統重啟並成功登入後，再次輸入 **`show license`** 檢視授權資訊。  
![](https://hackmd.io/_uploads/rynHhgQ93.png)

輸入 **`set temp_license`** 命令完成功能授權指派。此時發現 **Reporting Appliance** 可以指派的授權僅剩下：
- NIOS License（已指派）
- **Grid License**
- **Reporting subscription License**

![](https://hackmd.io/_uploads/rkgj2eQqn.png)

:::warning
- **Reporting subscription 授權** 必須要在成功加入 Gid 後才能進行指派動作。  
![](https://hackmd.io/_uploads/rJfC2gm92.png)

- 佈署 **Reporting Appliance** 時新增的 250GB 磁碟空間，未指定 NIOS 授權時無法正常顯示。   
  ![](https://hackmd.io/_uploads/rJ_9F94oh.png)

- 正確指派 NIOS 授權後，便會正常顯示 250GB 磁碟空間。  
  ![](https://hackmd.io/_uploads/SJNT95Nih.png)
:::

:::danger
使用 **`reset all licenses`** 將會**清除數據庫、配置和網路設置**。並在重新恢復出廠預設值前**清除設備中的所有授權許可訊息**。
:::

## 後續配置
完成 Grid 授權後，使用瀏覽器連線 Grid Master 的 IP 位址，就會顯示下列畫面，請按照畫面逐步完成第一次設定。  
![](https://hackmd.io/_uploads/B1VFaxmch.png)

:::warning
若沒有指派 Grid 授權，第一次登入 Infoblox 虛擬機，會顯示 **System Manager** 登入畫面，而非 **Grid Manager** 登入畫面。  
<img width=480 src='https://hackmd.io/_uploads/ByLTPcVs3.png'>
:::

確認 EULA。  
![](https://hackmd.io/_uploads/rkM26x7q2.png)

管理首頁。  
![](https://hackmd.io/_uploads/BkzNRemch.png)

完成 Grid Setup Wizard 設定。
![](https://hackmd.io/_uploads/HJgqAlmc2.png)

:::warning
未指派 Grid 授權，則會出現 **NIOS Setup Wizard** 設定畫面。
![](https://hackmd.io/_uploads/BJ31tcNjh.png)
:::

使用下面兩個 Infoblox WAPI 可以完成
- 在 Grid Master 上設定 Grid 成員紀錄。
![](https://hackmd.io/_uploads/ByPYReIs2.png)

- 在 Grid 成員上啟用加入 Grid 程序。
![](https://hackmd.io/_uploads/rJC5AgLj3.png)


之後的配置等下次有時間再做整理吧，暫時告一段落囉！

:::warning
- 建立 Grid 及加入成員步驟，初步可用 **Infoblox WAPI** 來達成，但是完成度還不高，暫時就不分享了。
- RPZ 相關設定應該也可以用 Infoblox WAPI 達成？只是這方面的資訊很少，研讀及測試成本過高，不過對於之後要自動化佈署及建置環境應該是還蠻有助益的。
- :construction: [使用 OVFTools 及 API 建置 Infoblox 基礎環境](https://hackmd.io/@farmer87/infoblox_poc_api_deployment)
:::

 

# 清理 POC 環境
如果測試完成，可以直接透過 **`govc vm.destroy {vm}`** 的方式，將佈署的虛擬機器直接暴力刪除！可以參考 [**cleanPoc.sh**](#cleanPocsh) 程式範本達成。

執行命令輕鬆整理環境。  
![](https://hackmd.io/_uploads/BkXNIRBi3.png)

還給同事一個新的測試環境。
![](https://hackmd.io/_uploads/HJkMURBs3.png)


# 附錄
## setupPoc.sh
```bash
#!/bin/bash
#

function initPoc() {
    echo -e "\n[TASK] Initial POC Environment"
    ## nios ova
    nios_ova_basePath='/home/richard/Projects/infoblox/nios_ova'
    nios_ova_file="nios-8.6.3-51135-1241097029df-2023-06-23-03-50-26-ddi.ova"
    source_lactor="${nios_ova_basePath}/${nios_ova_file}"

    ## deployment
    diskmode='thin'
    portgroup='VM Network'
    ## infoblox grid master
    ib_gm_vmname="TE-V1425"
    ib_gm_deployment_option='1425'

    ## infoblox reporting
    ib_reporting_vmname="TR-V5005"
    ib_reporting_deployment_option='otherModel'
    ## 250GB vdisk for reporting
    disk_name='disk-1000-1'
    disk_size='250G'

    ## ESXi info
    esxi_user='root'
    esxi_pass='VMware1!VMware1!'
    esxi_ip='10.7.155.13'
    esxi_datacenter='ha-datacenter'
    esxi_datastore='datastore1'
    target_locator="$(urlencode ${esxi_user}):$(urlencode ${esxi_pass})@${esxi_ip}"
    datacenter='ha-datacenter'
    datastore='datastore1'
}

function initGovc () {
    echo -e "\n[TASK] Initial GOVC Environment"
    export GOVC_URL="https://${esxi_ip}"
    export GOVC_USERNAME="${esxi_user}"
    export GOVC_PASSWORD="${esxi_pass}"
    export GOVC_INSECURE="true"
    export GOVC_DATACENTER="${esxi_datacenter}"
    export GOVC_DATASTORE="${esxi_datastore}"
}

function deployVm () {
    vmName=${1}
    deployOption=${2}
    echo -e "\n[TASK] Deploying Infoblox VM \"${vmName}\""
    /usr/bin/ovftool \
    --acceptAllEulas \
    --allowExtraConfig \
    --noSSLVerify \
    --skipManifestCheck \
    --X:disableHostnameResolve \
    --X:ignoreLinkLocalIp \
    --X:injectOvfEnv \
    --parallelThreads=22 \
    --name="${vmName}" \
    --datastore="${datastore}" \
    --diskMode="${diskmode}" \
    --net:"VM Network"="${portgroup}" \
    --deploymentOption="${deployOption}" \
    "${source_lactor}" \
    vi://"${target_locator}"
}

function addDisk () {
    vmName=${1}
    echo -e "\n[TASK] Create 250GB vDisk and attach to VM \"${vmName}\""
    govc vm.disk.create -vm ${vmName} -name ${vmName}/${disk_name} -size ${disk_size}
}

function powerOn () {
    vmName=${1}
    echo -e "\n[TASK] Power on VM \"${vmName}\""
    govc vm.power -on ${vmName}
}

## initial POC & GOVC environment
initPoc
initGovc

## deploy infoblox grid master
deployVm ${ib_gm_vmname} ${ib_gm_deployment_option}

## deploy infoblox reporting
deployVm ${ib_reporting_vmname} ${ib_reporting_deployment_option}

## create 250GB disk for infoblox reporting
addDisk ${ib_reporting_vmname}

sleep 10
## power on VM(s)
powerOn ${ib_gm_vmname}
powerOn ${ib_reporting_vmname}
```

## cleanPoc.sh
```bash
#!/bin/bash
#

function initGovc () {
    echo -e "\n[TASK] Initial GOVC Environment"
    export GOVC_URL="https://${esxi_ip}"
    export GOVC_USERNAME="${esxi_user}"
    export GOVC_PASSWORD="${esxi_pass}"
    export GOVC_INSECURE="true"
    export GOVC_DATACENTER="${esxi_datacenter}"
    export GOVC_DATASTORE="${esxi_datastore}"
}

function destroyVm () {
    vmName=${1}
    echo -e "\n[TASK] Power Off and destroy Infoblox VM \"${vmName}\""
    if govc find / -type m | grep ${vmName}; then
        echo -e " > Deleteing ......"
        govc vm.destroy ${vmName}
    else
        echo -e " > VM \"${vmName}\" NOT FOUND"
    fi
}

## ESXi info
esxi_ip='10.7.155.13'
esxi_user='root'
esxi_pass='VMware1!VMware1!'
esxi_datacenter='ha-datacenter'
esxi_datastore='datastore1'
## infoblox vm info
ib_gm_vmname="TE-V1425"
ib_reporting_vmname="TR-V5005"

## init govc
initGovc

## delete infoblox poc environment
destroyVm ${ib_gm_vmname}
destroyVm ${ib_reporting_vmname}
```

## 修改 ESXi 管理 IP
使用 DCUI 命令進行修改。

首先用 SSH 連線至 ESXi 管理介面，並輸入 **`dcui`** 命令進行 **Direct Console 使用者介面**。

![image](https://hackmd.io/_uploads/BJ1kCY5_a.png)

按下 **F2** 調整組態。

![螢幕快照 2024-01-09 17-12-22](https://hackmd.io/_uploads/rk280Kc_p.png)

輸入管理者驗證資訊，按下 **`Enter`** 登入。

![image](https://hackmd.io/_uploads/BJUCCKcdT.png)


![螢幕快照 2024-01-09 17-18-42](https://hackmd.io/_uploads/H1dlx9qdT.png)

![螢幕快照 2024-01-09 17-20-54](https://hackmd.io/_uploads/ryAHg9c_T.png)

![螢幕快照 2024-01-09 17-24-03](https://hackmd.io/_uploads/SkXW-55OT.png)

![螢幕快照 2024-01-09 17-26-06](https://hackmd.io/_uploads/SJd8W5cup.png)

![螢幕快照 2024-01-09 17-26-52](https://hackmd.io/_uploads/SkI5W9cOp.png)
