配置ignore_user_abort

ignore_user_abort  时间:2021-04-05  阅读:()
使用NETCONF配置设备操作指导书Copyright2018新华三技术有限公司版权所有,保留一切权利.
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播.
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有.
本文档中的信息可能变动,恕不另行通知.
i目录1NETCONF简介11.
1NETCONF协议结构11.
2NETCONF报文格式21.
2.
1NETCONF21.
2.
2NETCONFoverSOAP·42NETCONF配置任务简介73选择NETCONF客户端并确定客户端与设备的连接方式·83.
1NETCONF配置方式简介83.
2连接方式介绍·94在设备上为NETCONF用户设置权限·104.
1确定NETCONF用户需要的权限104.
2定义NETCONF用户角色规则114.
3配置NETCONF用户属性115在设备上进行连接方式相关配置125.
1选用NETCONFoverSSH连接方式·125.
1.
1配置SSH登录·125.
1.
2配置NETCONFoverSSH·135.
2选用NETCONFoverSOAPoverHTTP或NETCONFoverSOAPoverHTTPS连接方式·146为NETCONF客户端与设备建立连接·146.
1配置限制和指导·146.
2NETCONF方式156.
3NETCONFoverSOAP方式157构造NETCONF请求167.
1NETCONFAPI文档介绍167.
1.
1文档组织·167.
1.
2文档内容说明·177.
2使用NETCONFAPI文档构造NETCONF请求187.
3构造NETCONF请求示例197.
4ComwareV7中支持的NETCONF操作类型20ii8使用XML工具简单验证构造的XML正确性299正式下发配置指令·3210关闭NETCONF会话3211NETCONF典型配置举例3211.
1通过NETCONF配置DHCP服务器和DHCP客户端·3211.
1.
1组网需求3211.
1.
2在DeviceA上配置NETCONF功能·3311.
1.
3通过NETCONF客户端配置DHCP服务器3311.
1.
4在DeviceB上通过CLI配置DHCP客户端功能3911.
1.
5验证配置3911.
2基于ncclient工具的NETCONFoverSSH配置举例·3911.
2.
1组网需求3911.
2.
2组网图4011.
2.
3配置步骤4011NETCONF简介NETCONF(NetworkConfigurationProtocol,网络配置协议)是一种基于XML的网络管理协议,它提供了一种可编程的、对网络设备进行配置和管理的方法.
用户可以通过该协议设置参数、获取参数值、获取统计信息等.
NETCONF报文使用XML格式,具有强大的过滤能力,而且每一个数据项都有一个固定的元素名称和位置,这使得同一厂商的不同设备具有相同的访问方式和结果呈现方式,不同厂商之间的设备也可以经过映射XML得到相同的效果,这使得它在第三方软件的开发上非常便利,很容易开发出在混合不同厂商、不同设备的环境下的特殊定制的网管软件.
在这样的网管软件的协助下,使用NETCONF功能会使网络设备的配置管理工作,变得更简单更高效.
1.
1NETCONF协议结构NETCONF协议采用分层结构,分为内容层(Content)、操作层(Operations)、RPC(RemoteProcedureCall,远程调用)层和通信协议层(TransportProtocol).
表1XML分层与NETCONF分层模型对应关系NETCONF分层XML分层说明内容层配置数据、状态数据、统计信息等被管理对象的集合,可以是配置数据、状态数据、统计信息等NETCONF协议具体可读写的数据请参见《NETCONFXMLAPI手册》操作层,,在RPC中应用的基本的原语操作集,这些操作组成NETCONF的基本能力NETCONF全面地定义了对被管理设备的各种基础操作,如get、get-config、get-bulk、edit-config操作等设备支持的操作请参见"7.
4ComwareV7中支持的NETCONF操作类型"RPC层,为RPC模块的编码提供了简单的、传输协议无关的机制.
通过使用和元素分别对NETCONF请求和响应数据(即操作层和内容层的内容)进行封装通信协议层非FIPS模式下:Console/Telnet/SSH/HTTP/HTTPS/TLSFIPS模式下:Console/SSH/HTTPS/TLS为NETCONF提供面向连接的、可靠的、顺序的数据链路.
非FIPS模式下:NETCONF支持Telnet、SSH和Console等CLI登录方式/协议,即NETCONFoverSSH、NETCONFoverTelnet和NETCONFoverConsoleNETCONF支持HTTP和HTTPS协议,即NETCONFoverHTTP和NETCONFoverHTTPSNETCONF支持封装成SOAP(SimpleObjectAccessProtocol,简单对象访问协议)报文后通过HTTP或HTTPS协议传输,即NETCONFoverSOAPoverHTTP和NETCONFoverSOAPoverHTTPSFIPS模式下:NETCONF支持SSH和Console等CLI方式/协议,即NETCONFoverSSH和NETCONFoverConsoleNETCONF支持HTTPS登录协议,即NETCONFoverHTTPSNETCONF支持封装成SOAP报文后通过HTTPS协议传输,即NETCONFoverSOAPoverHTTPS21.
2NETCONF报文格式通信协议层不进行SOAP封装时的报文格式我们称为NETCONF格式.
通信协议层进行SOAP封装时的报文格式我们称为NETCONFoverSOAP格式.
1.
2.
1NETCONFNETCONF命令必须符合XML语言的基本格式.
NETCONF报文格式遵循RFC4741/RFC6241.
1.
请求格式请求分为协议定义、H3C自有两个部分,其格式如下:协议定义部分:即RFC4741/RFC6241中规定的部分.
其中:{encoding表示使用的XML编码格式.
ComwareV7NETCONF支持GB2312、GB18030、UTF-8、UTF-16、UTF-16BE、UTF-16LE、UTF-32、UTF-32BE、UTF-32LE编码格式.
如果请求中没有携带声明部分(即)指定XML编码格式,则默认使用UTF-8编码格式.
{message-id表示消息ID.
客户端使用单调递增的整数来表示消息ID.
服务器端在应答中会使用相同的消息ID以表示应答对应的请求.
{协议部分的命名空间必须为urn:ietf:params:xml:ns:netconf:base:1.
0.
H3C自有部分:对于get系列操作,filter元素下的内容为H3C自有部分;对于edit-config系列操作,config元素下的内容为H3C自有部分.
{H3C自有部分需要使用H3C命名空间,H3C命名空间又分为base、config、data、action命名空间.
Base命名空间:http://www.
h3c.
com/netconf/base:1.
0Config命名空间:http://www.
h3c.
com/netconf/config:1.
0Data命名空间:http://www.
h3c.
com/netconf/data:1.
0Action命名空间:http://www.
h3c.
com/netconf/action:1.
0具体使用哪个命名空间与操作类型和内容有关,可参见"7.
4ComwareV7中支持的NETCONF操作类型"部分描述.
{H3C自有部分可以以top元素为起点,也可以以具体模块为起点.
是否使用top元素由netconfcapabilityspecific-namespace命令进行配置.
缺省使用top元素,命名空间位于top元素之后,各模块共用命名空间.
配置netconfcapabilityspecific-namespace命令后不再需要使用top元素,命名空间位于模块名之后,各模块专用自己的命名空间.
模块专用的命名空间定义方式为H3C命名空间-模块名,例如,接口管理模块的data命名空间为http://www.
h3c.
com/netconf/data:1.
0-Ifmgr.
3{"模块信息"部分的内容由NETCONFAPI文档定义.
get-config的例子(使用共有命名空间):模块信息edit-config的例子(使用共有命名空间):模块信息2.
应答格式统一为协议RFC4741定义的,如:3.
NETCONF请求示例如下为一个NETCONF报文示例,用于获取设备上所有接口的所有参数:使用共有命名空间时:4使用专用命名空间时:1.
2.
2NETCONFoverSOAP1.
SOAP语法一条SOAP消息包含以下元素:Envelope元素:必选,用来将XML文档标识为一条SOAP消息.
Header元素:可选,包含头部信息.
Body元素:必选,包含所有的调用和响应信息.
Fault元素:可选,提供在处理此消息时发生错误的信息.
NETCONFoverSOAP之后,NETCONF报文会放在SOAP报文的BODY元素里,这些报文除了需要遵循纯NETCONF报文的规则外,还需要遵循以下规则:SOAP消息必须用XML来编码.
SOAP消息必须使用SOAPEnvelope命名空间,包括http://schemas.
xmlsoap.
org/soap/envelope/和http://www.
w3.
org/2003/05/soap-envelope两种.
不同设备支持的命名空间不同,请以设备的实际情况为准.
SOAP消息不能包含DTD(DocumentTypeDefinition,文件类型定义)引用.
SOAP消息不能包含XML处理指令.
2.
NETCONFoverSOAP报文格式Hello报文格式为:testtest5zh-cnurn:ietf:params:netconf:base:1.
0NETCONFoverSOAP请求的格式为:10027c2abebdb482633f847102fbc890d22aenNETCONFoverSOAP报文格式中:Envelope元素:固定格式,在该元素中需要指定Envelope命名空间.
Header元素:携带认证、使用的语言等信息.
{认证信息:发送Hello建立连接时,NETCONF客户端在请求消息中携带auth:UserName和auth:Password,将认证用户名和密码发送给设备.
如果认证成功,则设备在应答消息中返回登录成功的凭据(auth:AuthInfo).
后续基于该连接的NETCONF请求必须携带该凭据.
Authentication元素必须使用命名空间http://www.
h3c.
com/netconf/base:1.
0,必须具有http://www.
w3.
org/2003/05/soap-envelope命名空间下的mustUnderstand属性,且属性值必须为1或者true.
6{使用的语言:在请求消息中通过auth:Language设置客户端期望的返回错误信息使用的语言.
目前支持中文(zh-cn)和英文(en)两种语言.
如果未指定,则表示使用英文.
并不是所有的请求消息都支持返回中文错误提示信息,应答消息中通过xml:lang="en"表明实际使用的语言.
auth:Language必须携带在auth:UserName、auth:Password和auth:AuthInfo之后.
Body元素:携带的内容为NETCONF报文.
NETCONFoverSOAP报文格式与NETCONF报文格式类似.
下文如无特殊情况,均以NETCONF报文为例,说明报文构造方法.
将NETCONF报文封装到NETCONFoverSOAP报文的Body元素中,即可构造出对应的NETCONFoverSOAP报文.
3.
SOAP请求示例如下为一个NETCONFoverSOAP报文示例,用于获取设备上所有接口的所有参数:800207F0120020C72NETCONF配置任务简介使用NETCONF客户端对接并配置设备的主要过程如图1所示.
图1使用NETCONF配置设备流程图8除上述方法外,用户也可以在Python上安装ncclient库,利用已有或用户自行开发的PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),通过ncclient库将较为直观地Python脚本语言转化为Netconf报文,对Netconf客户端(设备)进行配置和管理,以简化网络配置脚本语言的编写.
3选择NETCONF客户端并确定客户端与设备的连接方式3.
1NETCONF配置方式简介用户可通过以下方式来使用NETCONF配置和管理设备:通过Telnet、SSH或Console登录到设备并进入XML视图,将合法的NETCONF报文(1.
2.
1NETCONF节所描述格式)直接拷贝、粘贴到命令行提示符处执行,即可实现对设备的配置和管理.
在XML视图下进行NETCONF配置时,NETCONF报文最后需要添加"]]>]]>"结束符,否则设备无法识别.
通过HTTP或HTTPS登录到设备的Web页面,系统会自动将Web页面的配置转换成NETCONF指令下发给设备来实现对设备的配置和管理.
该方式通过简洁易用的图像化Web页面上完成配置,配置结果也会以简洁清晰的方式呈现给用户,整个NETCONF的交互过程对用户透明.
使用配置工具与设备建立连接并向设备下发NETCONF指令来实现对设备的配置和管理.
配置工具可以分为以下两类:{SSH配置工具:该类配置工具与设备建立SSH连接后,可下发NETCONF格式(即1.
2.
1NETCONF节所描述格式)报文配置和管理设备.
{SOAP配置工具:该类配置工具通过HTTP/HTTPS与设备建立连接,并将NETCONF指令用SOAP封装成通用格式的报文后发送给设备,因此需要使用1.
2.
2NETCONFoverSOAP节所描述格式.
使用该方式前设备上必须开启NETCONFoverSOAP功能.
SOAP配置工具使用短连接,SSH配置工具使用长连接.
因此,SSH配置工具具有较高的效率,但对设备和客户端的资源消耗较高.
综上,实际应用中使用NETCONF配置设备时主要采用配置工具的方式.
客户可以开发和定制自己专用的配置工具软件,也可以使用第三方开发的配置工具.
第三方的配置工具有:SSH配置工具:NETCONFBrowser等.
SOAP配置工具:SOAPUI等.
关于各配置工具的使用方法,请参见配置工具的配置指导.
93.
2连接方式介绍H3C设备目前支持如下连接方式:非FIPS模式下:NETCONFoverSSHNETCONFoverTelnetNETCONFoverConsoleNETCONFoverHTTPNETCONFoverHTTPSNETCONFoverSOAPoverHTTPNETCONFoverSOAPoverHTTPSFIPS模式下:NETCONFoverSSHNETCONFoverConsoleNETCONFoverHTTPSNETCONFoverSOAPoverHTTPS不同配置方式使用的连接方式不同:使用Telnet登录到设备并进入XML视图即建立NETCONFoverTelnet连接.
使用Console登录到设备并进入XML视图即建立NETCONFoverConsole连接.
建议尽量不使用NETCONFoverConsole方式,因Console口的速度限制,且XML视图下不输出提示、告警信息,比较容易出现错误.
使用HTTP或HTTPS登录到设备的Web页面进行配置时,Web使用NETCONFoverHTTP或NETCONFoverHTTPs连接方式与设备交互配置信息.
交互过程对用户透明,本文后续不再介绍.
通过Web配置设备的支持情况与产品型号有关,请以设备的实际情况为准.
使用SSH配置工具或使用SSH登录到设备进入XML视图执行NETCONF配置时需要使用NETCONFoverSSH连接方式.
使用SOAP配置工具下发NETCONF指令配置设备时,需要使用NETCONFoverSOAPoverHTTP或NETCONFoverSOAPoverHTTPS方式.
本文重点介绍通过NETCONFoverSSH、NETCONFoverSOAPoverHTTP和NETCONFoverSOAPoverHTTPS配置工具与设备建立连接,其他连接方式不再介绍.
104在设备上为NETCONF用户设置权限使用配置工具与设备建立NETCONF连接前,需要确保NETCONF用户具有对应的操作权限.
4.
1确定NETCONF用户需要的权限在ComwareV7系统中,用户的权限通过它所属的角色的权限来控制,角色的权限主要包括规则和资源策略两个方面.
在规则方面,NETCONF用户角色需要如下权限:执行NETCONF操作需要具有执行XML元素NETCONFRPC节点的权限,不同NETCONF操作需要的权限不同,具体请参见表2.
执行NETCONF操作内容的权限可以通过用户执行XML元素具体模块及其表的Xpath的权限控制,例如配置用户具有执行XML元素接口模块的权限,需要执行rulenumberpermitreadwriteexecutexml-elementifmgr/命令.
在资源策略方面,可以根据实际需要配置用户角色操作接口、VLAN、VPN、安全域的权限.
缺省情况下,用户具有操作所有资源的权限.
缺省用户角色network-admin、mdc-admin、context-admin可操作对应设备/MDC/Context的所有功能和资源(除安全日志文件管理相关命令displaysecurity-logfilesummary、info-centersecurity-logfiledirectory、security-logfilesave之外)的权限,如果用户所属角色是这几种,则不需要进行权限配置,只需要指定用户角色为network-admin、mdc-admin或context-admin即可.
更多关于用户角色权限控制的内容,请参见"基础配置指导"中的"RBAC".
表2执行NETCONF操作需要配置的权限执行的NETCONF操作需要配置的权限节点需要配置的权限建立NETCONF会话不涉及执行xml命令的权限从设备订阅事件rpc/create-subscriptionexecute给当前配置加锁rpc/lockexecute给当前配置解锁rpc/unlockexecute使用获取信息rpc/getread使用获取系统支持的事件流rpc/get/filter/netconfread使用获取NETCON状态信息rpc/get/filter/netconf-stateread使用获取信息rpc/get-bulkread使用获取配置信息rpc/get-configread使用获取配置信息rpc/get-bulk-configread使用获取yang文件信息rpc/get-schemaread编辑指定模块数据rpc/edit-configwrite执行一个操作rpc/actionexecute11执行的NETCONF操作需要配置的权限节点需要配置的权限配置保存rpc/savewrite配置回滚rpc/rollbackwrite配置加载rpc/loadwrite命令行操作rpc/CLIwrite获取会话信息rpc/get-sessionsread关闭另一个会话rpc/kill-sessionexecute执行语法验证rpc/validateread4.
2定义NETCONF用户角色规则(1)进入系统视图.
system-view(2)创建用户角色,并进入用户角色视图.
rolenamerole-name(3)请根据需要配置用户操作权限的规则.
{配置用户具有执行XML元素NETCONFRPC节点的权限.
rulenumberpermit{execute|read|write}*xml-elementrpc/通过rulenumberpermit{execute|read|write}*xml-elementrpc/可以查看具体操作的列表.
不指定具体操作时,表示所有操作.
{配置用户执行XML元素具体模块的权限.
rulenumber{deny|permit}{execute|read|write}*xml-element[module-xpath]通过rulenumber{deny|permit}{execute|read|write}*xml-element可以查看具体模块列表,通过rulenumber{deny|permit}{execute|read|write}*xml-elementmodule-name/可以查看模块中具体表的列表.
不指定具体模块和表时表示所有模块/所有表.
4.
3配置NETCONF用户属性1.
配置限制和指导本文采用新建本地用户介绍配置过程.
使用远端认证用户的配置方式请参见具体认证方式的配置指导,只要使通过认证的NETCONF用户满足以下两个条件:使用NETCONFoverSSH连接方式时,服务类型为SSH.
使用NETCONFoverSOAPoverHTTP连接方式时,服务类型为HTTP.
使用NETCONFoverSOAPoverHTTPS连接方式时,服务类型为HTTPS.
具有所需权限.
122.
配置步骤(1)进入系统视图.
system-view(2)添加设备管理类本地用户,并进入设备管理类本地用户视图.
local-useruser-nameclassmanage(3)设置本地用户的密码.
(非FIPS模式)password[{hash|simple}string](FIPS模式)password在非FIPS模式下,可以不为本地用户设置密码;在FIPS模式下,必须且只能通过交互式方式设置明文密码,否则用户的本地认证不能成功.
(4)设置本地用户可以使用的服务类型.
请根据连接方式选择其中一项进行配置{使用NETCONFoverSSH连接方式:service-typessh{使用NETCONFoverSOAPoverHTTP或NETCONFoverSOAPoverHTTPS连接方式:(非FIPS模式)service-type{http|https}*(FIPS模式)service-typehttps缺省情况下,本地用户不能使用任何服务类型.
(5)设置本地用户的角色.
authorization-attributeuser-rolerole-name5在设备上进行连接方式相关配置5.
1选用NETCONFoverSSH连接方式5.
1.
1配置SSH登录以下配置步骤只介绍采用password方式认证SSH客户端的配置方法,publickey方式的配置方法及SSH的详细介绍,请参见"安全配置指导"中的"SSH".
(1)进入系统视图.
system-view(2)生成本地密钥对.
(非FIPS模式)public-keylocalcreate{dsa|ecdsa[secp192r1|secp256r1|secp384r1|secp521r1]|rsa}[namekey-name]13(FIPS模式)public-keylocalcreate{dsa|ecdsa[secp256r1|secp384r1|secp521r1]|rsa}[namekey-name](3)(可选)创建SSH用户,并指定SSH用户的服务类型为NETCONF,认证方式为password.
sshuserusernameservice-typenetconfauthentication-typepassword(4)进入VTY用户线或VTY用户线类视图.
{进入VTY用户线视图.
linevtyfirst-number[last-number]{进入VTY用户线类视图.
lineclassvty(5)配置VTY用户线的认证方式为scheme方式.
(非FIPS模式)authentication-modescheme缺省情况下,VTY用户线的认证方式为password方式.
(FIPS模式)authentication-modescheme缺省情况下,VTY用户线的认证方式为scheme方式.
5.
1.
2配置NETCONFoverSSH(1)进入系统视图.
system-view(2)开启NETCONFoverSSH.
netconfsshserverenable缺省情况下,NETCONFoverSSH处于关闭状态.
(3)配置NETCONFoverSSH的监听端口.
netconfsshserverportport-number缺省情况下,NETCONFoverSSH的监听端口为830.
(4)(可选)开启NETCONF日志功能.
netconflogsource{all|{agent|soap|web}*}{protocol-operation{all|{action|config|get|set|session|syntax|others}*}|row-operation|verbose}缺省情况下,NETCONF日志功能处于关闭状态.
(5)通过SSH配置工具与设备建立NETCONFoverSSH会话.
关于SSH配置工具的使用方法,具体参见SSH配置工具的配置指导.
145.
2选用NETCONFoverSOAPoverHTTP或NETCONFoverSOAPoverHTTPS连接方式1.
功能简介使用NETCONFoverSOAPoverHTTP或NETCONFoverSOAPoverHTTPS连接方式时,配置工具将配置指令封装成SOAP报文后通过HTTP或HTTPS协议传输到设备.
2.
配置限制和指导本文仅介绍基本配置,有关SOAP报文的DSCP优先级、NETCONF客户端访问控制、NETCONF用户使用的认证域等相关内容请参见产品对应版本的NETCONF配置、NETCONF命令手册.
3.
开启NETCONFoverSOAP功能(1)进入系统视图.
system-view(2)开启NETCONFoverSOAP功能.
(非FIPS模式)netconfsoap{http|https}enable(FIPS模式)netconfsoaphttpsenable缺省情况下,NETCONFoverSOAP处于关闭状态.
(3)(可选)开启NETCONF日志功能.
netconflogsource{all|{agent|soap|web}*}{protocol-operation{all|{action|config|get|set|session|syntax|others}*}|row-operation|verbose}缺省情况下,NETCONF日志功能处于关闭状态.
(4)通过配置工具与设备建立NETCONFoverSOAP会话.
关于配置工具的使用方法,具体参见配置工具的配置指导.
6为NETCONF客户端与设备建立连接6.
1配置限制和指导建立NETCONF会话后,客户端需要先与设备进行能力集交互,完成能力集的交互后,设备才会处理客户端发送的其他请求.
能力集的表示形式为URI(UniformResourceIdentifier,统一资源标识符),例如"urn:ietf:params:netconf:base:1.
0".
客户端支持的能力集以客户端实际情况为准.
客户端发送Hello报文时,请根据实际情况指定能力集.
本文以客户端指定能力集urn:ietf:params:netconf:base:1.
0为例进行举例.
多个用户同时配置设备时,可能会导致用户配置与配置结果不一致,因此,请避免多个用户同时配置设备.
设备同一时间内允许建立的最大会话数可以通过aaasession-limit命令配置,关于该命令的详细描述,请参见"安全配置指导"中的"AAA".
用户数超过上限后,新登录的用户将登录失败.
156.
2NETCONF方式适用于NETCONFoverSSH配置工具的方式.
1.
客户端向设备发送Hello客户端收到设备发送的能力集协商报文后,需要给设备发送如下格式的报文,告知设备客户端支持哪些NETCONF能力集.
Hello协商报文格式如下:urn:ietf:params:netconf:base:1.
0一个和选项对中只能填写一个能力集.
可以使用多个和选项对,配置多个能力集.
2.
设备向客户端回复能力集urn:ietf:params:netconf:base:1.
0更多能力集显示略,以设备的实际回复为准http://www.
h3c.
com/netconf/action:1.
0-Configurationmodule=Configuration&revision=2015-05-071和之间的内容表示设备支持的能力集,以具体设备实际情况为准.
和之间的内容表示为本次会话分配的会话ID,用来唯一标识本次会话.
6.
3NETCONFoverSOAP方式适用于NETCONFoverSOAP配置工具的方式.
1.
客户端向设备发送Hellotesttestzh-cn16urn:ietf:params:netconf:base:1.
0一个和选项对中只能填写一个能力集.
可以使用多个和选项对,配置多个能力集.
2.
设备向客户端回复能力集100002fbf58da6797490a3ef11142d879212urn:ietf:params:netconf:base:1.
0更多能力集显示略,以设备的实际回复为准http://www.
h3c.
com/netconf/action:1.
0-Configurationmodule=Configuration&revision=2015-05-072和之间的内容表示设备支持的能力集,以具体设备实际情况为准.
和之间的内容表示为本次会话分配的会话ID,用来唯一标识本次会话.
7构造NETCONF请求7.
1NETCONFAPI文档介绍7.
1.
1文档组织NETCONFAPI文档分属于三个命名空间:data命名空间:提供系统的运行状态数据和配置数据,为只读,支持下发get和get-bulk操作.
17config命名空间:提供系统的配置数据信息,可读写,支持下发get-config、get-bulk-config和edit-config操作.
action命名空间:通常提供系统非配置类的操作和运行状态数据(如ping、reset操作),可读写,支持下发action操作.
每一个支持NETCONF的模块都包括一个或者多个NETCONFAPI文档,分别描述其在data命名空间、config命名空间和action命名空间支持的功能.
文档命名遵循如下格式,其中XXX代表模块名:data命名空间:ComwareV7XXXNETCONFXMLAPIDataReference.
docxconfig命名空间:ComwareV7XXXNETCONFXMLAPIConfigurationReference.
docxaction命名空间:ComwareV7XXXNETCONFXMLAPIActionReference.
docx7.
1.
2文档内容说明每一个NETCONFAPI文档对应一个功能模块,如ARP、DHCP.
每个模块由一个或者多个表组成.
表以行和列的形式进行组织:行:表示一个对象实例.
列:表示每个对象实例中包含的信息.
以ARP表为例,一条ARP表项为一行,ARP表项中的IP地址、MAC地址、所属VLAN等为列.
在NETCONFAPI文档中,每个表包含下面几个部分的信息:表名称:提供了从模块开始的路径和最终的表名,如:ACL/Base表的XML结构(XMLstructure):列举了本表从模块开始的XML表示方式,但不包括值信息,例如:表描述(Tabledescription):提供模块名称、表名称、表类型、行名称和约束信息.
其中,表类型取值包括:{Multi-instancetable:多实例表格,表示该表可以包含多行.
{Single-instancetable:单实例表格,表示该表能包括一行.
列详细信息(Columns):提供列名称、列描述、列数据类型和约束条件等信息.
列数据类型取值包括:{Index:表示该列为表格的索引列.
{N/A:表示该列不作为索引列.
18应答的XML结构(ResponsedXMLstructure):列举了本表从模块开始应答消息的XML表示方式,但不包括值信息.
客户端可以依据返回结果来判断操作执行的效果.
仅action命名空间中可以返回操作结果的表提供此信息.
例如:应答列详细信息(Responsedcolumns):用来描述应答XML结构中的各列.
ComwareV7NETCONFAPI文档描述的是全集,需要结合设备的XSD文件来查看当前设备的支持情况.
设备可能不支持某些功能、某些表格或某些列.
7.
2使用NETCONFAPI文档构造NETCONF请求NETCONF请求构造方法为:(1)构造XML请求的协议定义部分,即top外层的部分.
以get操作为例,top以外的部分为协议定义部分,可以直接从现有请求或者本文档拷贝.
指定模块,子模块,表名,列名其他操作的协议定义部分格式,请参见"7.
4ComwareV7中支持的NETCONF操作类型".
(2)构造top元素.
top元素的格式通常为:.
其中,http://www.
h3c.
com/netconf/data:1.
0为H3C自定义的命名空间,需要根据需要设置为data、config或action命名空间,即data:1.
0也可根据需要设置为config:1.
0或action:1.
0.
(3)构造模块操作部分.
拷贝NETCONFAPI文档中表格XML结构到"指定模块,子模块,表名,列名"部分,然后依据实际情况删除不需要的列或者为已知列赋值.
197.
3构造NETCONF请求示例config命名空间中ARP模块的ArpConfig表用来配置ARP表项,其XML结构如图2所示.
该表中包括ARP表项的IP地址、MAC地址、所属VPN实例、所属VLAN、出接口、表项类型信息.
图2ARP/ArpConfig表的XML结构通过NETCONF创建公网中IP地址为1.
1.
1.
1、MAC地址为1-1-1、所属VLAN为VLAN10、出接口索引为20的静态ARP表项时,需要采用edit-config:merge操作.
该操作使用的XML请求为:01.
1.
1.
100-01-00-01-00-0210201207.
4ComwareV7中支持的NETCONF操作类型ComwareV7平台对NETCONF标准协议做了一些修订,删除了不常用的操作,增加部分新的操作,如表3所示.
表3NETCONF协议支持的操作操作说明XML格式样例get获取数据,包括运行状态数据和配置数据获取Syslog模块的全部数据的XML请求如下:get-config获取配置数据,和get不同,它只返回非缺省的配置数据.
如果未配置数据,则返回一个空的获取接口表内所有配置的XML请求如下:21操作说明XML格式样例get-bulk从指定索引的下一条开始批量获取后续N条数据(索引行数据不返回),包括运行状态数据和配置数据.
用户通过index属性指定索引,通过count属性指定N.
如未指定索引,则以第一条为索引;如未指定N,或者数据表中符合条件的数据记录不足N条,则返回表中所有剩下的数据条目get操作会返回所有符合条件的数据,这在某些情况下会导致效率问题.
get-bulk允许用户从固定数据项开始,向后获取指定条目的数据记录取全部接口的数据的xml请求如下:get-bulk-config从指定索引的下一条批量获取配置数据.
和get-config类似,只返回非默认配置;其他约束类似get-bulk获取全部接口配置信息的xml请求如下:22操作说明XML格式样例edit-config增量下发增量下发选项incremental放置在列上,对于类似vlanpermitlist列表集合性质的列,可能支持增量下发,用户请求XML中有增量下发选项时,最终执行结果不影响本列原有的数据.
增量下发只支持edit-config,但不支持edit-config中的replace.
不是所有模块都支持增量下发,具体请参见模块对应的NETCONFXMLAPI,查找其是否支持增量下发下发一个接口的VLAN配置,使用增量下发,262接口原有untagvlanlist为12~15,下发后为1~10,12~15.
XML请求如下:2621-10edit-config:merge在当前运行配置的基础上直接运行指定配置merge操作必须指定具体的操作对象(行):如果指定的对象存在,则直接配置该对象如果指定的对象不存在,但允许创建,则先创建再配置该对象如果指定的对象不存在且不允许创建,则返回merge失败将BufferSize设置为120的xml请求如下:12023操作说明XML格式样例edit-config:create创建指定对象.
create操作必须指定配置对象.
create操作的XML数据格式和merge类似,只是operation属性需要指定为"create"如果当前配置表支持创建对象,且当前对象不存在,则先创建配置对象,再创建指定的配置如果配置对象下对应的配置项已经存在,则返回data-exist错误同上,把merge修改为create即可edit-config:replace如果指定的对象存在,则替换指定对象的配置为当前配置如果指定的对象不存在,但允许创建,则先创建再配置该对象为当前配置如果指定对象不存在且不允许创建,则不进行replace操作,返回invalid-value错误,提示用户配置对象不存在同上,把merge修改为replace即可edit-config:remove删除指定配置当指定的删除对象中只有表索引时,则删除此配置指定对象的所有配置,同时删除指定对象当指定的删除对象中不仅仅有表索引还存在配置项时,则删除此对象下面的指定配置如果系统中指定对象不存在,或者XML消息未指定对象,则直接返回成功同上,把merge修改为remove即可edit-config:delete删除指定配置当指定的删除对象中只有表索引时,则删除此配置指定对象的所有配置,同时删除指定对象当指定的删除对象中不仅仅有表索引还存在配置项时,则删除此对象下面的指定配置如果系统中指定对象不存在,则直接返回不存在的错误消息同上,把merge修改为delete即可24操作说明XML格式样例edit-config默认操作选项edit-config操作用于修改当前系统配置.
NETCONF定制了四种修改配置的方式:merge、create、delete和replace.
当XML消息中未指定修改配置方式的时候,则使用默认操作做为当前指令的操作方式,不会修改默认操作的缺省值默认操作的缺省值是merge,在XML消息中可以通过节点来设置默认操作,取值为:merge:当配置方式和默认操作方式均未指定时,使用该方式replace:当配置方式未指定,默认操作指定为replace的时候,edit-config操作会默认为replace操作none:当配置方式未指定,默认操作指定为none的时候,edit-config操作会默认为none操作.
none操作主要用来检查,下发为none操作的配置仅仅做Schema校验,不进行真正的配置下发.
语法检查通过,就返回ok成功,否则失败下发一个空的操作,该操作仅仅验证格式,并不真正下发给系统,xml请求如下:none26222222225操作说明XML格式样例edit-config默认错误处理选项edit-config将指定的配置设置到系统上,完成配置设置的操作.
在执行edit-config的过程中,如果遇到一个实例配置出错,默认情况下会直接返回错误,但是为了使我们的应用更加灵活,edit-config为我们提供了错误选项,通过错误选项取值的不同,在发生错误的时候进行不同的处理操作节点用于设置一个实例配置出错后,后续实例配置的处理方式,缺省值为stop-on-error,全部取值为:stop-on-error:停止处理,返回错误.
此选项为默认选项continue-on-error:继续处理,但是报告错误rollback-on-error:停止并回滚配置下发两个接口的配置,当下发第一个接口的配置发生错误时,继续进行下一个接口配置的下发,XML请求如下:continue-on-error262222102412633331024126操作说明XML格式样例edit-config测试处理选项在真正执行edit-config操作时,可指定一个测试选项,使用节点来决定当前配置是否真正下发.
该节点的缺省值为test-then-set,全部取值为:test-then-set:如果没有错误则将配置设置到系统set:将配置设置到系统test-only:只测试,并不下发配置到系统.
语法检查通过,就返回ok成功,否则失败下发一个接口的配置,仅测试,XML请求如下:test-only26222221action下发非配置数据的设置动作,比如,reset操作清除全部接口的统计信息,XML请求如下:lock锁保护的是配置数据,即edit-config中可以指定的那些模块的配置数据,其他操作不受锁的限制NETCONF锁仅仅保护NETCONF会话,不保护SNMP等其他请求下发的配置禁止NETCONF会话修改设备的当前配置,XML请求如下:27操作说明XML格式样例unlock取消锁保护当会话结束时锁也会被自动释放取消锁保护,允许NETCONF会话修改设备的当前配置:get-sessions获取当前系统中所有NETCONF会话的信息(不能指定sessions-ID)获取当前系统中所有NETCONF会话的信息:close-session关闭当前NETCONF会话,并释放锁和这个session用到的内部资源(如内存等),退出XML视图关闭当前NETCONF会话,并释放锁和这个session用到的内部资源(如内存等),退出XML视图kill-session关闭其他NETCONF会话,不支持关闭用户自己的NETCONF会话关闭session-id为1的NETCONF会话:128操作说明XML格式样例CLI执行命令行的命令.
请求消息将命令行语句封装在标签中,命令行输出信息被封装在标签中返回CLI支持Configuration和Execution方式执行命令行:Execution:在用户视图下执行命令行Configuration:在系统视图下执行命令行.
使用该方式时需要指定exec-use-channel的属性:{false:不使用channel方式执行命令行{true:使用临时channel执行命令行,执行完成后,自动关闭该channel{persist:使用保留channel执行命令行.
使用该方式时,则需要执行Open-channel操作打开当前对话的channel;使用完成后,执行Close-channel关闭Channel.
如果未执行Open-channel操作,则系统将自动打开channel;如果未执行关闭保留channel操作,再次使用保留channel时,系统在上次最后执行的命令行所在视图再次执行命令行对于其他视图下命令,则需要在Configuration下先指定进子视图的命令,再指定配置命令一个NETCONF会话只能打开一个保留channel,可以打开多个临时channel不支持执行交互式命令使用channel方式执行命令行时,不支持执行quit命令退出用户视图在系统视图下不使用channel方式执行telnetserverenable命令:telnetserverenablesave保存系统运行配置.
save操作可以使用子元素来指定保存的配置文件名称.
当save操作中不存在子元素列时,则设备会自动将当前运行配置保存到主用下次启动配置文件中.
OverWrite属性用来判断当指定的配置文件名存在时,当前配置是否覆盖原配置文件并保存成功.
Binary-only属性用来只保存当前使用的二进制配置文件将设备当前配置保存到文件test.
cfg中:test.
cfgload配置加载.
操作执行后,指定文件中的配置会被合并到设备的当前配置中将文件a1.
cfg中的配置合并到设备的当前配置中:a1.
cfg29操作说明XML格式样例rollback配置回滚.
操作必须使用子元素来指定需要回滚的配置文件名称操作执行后,当前系统运行配置会被完全替换为指定文件中所描述的配置将设备当前配置回退到文件1A.
cfg中配置的状态:1A.
cfg8使用XML工具简单验证构造的XML正确性在下发请求前,建议先利用XSD使用工具验证下请求的XML设备是否支持,是否存在格式问题.
本文使用AltovaXMLSpy来验证XML是否正确,也可以使用其他支持XML验证的工具.
(1)把设备XSD文件拷贝出来,放在一个目录中.
XSD文件随软件版本发布.
(2)新建XML文件,将待验证NETCONF报文粘贴到该XML文件里.
图3新建XML文件(3)点击XML—〉CheckFormedness菜单验证XML格式是否良好.
如果有XML格式问题,请根据下发Messages处提示信息修改.
30图4验证XML格式是否良好(4)根据XSD文件验证报文是否合法.
点击DTD/Schema—〉AssignSchema菜单,选择main.
xsd.
图5选择XSD文件31(5)点击XML—〉ValidateXML菜单验证XML是否合法.
如果Messages处有错误提示,请根据提示进行修改.
修改完成后再次验证,直到通过验证.
图6验证XML是否合法(合法时)图7验证XML是否合法(不合法时)329正式下发配置指令使用XSD验证XML报文正确后,即可正式通过配置工具下发配置指令.
10关闭NETCONF会话1.
客户端发送报文2.
结果验证设备向客户端应答如下报文,但此时由于关闭了会话,客户端可能收不到此报文.
11NETCONF典型配置举例11.
1通过NETCONF配置DHCP服务器和DHCP客户端11.
1.
1组网需求在主机上安装NETCONF客户端软件,通过NETCONF配置DeviceA作为DHCP服务器、DeviceB作为DHCP客户端.
DHCP服务器可以为DHCP客户端分配以下网络参数:网段10.
1.
1.
0/24内的IP地址.
IP地址租约为1天.
网关地址为10.
1.
1.
1.
DNS服务器地址为10.
1.
1.
10.
图8通过NETCONF配置DHCP服务器组网图3311.
1.
2在DeviceA上配置NETCONF功能(1)开启NETCONFoverSOAP功能.
#开启NETCONFoverSOAP功能.
system-view[DeviceA]netconfsoaphttpenable(2)配置用户admin可以通过NETCONF操作DHCP和接口管理Ifmgr模块.
#创建用户角色dhcp-ifmgr-vlan,指定该用户角色可以读、写、执行DHCP和Ifmgr模块的XML元素.
[DeviceA]rolenamedhcp-ifmgr-vlan[DeviceA-role-dhcp-ifmgr-vlan]rule1permitcommandxml[DeviceA-role-dhcp-ifmgr-vlan]rule2permitreadwriteexecutexml-elementrpc/[DeviceA-role-dhcp-ifmgr-vlan]rule3permitreadwriteexecutexml-elementdhcp/[DeviceA-role-dhcp-ifmgr-vlan]rule4permitreadwriteexecutexml-elementifmgr/[DeviceA-role-dhcp-ifmgr-vlan]rule5permitreadwriteexecutexml-elementvlan/[DeviceA-role-dhcp-ifmgr-vlan]quit#创建设备管理类本地用户admin,设置其密码为admin、服务类型为HTTP.
[DeviceA]local-useradmin[DeviceA-luser-manage-admin]passwordsimpleadmin[DeviceA-luser-manage-admin]service-typehttp#配置为用户admin授权的用户角色为dhcp-ifmgr-vlan.
[DeviceA-luser-manage-admin]authorization-attributeuser-roledhcp-ifmgr-vlan11.
1.
3通过NETCONF客户端配置DHCP服务器(1)配置NETCONF客户端软件,配置方法请参见客户端软件相关指导,具体配置过程略.
(2)向DeviceA发送Hello#在TestCase-DHCP中添加步骤Hello,XML内容如下.
其中,用户名为admin,密码为admin.
所有步骤窗口中的URL地址均需要设置为:http://192.
168.
1.
121/soap/netconf/.
adminadminenurn:ietf:params:netconf:base:1.
034#接收到的应答消息中,auth:AuthInfo为100001ac479ef0988d587b74e787a0917f69.
后续的请求报文都需要携带该认证信息.
100001ac479ef0988d587b74e787a0917f69urn:ietf:params:netconf:base:1.
0.
.
.
省略若干capability.
.
.
1(3)获取接口GigabitEthernet1/0/1和GigabitEthernet1/0/2的接口索引值.
#创建步骤GetIfINdex,向DeviceA发送请求获取接口索引值.
100001ac479ef0988d587b74e787a0917f69GigabitEthernet1/0/1GigabitEthernet1/0/235#接收到的应答消息,获知接口GigabitEthernet1/0/1和GigabitEthernet1/0/2的索引值分别为1和2.
100001ac479ef0988d587b74e787a0917f691GigabitEthernet1/0/1(4)创建VLAN,将接口加入VLAN,创建VLAN接口,并配置VLAN接口的IP地址.
#创建步骤CreateVLAN,在DeviceA上创建VLAN10和20,将接口GigabitEthernet1/0/1和GigabitEthernet1/0/2分别加入VLAN10和20.
创建VLAN接口10和20,配置其IP地址分别为10.
1.
1.
1/24和192.
168.
1.
1/24.
100001ac479ef0988d587b74e787a0917f693610110.
1.
1.
1255.
255.
255.
0202192.
168.
2.
1255.
255.
255.
0#接收到应答消息,表明配置成功.
100001ac479ef0988d587b74e787a0917f69(5)创建DHCP地址池#创建步骤CreatePool,在DeviceA上创建DHCP地址池pool1,该地址池分配10.
1.
1.
0/24网段地址、IP地址租约为1天、网关地址为10.
1.
1.
1、DNS服务器地址为10.
1.
1.
10.
37100001ac479ef0988d587b74e787a0917f691pool110.
1.
1.
0255.
255.
255.
0100010.
1.
1.
110.
1.
1.
10#接收到应答消息,表明配置成功.
100001ac479ef0988d587b74e787a0917f6938(6)开启DHCP服务.
#创建步骤DHCP-Enable,开启DHCP服务.
100001ac479ef0988d587b74e787a0917f691#接收到应答消息,表明配置成功.
100001ac479ef0988d587b74e787a0917f693911.
1.
4在DeviceB上通过CLI配置DHCP客户端功能#创建VLAN10,将接口GigabitEthernet1/0/1加入VLAN10.
system-view[DeviceB]vlan10[DeviceB-vlan10]portGigabitEthernet1/0/1[DeviceB-vlan10]quit#创建VLAN接口10,配置该接口通过DHCP获取IP地址.
[DeviceB]interfacevlan-interface10[DeviceB-Vlan-interface10]ipaddressdhcp-alloc[DeviceB-Vlan-interface10]quit11.
1.
5验证配置#在DeviceB上查看接口IP地址,可以看到VLAN接口10获取到IP地址10.
1.
1.
2.
[DeviceB]displayipinterfacebrief*down:administrativelydown(s):spoofing(l):loopbackInterfacePhysicalProtocolIPaddressVPNinstanceDescriptionVlan10upup10.
1.
1.
2----#在DeviceB上查看DHCP客户端信息,可以看到VLAN接口10获取到的参数与DHCP服务器上的配置一致.
[DeviceB]displaydhcpclientverboseVlan-interface10DHCPclientinformation:Currentstate:BOUNDAllocatedIP:10.
1.
1.
2255.
255.
255.
0Allocatedlease:86400seconds,T1:38637seconds,T2:75600secondsLeasefromJan108:54:482013toJan208:54:482013DHCPserver:10.
1.
1.
1TransactionID:0x81876da6Defaultrouter:10.
1.
1.
1DNSservers:10.
1.
1.
10ClientIDtype:ascii(typevalue=00)ClientIDvalue:00e0.
fc00.
511a-Vlan10ClientID(withtype)hex:0030-3065-302e-6663-3030-2e35-3131-612d-566c-616e-3130T1willtimeoutin0days10hours40minutes20seconds11.
2基于ncclient工具的NETCONFoverSSH配置举例11.
2.
1组网需求在主机Host上安装开源工具ncclient,通过主机Host与Device设备建立NETCONFoverSSH会话,实现如下需求:查询Device设备的ARP表项和接口信息.
配置BGP.
4011.
2.
2组网图图9通过NETCONF查询和配置Device设备组网图11.
2.
3配置步骤(1)配置主机Host与Device设备的IP地址,确保主机Host与Device互通(略).
(2)在Device设备上开启NETCONFoverSSHserver功能.
#生成RSA密钥对.
system-view[Router]public-keylocalcreatersaTherangeofpublickeymodulusis(512~4096).
Ifthekeymodulusisgreaterthan512,itwilltakeafewminutes.
PressCTRL+Ctoabort.
Inputthemoduluslength[default=1024]:GeneratingKeys.
.
.
.
Createthekeypairsuccessfully.
#生成DSA密钥对.
[Router]public-keylocalcreatedsaTherangeofpublickeymodulusis(512~2048).
Ifthekeymodulusisgreaterthan512,itwilltakeafewminutes.
PressCTRL+Ctoabort.
Inputthemoduluslength[default=1024]:GeneratingKeys.
.
.
.
Createthekeypairsuccessfully.
#生成ECDSA密钥对.
[Router]public-keylocalcreateecdsasecp256r1GeneratingKeys.
.
.
.
Createthekeypairsuccessfully.
#开启NETCONFoverSSH服务器功能.
system-view[Device]netconfsshserverenable#创建用户admin,并配置密码为admin和用户使用的服务类型为SSH.
[Device]local-useradminclassmanage[Device-luser-manage-admin]passwordsimpleadmin[Device-luser-manage-admin]service-typessh41#配置用户admin的授权角色为network-admin和network-operator.
[Device-luser-manage-admin]authorization-attributeuser-rolenetwork-admin[Device-luser-manage-admin]authorization-attributeuser-rolenetwork-operator[Device-luser-manage-admin]quit#配置admin登录设备时,需要输入用户名和密码进行AAA认证.
[Device]linevty063[Device-line-vty0-63]authentication-modescheme[Device-line-vty0-63]user-rolenetwork-admin[Device-line-vty0-63]user-rolenetwork-operator(3)在主机Host安装ncclient.
ncclient安装有如下两种方法:{使用pip工具安装.
在命令行执行pipinstallncclient安装.
pip安装的好处在于,在联网的前提下,就可以把ncclient依赖的软件包都下载和安装完整,省去了排错的问题.
{使用源码安装.
在官网下载软件包,地址https://pypi.
org/project/ncclient/,解压文件,使用pythonsetup.
pyinstall命令行安装.
源码安装需要手工安装好多依赖包.
(4)基于ncclient编写Device设备信息查询和功能配置的Python代码.
#创建query.
py文件,编写查询Device设备的ARP表项和接口信息代码.
#!
/usr/bin/envpython2.
7importsys,os,warningswarnings.
simplefilter("ignore",DeprecationWarning)fromncclientimportmanagerimporttimedefmy_unknown_host_cb(host,figerprint):returnTruedefdemo(host,port,user,pwd):withmanager.
connect_ssh(host=host,port=port,username=user,password=pwd,unknown_host_cb=my_unknown_host_cb,device_params={'name':'h3c'})asm:forcinm.
server_capabilities:print(c)get_xml="""42"""print(m.
get(('subtree',get_xml)))if__name_main__':demo("17.
1.
1.
124",830,"admin","admin")print("closed")time.
sleep(1)保存该文件后,在主机Host执行pythonquery.
py命令执行该文件,即可看到Device设备的ARP表项和接口信息.
#创建deploy.
py文件,编写Device设备使能BGPNSR功能的Python代码.
#!
/usr/bin/envpython2.
7importsys,os,warningswarnings.
simplefilter("ignore",DeprecationWarning)fromncclientimportmanagerimporttimedefmy_unknown_host_cb(host,figerprint):returnTruedefdemo(host,port,user,pwd):xml="""111143"""withmanager.
connect_ssh(host=host,port=port,username=user,password=pwd,unknown_host_cb=my_unknown_host_cb,device_params={'name':'h3c'})asm:forcinm.
server_capabilities:print(c)print(xml)print(m.
edit_config(target='running',config=xml))if__name_main__':demo("17.
1.
1.
124",830,"admin","admin")保存该文件后,在主机Host上执行pythondeploy.
py命令执行该文件,会收到Device设备返回的信息,如果"rpc-reply"元素内显示信息为"ok",即表示执行成功.
然后在Device设备上使用displaycurrent-configurationconfigurationbgp命令查看BGPAS111的配置信息.

CloudCone中国春节优惠活动限定指定注册时间年付VPS主机$13.5

CloudCone 商家产品还是比较有特点的,支持随时的删除机器按时间计费模式,类似什么熟悉的Vultr、Linode、DO等服务商,但是也有不足之处就在于机房太少。商家的活动也是经常有的,比如这次中国春节期间商家也是有提供活动,比如有限定指定时间段之前注册的用户可以享受年付优惠VPS主机,比如年付13.5美元。1、CloudCone新年礼物限定款仅限2019年注册优惠购买,活动开始时间:1月31...

无忧云-河南洛阳BGP,CEPH集群分布式存储,数据安全可靠,活动期间月付大优惠!

 无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点...

水墨云历史黑名单IDC,斟酌选购

水墨云怎么样?本站黑名单idc,有被删除账号风险,建议转出及数据备份!水墨云ink cloud Service是成立于2017年的商家,自2020起开始从事香港、日本、韩国、美国等地区CN2 GIA线路的虚拟服务器租赁,同时还有台湾、国内nat vps相关业务,也有iplc专线产品,相对来说主打的是大带宽服务器产品。注意:本站黑名单IDC,有被删除账号风险,请尽量避免,如果已经购买建议转出及数据备...

ignore_user_abort为你推荐
著作权登记为什么要申请著作权登记蓝色骨头手机谁有崔健执导的电影《蓝色的骨头》。bbs.99nets.com怎么打造完美SFjavmoo.com0904-javbo.net_avop210hhb主人公叫什么,好喜欢,有知道的吗www.sesehu.comwww.121gao.com 是谁的网站啊4400av.com在www.dadady.com 达达电影看片子很快的啊ip查询器怎么样查看自己电脑上的IP地址lcoc.topeagle solder stop mask top是什么层www.ijinshan.com桌面上多了一个IE图标,打开后就链接到009dh.com这个网站,这个图标怎么删掉啊?www.diediao.com谁知道台湾的拼音怎么拼啊?有具体的对照表最好!
.cn域名注册 提供香港vps 域名主机基地 免费动态域名解析 星星海 GGC 美国主机推荐 2017年万圣节 java空间 嘉洲服务器 me空间社区 nerds hkt shopex主机 工信部网站备案查询 浙江服务器 lamp兄弟连 七十九刀 重庆联通服务器托管 googlevoice 更多