前回の投稿で、NSX の Edge Service Gateway(ESG)で DHCP サーバ、
分散論理ルータ(DLR)で DHCP リレー エージェントを構成しました。
NSX ESG / DLR で DHCP Server / Relay を構成してみる。
今回は PowerNSX で同様の環境を構成してみます。
ただし前回とは異なり、実際に使用する場面を想定して
一度のみ設定すればよいものは省略して下記のようにしています。
- ESG での DHCP サービスの有効化 → 設定ずみ
- 論理スイッチの作成と DLR への接続
- ESG への IP プール作成
- DLR での DHCP リレー サーバの登録 → 設定ずみ
- DLR での DHCP リレー エージェントの指定
- VM の作成 ~ 論理スイッチへの接続
使用する環境は、前回の投稿と同様です。
あらかじめ、vCenter / NSX Manager には接続ずみです。
論理スイッチの作成と DLR への接続。
まず、DHCP を利用するネットワークの論理スイッチ「ls-lab-vms-01」を作成します。
PowerNSX> Get-NsxTransportZone infra-tz-01 | New-NsxLogicalSwitch ls-lab-vms-01
論理スイッチを DLR に接続します。
このときに、ゲートウェイのアドレス(10.0.1.1)も指定します。
PowerNSX> Get-NsxLogicalRouter -Name infra-nsxdlr-01 | New-NsxLogicalRouterInterface -Name if-ls-lab-vms-01 -ConnectedTo (Get-NsxLogicalSwitch ls-lab-vms-01) -PrimaryAddress 10.0.1.1 -SubnetPrefixLength 24 -Type internal
論理スイッチを接続した DLR インターフェースの index を確認しておきます。
PowerNSX> Get-NsxLogicalRouter -Name infra-nsxdlr-01 | Get-NsxLogicalRouterInterface -Name if-ls-lab-vms-01 | Format-List name,connectedToName,index
name : if-ls-lab-vms-01
connectedToName : ls-lab-vms-01
index : 10
ESG への IP プール作成。
PowerNSX では、ESG のネットワーク サービス関連のものがあまり充実していないので、
IP プールの作成は、Invoke-NsxWebRequest で NSX API を利用します。
似たもので Invoke-NsxRestMethod もありますが、これは非推奨になっています。
まず、IP プールの内容を定義した XML を作成しておきます。
esg_dhcp_pool_10.0.1.1.xml
<ipPool>
<ipRange>10.0.1.100-10.0.1.199</ipRange>
<subnetMask>255.255.255.0</subnetMask>
<defaultGateway>10.0.1.1</defaultGateway>
<domainName>go-lab.jp</domainName>
<primaryNameServer>192.168.1.101</primaryNameServer>
<secondaryNameServer>192.168.1.102</secondaryNameServer>
<leaseTime>86400</leaseTime>
<autoConfigureDNS>false</autoConfigureDNS>
<allowHugeRange>false</allowHugeRange>
</ipPool>
ESG の Object ID を確認しておきます。
PowerNSX> Get-NsxEdge -Name infra-nsxesg-01 | Format-List name,id
name : infra-nsxesg-01
id : edge-1
XML ファイルを読み込んで、IP プールを作成します。
API のメソッドについては、下記のリファレンスを参考にします。
VMware NSX for vSphere API documentation
ESG の edgeId については、先ほど確認したものを指定します。
XML でキャストするとエラーになってしまうので [String] としています。
PowerNSX> [String]$xml_text = Get-Content ./esg_dhcp_pool_10.0.1.1.xml
PowerNSX> Invoke-NsxWebRequest -method POST -URI "/api/4.0/edges/edge-1/dhcp/config/ippools" -body $xml_text
DLR での DHCP リレー エージェントの指定。
DHCP リレー エージェントについても Invoke-NsxWebRequest で設定します。
まず、XML を作成します。
DLR の edgeId を確認しておきます。
PowerNSX> Get-NsxLogicalRouter -Name infra-nsxdlr-01 | Format-List name,id
name : infra-nsxdlr-01
id : edge-5
DLR の DHCP リレー設定を取得しておきます。
PowerNSX> $data = Invoke-NsxWebRequest -method GET -URI "/api/4.0/edges/edge-5/dhcp/config/relay"
PowerNSX> $data.Content | Format-XML
<?xml version="1.0" encoding="UTF-8"?>
<relay>
<relayServer>
<ipAddress>10.0.0.1</ipAddress>
</relayServer>
</relay>
PowerNSX>
XML ファイルを用意します。
vnicIndex には DLR インターフェースの index、
giAddress には DLR インターフェースに設定したゲートウェイ アドレスを指定します。
今後ネットワークを増設してリレー エージェントが追加される場合は relayAgent 要素が増えます。
dlr_dhcp_relay.xml
<?xml version="1.0" encoding="UTF-8"?>
<relay>
<relayServer>
<ipAddress>10.0.0.1</ipAddress>
</relayServer>
<relayAgents>
<relayAgent>
<vnicIndex>10</vnicIndex>
<giAddress>10.0.1.1</giAddress>
</relayAgent>
</relayAgents>
</relay>
DLR に、リレー エージェントを含む DHCP リレー設定を反映します。
PowerNSX> [String]$xml_text = Get-Content ./dlr_dhcp_relay.xml
PowerNSX> Invoke-NsxWebRequest -method PUT -URI "/api/4.0/edges/edge-5/dhcp/config/relay" -body $xml_text
VM の作成 ~ 論理スイッチへの接続。
既存の VM から VM を作成します。
PowerNSX> Get-Template vm-template-01 | New-VM -ResourcePool infra-cluster-01 -Datastore vsanDatastore -Name test-vm-01
VM を論理スイッチに接続します。
PowerNSX> Get-VM test-vm-01 | Connect-NsxLogicalSwitch -LogicalSwitch (Get-NsxLogicalSwitch ls-lab-vms-01)
VM を起動します。
PowerNSX> Get-VM test-vm-01 | Start-VM
少し待つと、DHCP プールのレンジから IP アドレスが設定されます。
PowerNSX> Get-VM test-vm-01 | Get-VMGuest
State IPAddress OSFullName
----- --------- ----------
Running {10.0.1.100, fe80... Oracle Linux 7 (64-bit)
以上、NSX Edge の DHCP Relay を PowerNSX で設定してみる話でした。