通过 VMware NSX for vSphere 6.x 应用程序编程接口 (API) 和图形用户界面 (GUI),可以在 NSX Edge 路由器中创建和删除静态路由。然而,使用 API 无法引用单个静态路由。要添加或移除单个元素,您需要首先查询静态路由配置,对其进行修改,然后应用新的路由。
注意:将 PUT 和 POST 方法与 VMware NSX for vSphere 6.x API 搭配使用时,使用 application/xml 而不是 application/json 配置标题上指定的编码非常重要。指定 application/json 可能导致 HTTP 状态错误。另外,必须使用 NSX Manager 端点的有效凭据对 NSX for vSphere API 会话进行身份验证。
要在 Edge 网关上配置静态路由,请执行以下操作:
使用 Edge 路由器
使用 API 时,您需要了解希望配置的相应 Edge 路由器的 edgeId。edgeId 显示在 NSX for vSphere GUI 中的路由器列表的 Id 列,或者可使用 API 调用进行检索:
请求:
GET https://<nsxmgr-ip>/api/4.0/edges/
查询静态路由配置
通过以下 API 调用检索 NSX Edge 静态路由配置,指定正确的 edgeId:
请求:
GET https://<nsxmgr-ip>/api/4.0/edges/<edgeId>/routing/config/static
预期响应正文类似于以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<staticRouting>
<staticRoutes>
<route>
<description>route1</description>
<vnic>0</vnic>
<network>3.x.x.x/22</network>
<nextHop>172.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
<route>
<description>route2</description>
<vnic>1</vnic>
<network>4.x.x.x/22</network>
<nextHop>10.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
</staticRoutes>
<defaultRoute>
<description>defaultRoute</description>
<vnic>0</vnic>
<gatewayAddress>172.x.x.x</gatewayAddress>
<mtu>1500</mtu>
</defaultRoute>
在此示例中,存在两个静态路由和一个默认路由。
添加静态路由
要将静态路由添加到现有配置,您需要将其添加到之前获得的 XML 响应中,并在 Edge 网关中更新整个静态路由配置。
例如,要在 vNic 0 上添加 100.x.x.x/24 静态路由并且下一个跃点指向 172.x.x.x,您需要:
<route>
<description>route3</description>
<vnic>0</vnic>
<network>100.x.x.x/24</network>
<nextHop>172.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
针对 API 端点的整体 PUT 请求因此将类似于以下内容:
请求:
PUT https://<nsxmgr-ip>/api/4.0/edges/<edgeId>/routing/config/static
请求正文:
<staticRouting>
<staticRoutes>
<route>
<description>route1</description>
<vnic>0</vnic>
<network>3.x.x.x/22</network>
<nextHop>172.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
<route>
<description>route2</description>
<vnic>1</vnic>
<network>4.x.x.x/22</network>
<nextHop>10.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
<route>
<description>route3</description>
<vnic>0</vnic>
<network>100.x.x.x/24</network>
<nextHop>172.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
</staticRoutes>
<defaultRoute>
<description>defaultRoute</description>
<vnic>0</vnic>
<gatewayAddress>172.x.x.x</gatewayAddress>
<mtu>1500</mtu>
</defaultRoute>
移除静态路由
要从现有配置移除特定静态路由,您需要移除之前获得的 XML 响应的相应部分,并在 Edge 网关中更新整体静态路由配置。例如,要移除先前配置上的第二个静态路由(4.x.x.x/22,经由 10.x.x.x),您需要从 XML 请求清除以下内容:
<route>
<description>route2</description>
<vnic>1</vnic>
<network>4.x.x.x/22</network>
<nextHop>10.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
针对 API 端点的 HTTP PUT 请求因此将类似于以下内容:
请求:
PUT https://<nsxmgr-ip>/api/4.0/edges/<edgeId>/routing/config/static
请求正文:
<staticRouting>
<staticRoutes>
<route>
<description>route1</description>
<vnic>0</vnic>
<network>3.x.x.x/22</network>
<nextHop>172.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
<route>
<description>route3</description>
<vnic>0</vnic>
<network>100.x.x.x/24</network>
<nextHop>172.x.x.x</nextHop>
<mtu>1500</mtu>
<type>user</type>
</route>
</staticRoutes>
<defaultRoute>
<description>defaultRoute</description>
<vnic>0</vnic>
<gatewayAddress>172.x.x.x</gatewayAddress>
<mtu>1500</mtu>
</defaultRoute>
清除静态路由配置
要完全删除 Edge 网关的静态路由配置,包括默认网关配置,请使用 API 调用:
请求:
DELETE https://<nsxmgr-ip>/api/4.0/edges/<edgeId>/routing/config/static