今回は、 NSX 環境に設定されたルーティングを PowerNSX / PowerCLI で見てみます。
自宅環境の都合上 NSX Edge をたくさん並べるのが困難なので、
OSPF などのルーティングプロトコルは動作させていません。
単純に Edge Service Gateway(ESG)1台、DLR Control VM 1 台がある、なんとか NSX っぽい構成にしてあります。
この環境で、NSX で管理されている NSX Edge のルーティング(赤枠のフキダシ)を PowerNSX で確認してみます。
まず vSphere Web Client でルーティング設定を見てみます。
NSX Edge が2台あります。
このあと ID を指定するため、ESG は edge-1、DLR Control VM は edge-5 であることをおぼえておきます。
ESG の NSX Edge です。インターフェースが 2つ作成されています。
「if-uplink」という名前の インターフェースの方向にゲートウェイを設定していますが、
これはインターネットなど、NSX 外部に接続するルータのアドレスを指定しています。
NSX のラボ環境むけに、スタティック ルートは DLR のアップリンクにむけて設定しています。
DLR Control VM の NSX Edge です。
ESG でスタティックルートをむけているアップリンクのほかに、
いくつか内部インターフェースを作成して、論理スイッチを接続しています。
DLR では、デフォルト ゲートウェイを ESG のインターフェースにむけています。
PowerNSX で見ると、こんな感じです。
あらためて、ESG と、DLR の Object ID を確認しておきます。
ESG は edge-1、DLR は edge-5 です。
PowerCLI C:\> Get-NsxEdge | fl id,name,type
id : edge-1
name : nsxesg01
type : gatewayServices
PowerCLI C:\> Get-NsxLogicalRouter | fl id,name,type
id : edge-5
name : nsxdlr01
type : distributedRouter
ESG のスタティックルートの設定確認については、わかりやすいコマンドレットが用意されています。
今回は DLR にはスタティックルートを設定していないのですが、DRL にも同様に、
Get-NsxLogicalRouterRouting、Get-NsxLogicalRouterStaticRoute が用意されています。
PowerCLI C:\> Get-NsxEdge -objectId edge-1 | Get-NsxEdgeRouting | Get-NsxEdgeStaticRoute
mtu : 1500
description :
type : user
vnic : 1
network : 10.0.0.0/8
nextHop : 10.1.1.2
adminDistance : 1
edgeId : edge-1
一方、デフォルトゲートウェイ(というかデフォルト ルート)の設定確認については、ちょっと工夫がいりそうな雰囲気です。
ESG の デフォルト ルートを見てみましたが、「select -ExpandProperty」でけっこう深くたどりました。
PowerCLI C:\> Get-NsxEdge -objectId edge-1 | Get-NsxEdgeRouting | select -ExpandProperty staticRouting | select -ExpandProperty defaultRoute | select gatewayAddress
gatewayAddress
--------------
192.168.1.1
DLR のデフォルト ルートの確認も同様に、シンプルなコマンドレットでというわけでなないようです。
PowerCLI C:\> Get-NsxLogicalRouter -objectId edge-5 | Get-NsxLogicalRouterRouting | select -ExpandProperty staticRouting | select -ExpandProperty defaultRoute
mtu gatewayAddress adminDistance
--- -------------- -------------
1500 10.1.1.1 1
PowerNSX には、XPath のクエリをあつかうコマンドレット(Invoke-XpathQuery)も用意されています。
実はこの情報は XmlElement なので、そちらを使ってしまったほうがシンプルかもしれません。
PowerCLI C:\> $r = Get-NsxLogicalRouter -objectId edge-5 | Get-NsxLogicalRouterRouting
PowerCLI C:\> Invoke-XpathQuery -QueryMethod SelectNodes -Node $r -query "//gatewayAddress"
#text
-----
10.1.1.1
このように、PowerNSX でも vSphere Web Client と同様に
NSX Edge のルーティング 情報を取得することが(そして設定することも)できます。
一方 NSX で管理されていない、 NSX Edge 以外のルーティングは、
基本的には個別に ログインしたりして確認することになります。
ただし、VMware Tools がインストールされている ゲスト OS であれば、
PowerCLI から取得できたりします。
PowerCLI C:\> Get-VM vm01 | Get-VMGuest | % {$_.ExtensionData.IpStack.IpRouteConfig.IpRoute | select Network,PrefixLength,@{N="Gateway";E={$_.Gateway.IpAddress}}}
Network PrefixLength Gateway
------- ------------ -------
0.0.0.0 0 10.1.10.1
10.1.10.0 24
10.1.10.1 32
fe80:: 64
以上、最近のほかの投稿の参考情報として、自宅 NSX のルーティングの様子を投稿してみました。