使用 API 在 VMware NSX for vSphere 6.x Edge 路由器上添加或移除单个静态路由
search cancel

使用 API 在 VMware NSX for vSphere 6.x Edge 路由器上添加或移除单个静态路由

book

Article ID: 339181

calendar_today

Updated On:

Products

VMware NSX

Issue/Introduction

本文提供了有关支持在 VMware NSX for vSphere 6.x Edge 路由器上添加和移除静态路由的 API 方法的信息。相同的功能在显示在 VMware NSX for vSphere 6.x 图形用户界面 (GUI) 中。

Symptoms:
免责声明:本文为 Adding or removing single static routes using API on VMware NSX for vSphere 6.x Edge routers (2111244) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。

Environment

VMware NSX for vSphere 6.1.x
VMware NSX for vSphere 6.0.x

Resolution

通过 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



Additional Information