• [技术干货] VPN组网
    VPN(Virtual Private Network,虚拟专用网)是一种在公用网络上建立专用网络的技术。它之所以称之为虚拟网,主要是因为VPN的两个节点之间并没有像传统专用网那样使用端到端的物理链路,而是架构在公用网络如Internet之上的逻辑网络,用户数据通过逻辑链路传输。按照VPN协议分,常见的VPN种类有:IPsec、SSL、GRE、PPTP和L2TP等。其中IPsec是通用性较强的一种VPN技术,适用于多种网络互访的场景。IPsec VPN是指采用IPsec实现远程接入的一种VPN技术,通过在公网上为两个或多个私有网络之间建立IPsec隧道,并通过加密和验证算法保证VPN连接的安全。IPsec VPN保护的是点对点之间的通信,通过IPsec VPN可以在主机和主机之间、主机和网络安全网关之间或网络安全网关(如路由器、防火墙)之间建立安全的隧道连接。其协议主要工作在IP层,在IP层对数据包进行加密和验证。相对于其他VPN技术,IPsec VPN安全性更高,数据在IPsec隧道中都是加密传输,但相应的IPsec VPN在配置和组网部署上更复杂。IPsec的工作原理大致可以分为4个阶段:识别“感兴趣流”。网络设备接收到报文后,通常会将报文的五元组等信息和IPsec策略进行匹配来判断报文是否要通过IPsec隧道传输,需要通过IPsec隧道传输的流量通常被称为“感兴趣流”。协商安全联盟(Security Association,以下简称SA)。SA是通信双方对某些协商要素的约定,比如双方使用的安全协议、数据传输采用的封装模式、协议采用的加密和验证算法、用于数据传输的密钥等,通信双方之间只有建立了SA,才能进行安全的数据传输。识别出感兴趣流后,本端网络设备会向对端网络设备发起SA协商。在这一阶段,通信双方之间通过IKE协议先协商建立IKE SA(用于身份验证和密钥信息交换),然后在IKE SA的基础上协商建立IPsec SA(用于数据安全传输)。数据传输。IPsec SA建立成功后,双方就可以通过IPsec隧道传输数据了。IPsec为了保证数据传输的安全性,在这一阶段需要通过AH或ESP协议对数据进行加密和验证。加密机制保证了数据的机密性,防止数据在传输过程中被窃取;验证机制保证了数据的真实可靠,防止数据在传输过程中被仿冒和篡改。如图所示,IPsec发送方会使用加密算法和加密密钥对报文进行加密,即将原始数据“乔装打扮”封装起来。然后发送方和接收方分别通过相同的验证算法和验证密钥对加密后的报文进行处理得到完整性校验值ICV。如果两端计算的ICV相同则表示该报文在传输过程中没有被篡改,接收方对验证通过的报文进行解密处理;如果ICV不相同则直接丢弃报文。MPLS VPN:使用场景在运营商骨干网络上提供L3VPN业务,利用BGP协议发布路由信息,在骨干网内部使用MPLS转发VPN报文。概念CE(Consumer Edge):用户边缘路由器,与运营商网络直接相连的路由器。感知不到VPN的存在,一个CE设备只能对应一个VPN主要功能就是将VPN客户的路由通告给PE,以及从PE学习同一个VPN下其他站点的路由PE(Provider Edge):运行商(骨干网)边缘路由器,与用户网络相连的路由器。负责VPN业务接入,处理VPN-IPV4路由使用VRF对VPN客户进行隔离通过与客户设备CE进行路由协议,以便获取客户路由,并将路由生成VPNv4前缀放入MPLS VPN骨干网传递到对端PEP(Provider):骨干网路由器,与PE或其他P相连。负责快速转发数据不知道VPN客户网络,以及客户的路由。只负责在骨干网内运载标签数据VRF(Virtual Router Forwarding):PE上的虚拟路由器(路由进程)。一张独立的路由表,包括独立的地址空间一组归属于这个VRF的接口的集合,一组只用于本VRF的路由协议一个VPN对应一个VRFRD(Route-Distinguisher):路由标识符BGP进程用该字段区分不同VPN,有了RD后就可以解决不同VPN之间的IP地址重叠问题,VPN用户的IP地址不再是整个系统全局唯一,而是VPN内唯一即可。RT(Route-Target)每个VRF表达自己的路由输出和输出方式,主要用于控制VPN路由的发布和安装策略。
  • [其他] 我真的傻了,
    我还真的去输入想要创作的第一个进去了,真的是无语
  • [交流分享] SSL VPN和IPsec VPN区别
    使用场景IPsec VPN:连通的是两个局域网,如分支机构与总部(或华为云VPC)之间、本地IDC与云端VPC的子网;即IPsec VPN是网对网的连接。SSL VPN:连通的是一个客户端到一个局域网络,如出差员工的便携机访问公司内网。连接方式IPsec VPN:要求两端有固定的网关设备,如防火墙或路由器; 管理员需要分别配置两端网关完成IPsec VPN协商。SSL VPN:需要在主机上安装指定的Client软件,通过用户名/密码拨号连接至SSL设备。IPsec VPN和SSL VPN在使用场景和连接方式上有什么区别?_虚拟专用网络 VPN_常见问题_适用于经典型VPN_组网与使用场景_华为云 (huaweicloud.com)
  • [技术干货] VPN是什么
    VPN简介VPN(全称:Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信的网络技术,可以为企业之间或者个人与企业之间提供安全的数据传输隧道服务。在VPN中任意两点之间的链接并没有传统专网所需的端到端的物理链路,而是利用公共网络资源动态组成的,可以理解为通过私有的隧道技术在公共数据网络上模拟出来的和专网有同样功能的点到点的专线技术,所谓虚拟是指不需要去拉实际的长途物理线路,而是借用了公共Internet网络实现的。VPN应用场景 只能企业员工登录公司服务器 要求在任何网络下都能够登录 权限管理 VPN的作用 VPN的功能是帮助公司的远程用户(出差,在家)、公司的分支机构、商业合作伙伴及供应商等公司和自己的公司内部网络之间建立可信的安全连接或者是局域网连接,确保数据的加密安全传输和业务访问,对于运维工程师来说,还可以连接不同的机房为局域网来处理相关事宜。  VPN的分类 根据不同的划分标准,VPN可以按几个标准进行分类划分: 按VPN的协议分类 VPN的隧道协议主要有三种, PPTP,L2TP和IPSec。其中PPTP和L2TP协议工作在OSI模型的第二层,又称为二层隧道协议; IPSec是第三层隧道协议,也是最常见的协议。L2TP和IPSec配合使用是目前性能最好,应用最广泛的一种。 按VPN的应用分类 Access VPN (远程接入VPN):客户端到网关,使用公网作为骨干网在设备之间传输VPN的数据流量 Intranet VPN (内联网VPN):网关到网关,通过公司的网络架构连接来自同公司的资源 Extranet VPN (外联网VPN):与合作伙伴企业网构成Extranet,将一个公司与另一个公司的资源进行连接 按所用的设备类型进行分类: 路由器式VPN:路由器式VPN部署较容易,只要在路由器上添加VPN服务即可; 交换机式VPN:主要应用于连接用户较少的VPN网络; 防火墙式VPN:防火墙式VPN是最常见的一种VPN的实现方式,许多厂商都提供这种配置类型 ————————————————原文链接:https://blog.csdn.net/Yosigo_/article/details/117736283
  • [技术干货] 使用openvpn实现访问远程网络
    一、概述VPN (Virtual Private Network) 是虚拟私有网,它通过在公网上创建一个专用并且加密的网络通道(隧道)进行通讯,在实际的应用中可以帮助远程用户、公司分支机构、商业伙伴及供应商等之间建立一个安全可信的网络连接.实际上使用VPN的目的及作用就是从网络层面打通两个或多个异地网络,就好像在同一个局域网一样,并且是加密安全的.使用vpn的一些场景:穿墙,看外面的世界本地网络访问公司内网资源,比如在家里或出差的同事要访问到公司内部的网络设备、服务器资源两个或以上的异地网络互通,比如多个IDC机房、多个分支机构之间内网互通以及数据传输VPN软件有很多,有商业的、开源的,openvpn就是其中一个非常好的开源vpn软件,在生产环境中使用也非常稳定及可靠,其主要特点:开源、跨平台、易于使用、稳定与安全性,对于中小型企业来说用openvpn架设vpn服务器是个不错的选择,而不去考虑商业的vpn软件,有一定成本优势。呵呵,做运维就是这样,总是用一些开源的软件搭建一套还不错的系统.二、使用openvpn实现访问远程网络有这样的需求:有些同事不在公司或在外面出差但又要访问公司内网的服务器资源,一般的做法是做端口映射,但是随着端口映射的数量越来越多带来一些问题:管理比较麻烦、不是很安全、配置繁琐。对于这种需求可以使用vpn打通自己(本地)的网络与公司的网络,这样就像是在公司内网访问服务器一样并且是安全的.因此用openvpn来搭建vpn服务器,规划如下:环境说明:目的是让你所在的本地网络能够通过vpn服务器访问公司内网(172.16.0.0/24、172.16.2.0/24、10.10.10.0/24)中的主机用公司内网中的一台(172.16.0.100)作为openvpn服务器,然后在防火墙上做外网端口映射, 发布在外网(因为没有公网地址,只能这样做)公司网络中的172.16.0.0/24、172.16.2.0/24、10.10.10.0/24网段已经是互通的1、部署openvpn服务端(172.16.0.100)openvpn需要tun模块支持,所以先检查是否支持tun模块# ls /dev/net/tun /dev/net/tun                     # 如果有表示支持停掉selinux# setenforce 0setenforce: SELinux is disabled开启路由转发,编辑  /etc/sysctl.conf 文件将 net.ipv4.ip_forward = 0 改为  net.ipv4.ip_forward = 1,然后执行:# sysctl -p安装openvpn及相关包# curl http://mirrors.aliyun.com/repo/epel-6.repo  -o  /etc/yum.repos.d/epel-6.repo --silent   # 添加阿里的EPEL源# yum install openssl openvpn easy-rsa lzo -y openssl包   程序包lzo包       用来进行数据压缩easy-ras包,  提供了一些证书生成脚本、模板配置文件等可以看下装了哪些东西# rpm -ql openvpn# rpm -ql easy-rsa创建相关目录# mkdir /var/log/openvpn                      # 放openvpn相关日志文件# mkdir /etc/openvpn/easy-rsa                 # 放easy-rsa包提供的相关工具# mkdir /etc/openvpn/ccd                      # openvpn客户端的配置目录,后面会用到将easy-ras包提供的工具复制到 /etc/openvpn/easy-rsa# cp /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ -r # cd /etc/openvpn/easy-rsa# ls                              // 可以看到就是一堆脚本,主要是用来生成证书build-ca build-key build-key-server clean-all list-crl openssl-1.0.0.cnf sign-req whichopensslcnfbuild-dh build-key-pass build-req inherit-inter openssl-0.9.6.cnf pkitool varsbuild-inter build-key-pkcs12 build-req-pass keys openssl-0.9.8.cnf revoke-full修改 openssl-1.0.0.cnf 文件中 default_crl_days值,调大为3650或者更大,默认是30,单位是天, 3650天也就是表示为10年。这步不做的话如果服务端开启了crl-verify(吊销证书)功能,30天后全部客户端会连不上,因为有效期默认是30天,这个坑其它地方不会告诉你vim  openssl-1.0.0.cnf找到 并改成 default_crl_days = 3650编辑 /etc/openvpn/easy-rsa/vars文件,找到下面的变量修改成你指定的值,后面生成证书的时候会应用这些变量值 (不做这步也可以,它会应用默认的变量值)export KEY_COUNTRY="CN"        # 国家export KEY_PROVINCE="GD"       # 省份export KEY_CITY="GZ"           # 城市export KEY_ORG="MY_ORG"        # 组织/公司export KEY_EMAIL="vpn@qq.com"  # 邮箱export KEY_OU="vpn"            # 单位  export KEY_NAME="openvpn"      # 服务器名称然后执行# source vars      # 这一步会导入vars文件中的变量作为当前的环境变量# ./clean-all      # 清除旧的keys目录下的文件生成CA(证书颁发机构),一直回车即可# ./build-ca               Generating a 2048 bit RSA private key............................................................................+++..................+++writing new private key to 'ca.key'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [CN]:State or Province Name (full name) [GD]:Locality Name (eg, city) [GZ]:Organization Name (eg, company) [MY_ORG]:Organizational Unit Name (eg, section) [vpn]:Common Name (eg, your name or your server's hostname) [openvpn CA]:Name [openvpn]:Email Address [vpn@qq.com]:会在 /etc/openvpn/easy-rsa/keys 目录下生成ca.crt、ca.key两个证书文件# ls /etc/openvpn/easy-rsa/keys/ | grep caca.crt                  ca.key生成服务器证书./build-key-server vpnserver     # 起个名字叫vpnserver,后面会用到 (注:必须是唯一的、尽量是有意义的名称)Generating a 2048 bit RSA private key................................+++.....+++writing new private key to 'vpnserver.key'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [CN]:State or Province Name (full name) [GD]:Locality Name (eg, city) [GZ]:Organization Name (eg, company) [MY_ORG]:Organizational Unit Name (eg, section) [vpn]:Common Name (eg, your name or your server's hostname) [vpnserver]:Name [vpn]:Email Address [vpn@qq.com]:Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:                                 # 这里是设置连接vpn的时候要不要输入账号和密码,如果不设置就直接回车(可选)An optional company name []:Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnfCheck that the request matches the signatureSignature okThe Subject's Distinguished Name is as followscountryName           :PRINTABLE:'CN'stateOrProvinceName   :PRINTABLE:'GD'localityName          :PRINTABLE:'GZ'organizationName      :PRINTABLE:'MY_ORG'organizationalUnitName:PRINTABLE:'vpn'commonName            :PRINTABLE:'vpnserver'name                  :PRINTABLE:'vpn'emailAddress          :IA5STRING:'vpn@qq.com'Certificate is to be certified until Apr 29 06:26:49 2026 GMT (3650 days)Sign the certificate? [y/n]:y         # 输入y1 out of 1 certificate requests certified, commit? [y/n]y   # 输入yWrite out database with 1 new entriesData Base Updated它会在 /etc/openvpn/easy-ras/keys 目录下生成三个证书文件# ls /etc/openvpn/easy-rsa/keys/ | grep vpnservervpnserver.crtvpnserver.csrvpnserver.key生成客户端证书,客户端会用证书来连接服务端./build-key vpnclient      --- 表示为vpnclient这个客户端生成证书,后面会用到 (注:必须是唯一的、尽量是有意义的名称)Generating a 2048 bit RSA private key.......+++....................+++writing new private key to 'vpnclient.key'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [CN]:State or Province Name (full name) [GD]:Locality Name (eg, city) [GZ]:Organization Name (eg, company) [MY_ORG]:Organizational Unit Name (eg, section) [vpn]:Common Name (eg, your name or your server's hostname) [vpnclient]:Name [vpn]:Email Address [vpn@qq.com]:Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnfCheck that the request matches the signatureSignature okThe Subject's Distinguished Name is as followscountryName           :PRINTABLE:'CN'stateOrProvinceName   :PRINTABLE:'GD'localityName          :PRINTABLE:'GZ'organizationName      :PRINTABLE:'MY_ORG'organizationalUnitName:PRINTABLE:'vpn'commonName            :PRINTABLE:'vpnclient'name                  :PRINTABLE:'vpn'emailAddress          :IA5STRING:'vpn@qq.com'Certificate is to be certified until Apr 29 06:30:42 2026 GMT (3650 days)Sign the certificate? [y/n]:y    --- 输入y1 out of 1 certificate requests certified, commit? [y/n]y   --- 输入yWrite out database with 1 new entriesData Base Updated它会在 /etc/openvpn/easy-ras/keys 目录下生成三个证书文件# ls /etc/openvpn/easy-rsa/keys/ | grep vpnclientvpnclient.crtvpnclient.csrvpnclient.key上面是交互式的生成证书,还可以使用非交互式的方式生成证书View Code最后创建Diffie Hellman文件,这步需要一点时间,等它执行完就行# ./build-dh查看生成的Diffie hellman秘钥文件# ls /etc/openvpn/easy-rsa/keys | grep 'dh'dh2048.pem配置openvpn,编辑/etc/openvpn/server.conf文件,添加如下:local 172.16.0.100                               # 监听的ipport 1999                                        # 监听的端口,默认1194,我设置1999,根据你的需求改就行proto tcp                                        # 使用的协议,默认udp,因为经常要通过vpn传文件对可靠性要求比较高,所以用tcpdev tun                                          # 使用tun(隧道)模式,openvpn有两种模式,一种是TUN,另一种是TAPca   /etc/openvpn/easy-rsa/keys/ca.crt           # 这四条都是指定证书的路径,要确保路径存在或文件能够访问cert /etc/openvpn/easy-rsa/keys/vpnserver.crtkey  /etc/openvpn/easy-rsa/keys/vpnserver.key  dh   /etc/openvpn/easy-rsa/keys/dh2048.pemserver 10.8.0.0 255.255.255.0                    # 设置成server模式并给客户端分配的ip段,服务端会用其中.1和.2两个ip,这个网段不要和你的内网冲突ifconfig-pool-persist ipp.txt                    # 当vpn断开或重启后,可以利用该文件重新建立相同的IP地址连接push "route 172.16.0.0 255.255.255.0"            # 这三条是给客户端推的路由,客户端连上后会根据这个添加路由,vpn服务器后端有几个网段就写几个push "route 172.16.2.0 255.255.255.0"            # 这些路由的作用是告诉客户端去另一个子网都转发给TUN接口,类似于静态路由push "route 10.10.10.0 255.255.255.0"                       client-config-dir /etc/openvpn/ccd               # 客户端的个性配置目录,比如针对每个客户端推送不同的路由、配置不同的ipkeepalive 10 120                                 # 每10秒ping一次,如果超过120s认为对方已经down了,需要重连commpress lz4-v2                                 # 在vpn链接上启用压缩,服务端开启客户端也必须开启max-clients 100                                  # 最多有几个vpn客户端可以连user nobody                                      # 启动openvpn的用户和组,建议用nobodygroup nobody  commpress lz4-v2                                 # 开启压缩script-security 2                                # 脚本安全级别,2就行了,用于执行外部的脚本(可选)client-to-client # 允许vpn客户端之间通信 duplicate-cn # 允许多个客户端使用同一个证书登陆,生产环境建议为每个用户都生成自己的证书 persist-key # 通过keepalived检测后重新启动vpn,不重新读取keys,保留第一次使用的keys persist-tun # 通过keepalived检测后重新启动vpn,一直保持tun或tap设备是linkup status /var/log/openvpn/openvpn-status.log # openvpn的状态日志文件 log /var/log/openvpn/openvpn.log # openvpn的日志文件writepid /var/run/openvpn/server.pid             # pid文件verb 3                                           # 日志级别mute 20                                          # 如果连续出现20条相同的日志,只记录一条然后启动openvpn# service openvpn start# chkconfig --add openvpn# chkconfig --level 35 openvpn on会看到有个tun0接口并且添加了两条路由# ifconfig tun0tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00            inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1          RX packets:2499142 errors:0 dropped:0 overruns:0 frame:0          TX packets:2719489 errors:0 dropped:45 overruns:0 carrier:0          collisions:0 txqueuelen:100           RX bytes:895142072 (853.6 MiB)  TX bytes:1093625277 (1.0 GiB)# route -n | grep tun0    10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun010.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0启动了一个tun0网络接口,ip是10.8.0.1,P-t-P:10.8.0.2 是点到点的意思添加了两条路由,一个是主机路由 (UH),另一个是静态路由 (UG),表示去10.8.0.0网段的数据包下一跳是10.8.0.2添加一条SNAT规则,让源地址是10.8.0.0/24网段的地址进来转换成vpn服务器的内网地址(172.16.0.100),这样vpn客户端访问公司内网服务器的时候伪装成vpn服务器去访问# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 172.16.0.100 # service iptables save# service iptables start# chkconfig --level 35 iptables on如果不用上面的SNAT方式,还有种做法是在所有公司内网中的主机或服务器上添加回程路由,这样才能回包给vpn客户端# route add 10.8.0.0 MASK 255.255.255.0 172.16.0.100        // 如果是windows# ip route add 10.8.0.0/24 via 172.16.0.100                 // 如果是linux如果数量少还好,但很多的话就比较麻烦,所以推荐用SNAT的方式,到了这里openvpn服务端已经配好了,客户端可以连了。2、客户端连接vpn服务器openvpn支持linux、window、mac等多种客户端,如果是windows客户端先安装openvpn-gui,一直下一步就行,默认会安装在C:\Program Files\OpenVPN进到config目录,创建一个vpnclient目文件夹,把服务器上的 /etc/openvpn/easy-rsa/keys下的ca.crt、vpnclient.crt、vpnclient.key三个证书文件拉下来放进去然后添加一个vpnclient.ovpn的文件,这个文件用来连接openvpn服务端vpnclient.ovpn文件的内容是client                        # 设置为client模式dev tun                       # 设置为tun模式,必须和服务端一致proto tcp                     # 使用的协议,必须和服务端一致remote 183.6.133.212 1999     # 指定openvpn服务器的地址和端口resolv-retry infinitenobindpersist-keypersist-tunca   ca.crtcert vpnclient.crtkey  vpnclient.keyremote-cert-tls serverauth-nocache                  # 不在内存中缓存密码commpress lz4-v2              # 启动压缩,必须和服务端一致 verb 3 然后连接openvpn,点击运行选 Connect  ,如果出现绿色图标说明vpn连接成功了.连接成功后会启一个网络连接,可以看到分配的ip地址是10.8.0.10 / 30以太网适配器 本地连接 2:   连接特定的 DNS 后缀 . . . . . . . :   描述. . . . . . . . . . . . . . . : TAP-Windows Adapter V9   物理地址. . . . . . . . . . . . . : 00-FF-0A-6B-5D-9D   DHCP 已启用 . . . . . . . . . . . : 是   自动配置已启用. . . . . . . . . . : 是   本地链接 IPv6 地址. . . . . . . . : fe80::bca0:7a3d:716c:5769(首选)   IPv4 地址 . . . . . . . . . . . . : 10.8.0.10(首选)   子网掩码  . . . . . . . . . . . . : 255.255.255.252   获得租约的时间  . . . . . . . . . : 2017年10月18日 3:43:41   租约过期的时间  . . . . . . . . . : 2018年10月18日 3:43:41   默认网关. . . . . . . . . . . . . :   DHCP 服务器 . . . . . . . . . . . : 10.8.0.9   DHCPv6 IAID . . . . . . . . . . . : 469827338   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1C-F4-C8-B2-34-E6-D7-6C-5E-88   ........客户端还会添加路由,可以看下路由表,下面这些是服务端配置推送给客户端的路由,其实就是告诉客户端去这些网段都通过vpn服务器,类似于静态路由> route PRINT -4IPv4 路由表===========================================================================活动路由:网络目标        网络掩码          网关       接口       跃点数10.8.0.0    255.255.255.0     10.8.0.9  10.8.0.10     2010.8.0.8  255.255.255.252     在链路上    10.8.0.10    27610.8.0.10  255.255.255.255    在链路上    10.8.0.10    27610.8.0.11  255.255.255.255    在链路上    10.8.0.10    27610.10.10.0    255.255.255.0   10.8.0.9   10.8.0.10     20172.16.0.0    255.255.255.0   10.8.0.9   10.8.0.10     20172.16.2.0    255.255.255.0   10.8.0.9   10.8.0.10     20测试,ping下公司内网中的主机,看下是否能够访问,如果可以说明ok了C:\Users\Administrator ping 172.16.0.104正在 Ping 172.16.0.104 具有 32 字节的数据:来自 172.16.0.104 的回复: 字节=32 时间=6ms TTL=63172.16.0.104 的 Ping 统计信息:    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位):    最短 = 6ms,最长 = 6ms,平均 = 6msC:\Users\Administrator> ping 172.16.2.1正在 Ping 172.16.2.1 具有 32 字节的数据:来自 172.16.2.1 的回复: 字节=32 时间=7ms TTL=253172.16.2.1 的 Ping 统计信息:    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位):    最短 = 7ms,最长 = 7ms,平均 = 7msC:\Users\Administrator> ping 10.10.10.2正在 Ping 10.10.10.2 具有 32 字节的数据:来自 10.10.10.2 的回复: 字节=32 时间=6ms TTL=12610.10.10.2 的 Ping 统计信息:    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位):    最短 = 6ms,最长 = 6ms,平均 = 6ms如果是linux客户端和windows一样,先安装openvpn# curl http://mirrors.aliyun.com/repo/epel-6.repo  -o  /etc/yum.repos.d/epel-6.repo --silent   # 添加阿里的EPEL源,有的话不用做.# yum install openvpn -y创建相关目录# mkdir /etc/openvpn/keys          # 放客户端的相关证书# mkdir /var/log/openvpn           # 放日志的目录将服务器上 /etc/openvpn/easy-rsa/keys 下的ca.crt、vpnclient.crt、vpnclient.key这些证书文件拉下来放到 /etc/openvpn/keys# ls /etc/openvpn/keysca.crt  vpnclient.crt  vpnclient.key编辑客户端的配置文件/etc/openvpn/client.conf,内容如下client                                      # 设置为clinet模式dev tun                                     # 使用tun模式,必须和服务端一致proto tcp                                   # 使用的协议,必须和服务端一致remote  183.6.133.212 1999                  # 指定openvpn服务端的ip和端口,有需要可以使用多个做高可用.resolv-retry infinitenobindpersist-keypersist-tunca   /etc/openvpn/keys/ca.crtcert /etc/openvpn/keys/vpnclient.crtkey  /etc/openvpn/keys/vpnclient.keyremote-cert-tls serverauth-nocacheuser nobodygroup nobodystatus   /var/log/openvpn/openvpn-status.loglog      /var/log/openvpn/openvpn.logwritepid /var/run/openvpn/client.pid        # 指定pid文件commpress lz4-v2                                    # 压缩数据,必须和服务端配置一样verb 3mute 20启动openvpn客户端# service openvpn start# chkconfig --add openvpn# chkconfig --level 35 openvpn on客户端启动后只有进程,因为它作为客户端去连服务端,不需要提供端口# ps aux | grep vpnnobody    4236  0.1  0.3  46916  3232 ?        Ss   01:36   0:00 /usr/sbin/openvpn --daemon --writepid /var/run/openvpn/client.pid --cd /etc/openvpn --config client.conf --script-security 2同样也会有个tun0网络接口# ifconfig tun0tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00            inet addr:10.8.0.14  P-t-P:10.8.0.13  Mask:255.255.255.255          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:100           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)此时我们可以看下路由表,下面这些路由就是根据服务器的配置(push)推送过来的,目的是通知客户端根据这个来添加路由,实际上就是告诉客户端去这些网段都转发给tun0接口,也就是vpn服务器,类似静态路由# route -n | grep tun010.8.0.13       0.0.0.0         255.255.255.255 UH    0    0    0 tun0    # 主机路由172.16.2.0      10.8.0.13       255.255.255.0   UG    0    0    0 tun0    # 去172.16.2.0 下一跳(网关)是10.8.0.1310.8.0.0        10.8.0.13       255.255.255.0   UG    0    0    0 tun0    # 去10.8.0.0   下一跳(网关)是10.8.0.13172.16.0.0      10.8.0.13       255.255.255.0   UG    0    0    0 tun0    # 去172.16.0.0 下一跳(网关)是10.8.0.1310.10.10.0      10.8.0.13       255.255.255.0   UG    0    0    0 tun0    # 去10.10.10.0 下一跳(网关)是10.8.0.13最后测试,ping下公司内网中的主机,看下是否能够访问,如果可以说明ok了# ping 172.16.0.104                                           # 可以通公司内网172.16.0.0段中的主机PING 172.16.0.104 (172.16.0.104) 56(84) bytes of data.64 bytes from 172.16.0.104: icmp_seq=1 ttl=63 time=7.52 ms^C--- 172.16.0.104 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 327msrtt min/avg/max/mdev = 7.524/7.524/7.524/0.000 ms# ping 172.16.2.1                                             # 可以通公司内网172.16.2.1段中的主机PING 172.16.2.1 (172.16.2.1) 56(84) bytes of data.64 bytes from 172.16.2.1: icmp_seq=1 ttl=253 time=205 ms--- 172.16.2.1 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 768msrtt min/avg/max/mdev = 205.701/205.701/205.701/0.000 ms# ping 10.10.10.2                                             # 可以通公司内网10.10.10.0段中的主机PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.64 bytes from 10.10.10.2: icmp_seq=1 ttl=126 time=5.86 ms^C--- 10.10.10.2 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 755msrtt min/avg/max/mdev = 5.865/5.865/5.865/0.000 ms数据包的走向是:客户端访问公司内网主机 ----- 通过路由转发 ---- vpn服务器(tun0) ---- SNAT -----  公司内网主机要点小结:vpn的作用就是让两个网络可以互通,就好像在同一个局域网里面一样openvpn配置好了后可以把它看成一个路由器,需要有点网络方面的知识才好理解其它功能及需求:1、如何给客户端指定配置,比如不同的客户端不同的ip地址、推送不同路由等先在server.conf中指定 client-config-dir目录,能够让openvpn访问的到client-config-dir /etc/openvpn/ccd        #  确保/etc/openvpn/ccd存在在/etc/openvpn/ccd目录下编辑一个与客户端同名的文件,比如想给vpnclient的这个客户端指定配置,那么就是/etc/openvpn/ccd/vpnclient,这些配置可以是ifconfig-push 10.8.0.9 10.8.0.10       # 指定客户端的IP地址,如果想固定客户端的ip可以这样做push "route 172.16.0.0 255.255.255.0"  # 推送指定的路由,不同的客户端推送不同的路由可以这样做   iroute 172.16.20.0 255.255.255.0       # 忽略路由push "dhcp-option DNS 202.96.128.166"  # 推送DNS..........2、openvpn服务端怎么做高可用如果vpn服务器只有一台的话就是个单点,如果有需求可以做高可用,做法是准备两台openvpn服务器,它们相关证书、配置都一样(可以做一个然后复制到另一个),然后在客户端的配置文件中指定两个remoteremote  第一个vpn服务器ip   端口remote  第二个vpn服务器ip   端口然后测试下模拟挂掉一个,能不能用、对使用有没有什么影响3、怎么给客户端推送指定的DNS可以在服务端server.conf或者ccd下面配置文件指定推送给客户端的dnspush "dhcp-option DNS 202.96.128.166" push "dhcp-option DNS 202.96.128.167"这种场景一般是要用到远程内网中的dns,用的不多4、怎么给客户端生成证书通过build-key生成客户端证书对于生成证书需要考虑的问题:是为每个用户生成证书、还是多个客户端使用一个证书? 如果是多个客户端用同一个证书登陆,优点是省事,缺点是如果想吊销这个证书那么就会影响所有的用户, 如果是每个用户都有自己的证书,优点是管理方便,缺点是麻烦(官方推荐为每个用户生成一个证书,每个用户用自己的证书连接vpn,虽然麻烦了点)5、如何把客户端的默认网关指向vpn服务器push "redirect-gateway def1 bypass-dhcp"需要的注意的是,如果这样配置会导致所有的流量都经过vpn服务器,这样的vpn服务器的压力会比较大,一般用的不是很多,除非必须要这么做三、吊销证书吊销证书是指让客户端的证书无效,那么被吊销证书的用户就不能连上vpn了。有这个样的场景,某个同事之前给他分配了vpn客户端,可以连vpn,现在它离职了,不想在让他在用vpn了,这时可以吊销它的证书。例如:吊销客户端 ( vpnclient ) 的证书.# cd /etc/openvpn/easy-rsa# source ./vars# ./revoke-full vpnclient   # 通过revoke-full脚本吊销证书, 吊销vpnclient这个客户端的证书 执行后将看到下面的提示,表示证书已经被吊销Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnfRevoking Certificate 03.Data Base UpdatedUsing configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnfclient02.crt: C = US, ST = CA, L = SanFrancisco, O = Fort-Funston, OU = MyOrganizationalUnit, CN = client02, name = EasyRSA, emailAddress = me@myhost.mydomainerror 23 at 0 depth lookup:certificate revoked  # 出现error 23 表示证书已经被吊销了需要注意的是到这步还没有彻底完成,此时客户端仍然可以连上。当通过 revoke-full 脚本吊销客户端的证书后它会在keys(我这里是/etc/openvpn/easy-rsa/keys)目录生成一个crl.pem(吊销证书列表 )文件,所以还需要在openvpn服务器的配置文件 /etc/openvpn/server.conf 添加:crl-verify /etc/openvpn/easy-rsa/keys/crl.pem      # 指定crl.pem文件的路径,必须存在并能够被启动openvpn的用户有权限读取,否则会报cannot read错误然后重启openvpn服务# service openvpn restartShutting down openvpn:                                     [  OK  ]Starting openvpn:                                          [  OK  ]最后测试被吊销证书的客户端能不能连上vpn服务,如果不能连上说明成功.此外,还可以通过查看/etc/openvpn/easy-ras/keys/index.txt文件,了解vpn客户端的吊销状态.R 开头的表示reovke,说明是吊销状态,V表示是正常的CN=vpnclient,表示客户端vpnclient已经被吊销# cat /etc/openvpn/easy-rsa/keys/index.txtV    270929154610Z        01    unknown    /C=US/ST=CA/L=SanFrancisco/O=Fort-Funston/OU=MyOrganizationalUnit/CN=vpnserver/name=EasyRSA/emailAddress=me@myhost.mydomainV    270929154708Z        02    unknown    /C=US/ST=CA/L=SanFrancisco/O=Fort-Funston/OU=MyOrganizationalUnit/CN=client01/name=EasyRSA/emailAddress=me@myhost.mydomainR    271005070515Z    171008142938Z    03    unknown    /C=US/ST=CA/L=SanFrancisco/O=Fort-Funston/OU=MyOrganizationalUnit/CN=vpnclient/name=EasyRSA/emailAddress=me@myhost.mydomain那么问题来了,又想恢复这个被吊销的客户端(vpnclient)呢?  同样可以在openvpn服务器的配置文件/etc/openvpn/server.conf注释或取消: crl-verify /etc/openvpn/easy-rsa/keys/crl.pem      # 注释或取消掉这行重启openvpn,客户端测试,如果能连上说明成功了,又可以连了四、故障与排错如果不成功,需要从各个方面排查:检查openvpn服务器端口和进程是否正常检查tun0接口和路由表是否正常检查证书的路径是否能够正常访问查看openvpn服务器日志(重点)检查防火墙是否做了限制,是否放通了openvpn的ip或端口使用tcpdump一节一节的抓包,看包到了那个环节原文链接:https://www.cnblogs.com/huangweimin/articles/7638943.html
  • [技术干货] 什么是NaaS?
     英文全称:Network-as-a-Service 中文意思:网络即服务 随着网络技术、硬件技术的发展,网络的规模随之扩大,硬件设备比如路由器、交换机、vpn、防火墙等部署和使用就成了网络工程师最头疼的问题,手动配置不仅仅浪费人力、物力、财力,更重要的是容易出错。所以结合现在云计算技术,可以将网络云化,客户可以按需配置自己的网络,这个就跟云服务器一样,没内存了,我就加内存,没带宽了,我就加带宽 NaaS 的本质是构建看起来更像公共云的网络连接:自助服务、按需和动态。有一些解决方案专注于将自己嵌入到客户管理的现有公共云基础设施中,其他解决方案在战略性、密集连接的数据中心构建专用的高性能传统网络,还有一些在他们自己的云中构建自己的专用软件只是为了连接。每种方法都有自己的优缺点,必须权衡这些优缺点才能选择最合适的方法。每个解决方案的通用性是它是软件和硬件的混合物,可为客户创建一个自助服务平台,其强大之处在于它使网络运营商能够轻松集成和保护许多不同的网络。  为什么需要 NaaS? 在传统网络模式中,通信服务提供商会投入非常大的成本在网络基础设施、网络集成上,运营流程和网络域是紧密耦合的,新的网络元素必须与业务和运营支持系统 (B/OSS) 集成,支持特定服务或网络相关功能的离线系统集合,例如订单管理。这种集成既麻烦又昂贵,推出新服务通常需要 12 到 18 个月,相比之下,云提供商不断集成和测试新功能,在数小时内推出新服务,通信服务提供商的问题变得更加清晰。 传统运营也阻碍了通信服务提供商为企业提供他们想要的灵活的、类似云的服务。订单处理是分散的,技术人员必须手动访问多个 OSS 系统来收集和关联他们设计和提供服务所需的信息。这会导致服务执行过程缓慢且容易出错,并且可能需要数周甚至数月才能激活(甚至修改)服务。因此,通信服务提供商 在很大程度上仅限于长期合同附带的静态服务产品。 许多同样的问题会对故障解决过程产生负面影响,技术人员必须手动关联来自多个不同监控系统的事件和警报,这会减慢故障排除和补救工作,并使服务水平协议 (SLA) 面临风险。 种种问题就促使了 NaaS 的发展,NaaS 运营模型能够提供自动化的端到端服务设计和激活,以及闭环中的持续服务监控和优化。 NaaS 利用模型驱动的抽象来解耦 OSS 和网络层,网络的所有功能和资源(虚拟和物理)都汇总并发布在服务目录中,行业标准 API 用于将这些汇总的功能公开给 B/OSS 层。 NaaS 消除了服务实现过程中的人工干预。服务订单管理协调服务激活过程,编排自动化服务设计和供应,此外,整个服务生命周期都在闭环中进行管理,使用客户意图、策略、分析和人工智能来提供持续的服务保证和优化。  NaaS 优点 1、管理网络类型多样 NaaS 可以完全管理的不仅仅是广域网,局域网、安全、无线和 VOIP 等服务都可以被管理。 2、减少维护时间 NaaS 大大减少了工程师用于支持和维护网络的时间,不再需要花更多精力去管理网络,可以腾出更多时间去管理核心业务或未来的技术需求。 3、降低成本 NaaS 减少了项目总体支出,因为网络相关的硬件、软件、基础设施、支持和维护都是外包的。 4、安全性增强 NaaS 使用了许多新技术,例如 SD-WAN,以允许流量通过点对点网络链接和公共互联网安全移动,可以进一步保护网络安全。 5、可扩展的集中管理 NaaS 云管理功能可以提供网络域(数据中心、企业园区和 WAN)的统一管理,使组织能够轻松扩展网络。可以实施添加的托管服务来监督所有网络操作。 6、可持续性 有效的 NaaS 计划有助于缓解与旧硬件资源相关的安全和成本相关担忧。设备的再利用和适当的处置很重要,但成本很高,可持续再利用和报废是 NaaS 产品的关键属性,使组织能够更轻松地实现可持续发展目标。 
  • [技术干货] 关于SSL VPN和IPSec VPN之间的联系和区别
    https://support.huaweicloud.com/vpn_faq/zh-cn_topic_0187565709.html使用场景IPsec VPN:连通的是两个局域网,如分支机构与总部(或华为云VPC)之间、本地IDC与云端VPC的子网;即IPsec VPN是网对网的连接。SSL VPN:连通的是一个客户端到一个局域网络,如出差员工的便携机访问公司内网。连接方式IPsec VPN:要求两端有固定的网关设备,如防火墙或路由器; 管理员需要分别配置两端网关完成IPsec VPN协商。SSL VPN:需要在主机上安装指定的Client软件,通过用户名/密码拨号连接至SSL设备。
  • [技术干货] ensp7月学习笔记1
    首先创建gre隧道2、创建IKE提议 [AR 1]ike proposal 1 # 创建IKE提议 [AR 1-ike-proposal-1]encryption-algorithm 3des-cbc # 指定加密算法 [AR 1-ike-proposal-1]authentication-algorithm md5 # 认证算法 [AR 3]ike proposal 1 # 创建IKE提议 [AR 3-ike-proposal-1]encryption-algorithm 3des-cbc # 指定加密算法 [AR 3-ike-proposal-1]authentication-algorithm md5 # 认证算法 3、配置IKE对等体 [AR 1]ike peer number v2 # 创建number的对等体 [AR 1-ike-peer-numberone]pre-shared-key simple 5201314 # 共享密钥 [AR 1-ike-peer-numberone]ike-proposal 1 [AR 3]ike peer number v2 # 创建number的对等体 [AR 3-ike-peer-numberone]pre-shared-key simple 5201314 # 共享密钥 [AR 3-ike-peer-numberone]ike-proposal 1 4、配置IPSec提议 [AR 1]ipsec proposal 1 [AR 1-ipsec-proposal-1]esp encryption-algorithm 3des # esp的加密算法 [AR 3]ipsec proposal 1 [AR 3-ipsec-proposal-1]esp encryption-algorithm 3des # esp的加密算法 5、配置IPSec文件 [AR 1]ipsec profile gre [AR 1-ipsec-profile-gre]ike-peer number [AR 1-ipsec-profile-gre]proposal 1 [AR 3]ipsec profile gre [AR 3-ipsec-profile-gre]ike-peer number [AR 3-ipsec-profile-gre]proposal 1 6、对GRE隧道进行保护 [AR 1]interface Tunnel 0/0/0 [AR 1-Tunnel0/0/0]description XXXXX # XXXXX可以自定义 [AR 1-Tunnel0/0/0]tunnel-protocol gre [AR 1-Tunnel0/0/0]source 200.1.1.1 [AR 1-Tunnel0/0/0]destination 200.2.2.2 [AR 1-Tunnel0/0/0]ipsec profile gre # 对GRE隧道进行保护 [AR 3]interface Tunnel 0/0/0 [AR 3-Tunnel0/0/0]description XXXXX [AR 3-Tunnel0/0/0]tunnel-protocol gre [AR 3-Tunnel0/0/0]source 200.2.2.2 [AR 3-Tunnel0/0/0]destination 200.1.1.1 [AR 3-Tunnel0/0/0]ipsec profile gre # 对GRE隧道进行保护 ———————————————— 版权声明:本文为CSDN博主「ZXW_NUDT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ZXW_NUDT/article/details/115481067
  • [技术干货] VPN组网、原理分析
    VPN(Virtual Private Network,虚拟专用网)是一种在公用网络上建立专用网络的技术。它之所以称之为虚拟网,主要是因为VPN的两个节点之间并没有像传统专用网那样使用端到端的物理链路,而是架构在公用网络如Internet之上的逻辑网络,用户数据通过逻辑链路传输。按照VPN协议分,常见的VPN种类有:IPsec、SSL、GRE、PPTP和L2TP等。其中IPsec是通用性较强的一种VPN技术,适用于多种网络互访的场景。IPsec VPN是指采用IPsec实现远程接入的一种VPN技术,通过在公网上为两个或多个私有网络之间建立IPsec隧道,并通过加密和验证算法保证VPN连接的安全。IPsec VPN保护的是点对点之间的通信,通过IPsec VPN可以在主机和主机之间、主机和网络安全网关之间或网络安全网关(如路由器、防火墙)之间建立安全的隧道连接。其协议主要工作在IP层,在IP层对数据包进行加密和验证。相对于其他VPN技术,IPsec VPN安全性更高,数据在IPsec隧道中都是加密传输,但相应的IPsec VPN在配置和组网部署上更复杂。IPsec的工作原理大致可以分为4个阶段:识别“感兴趣流”。网络设备接收到报文后,通常会将报文的五元组等信息和IPsec策略进行匹配来判断报文是否要通过IPsec隧道传输,需要通过IPsec隧道传输的流量通常被称为“感兴趣流”。协商安全联盟(Security Association,以下简称SA)。SA是通信双方对某些协商要素的约定,比如双方使用的安全协议、数据传输采用的封装模式、协议采用的加密和验证算法、用于数据传输的密钥等,通信双方之间只有建立了SA,才能进行安全的数据传输。识别出感兴趣流后,本端网络设备会向对端网络设备发起SA协商。在这一阶段,通信双方之间通过IKE协议先协商建立IKE SA(用于身份验证和密钥信息交换),然后在IKE SA的基础上协商建立IPsec SA(用于数据安全传输)。数据传输。IPsec SA建立成功后,双方就可以通过IPsec隧道传输数据了。IPsec为了保证数据传输的安全性,在这一阶段需要通过AH或ESP协议对数据进行加密和验证。加密机制保证了数据的机密性,防止数据在传输过程中被窃取;验证机制保证了数据的真实可靠,防止数据在传输过程中被仿冒和篡改。如图所示,IPsec发送方会使用加密算法和加密密钥对报文进行加密,即将原始数据“乔装打扮”封装起来。然后发送方和接收方分别通过相同的验证算法和验证密钥对加密后的报文进行处理得到完整性校验值ICV。如果两端计算的ICV相同则表示该报文在传输过程中没有被篡改,接收方对验证通过的报文进行解密处理;如果ICV不相同则直接丢弃报文。MPLS VPN:使用场景在运营商骨干网络上提供L3VPN业务,利用BGP协议发布路由信息,在骨干网内部使用MPLS转发VPN报文。概念CE(Consumer Edge):用户边缘路由器,与运营商网络直接相连的路由器。感知不到VPN的存在,一个CE设备只能对应一个VPN主要功能就是将VPN客户的路由通告给PE,以及从PE学习同一个VPN下其他站点的路由PE(Provider Edge):运行商(骨干网)边缘路由器,与用户网络相连的路由器。负责VPN业务接入,处理VPN-IPV4路由使用VRF对VPN客户进行隔离通过与客户设备CE进行路由协议,以便获取客户路由,并将路由生成VPNv4前缀放入MPLS VPN骨干网传递到对端PEP(Provider):骨干网路由器,与PE或其他P相连。负责快速转发数据不知道VPN客户网络,以及客户的路由。只负责在骨干网内运载标签数据VRF(Virtual Router Forwarding):PE上的虚拟路由器(路由进程)。一张独立的路由表,包括独立的地址空间一组归属于这个VRF的接口的集合,一组只用于本VRF的路由协议一个VPN对应一个VRFRD(Route-Distinguisher):路由标识符BGP进程用该字段区分不同VPN,有了RD后就可以解决不同VPN之间的IP地址重叠问题,VPN用户的IP地址不再是整个系统全局唯一,而是VPN内唯一即可。RT(Route-Target)每个VRF表达自己的路由输出和输出方式,主要用于控制VPN路由的发布和安装策略。
  • [技术干货] 带你熟悉netconf报文系列:由netconf报文推导cli命令的方法
    为了方便一些熟悉命令行但不熟悉netconf报文的工程师能快速理解netconf报文,并与对应的命令行联系起来,下面给出一套分析方法。本次我们以下发L3VPN业务到NE8000M8设备为例说明~相关配置的命令行可以在华为support网站上查看NE8000M8产品文档。那不多说,我们先来直观感受一下cli命令行和Netconf报文的区别吧。CLI命令行ip vpn-instance 5G-RAN ipv4-family route-distinguisher 100:1 vpn-target 100:11 export-extcommunity vpn-target 100:11 import-extcommunity bgp yang-mode enable bgp 100 ipv4-family vpn-instance 5G-RAN import-route direct import-route static peer 2.2.2.2 as-number 100 interface GigabitEthernet 0/5/0.1 ip binding vpn-instance 5G-RAN ip address 20.1.2.9 255.255.255.0Netconf报文<bgp xmlns="urn:huawei:yang:huawei-bgp"> <global> <yang-enable>true</yang-enable> </global> </bgp> <network-instance xmlns="urn:huawei:yang:huawei-network-instance"> <instances> <instance xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge"> <name>5G-RAN</name> <bgp xmlns="urn:huawei:yang:huawei-bgp"> <base-process> <afs> <af> <type>ipv4uni</type> <ipv4-unicast> <import-routes> <import-route> <protocol>direct</protocol> <process-id>0</process-id> </import-route> <import-route> <protocol>static</protocol> <process-id>0</process-id> </import-route> </import-routes> </ipv4-unicast> </af> </afs> <peers> <peer> <address>2.2.2.2</address> <remote-as>100</remote-as> </peer> </peers> </base-process> </bgp> <afs xmlns="urn:huawei:yang:huawei-l3vpn"> <af> <type>ipv4-unicast</type> <route-distinguisher>100:1</route-distinguisher> <tunnel-policy>LDP</tunnel-policy> <vpn-targets> <vpn-target> <value>100:11</value> <type>export-extcommunity</type> </vpn-target> <vpn-target> <value>100:11</value> <type>import-extcommunity</type> </vpn-target> </vpn-targets> </af> </afs> </instance> </instances> </network-instance> <ifm xmlns="urn:huawei:yang:huawei-ifm"> <interfaces> <interface> <name>GigabitEthernet0/5/0.1</name> <ipv4 xmlns="urn:huawei:yang:huawei-ip"> <addresses> <address xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge"> <ip>20.1.2.9</ip> <mask>255.255.255.0</mask> <type>main</type> </address> </addresses> </ipv4> </interface> </interfaces> </ifm> <ifm xmlns="urn:huawei:yang:huawei-ifm"> <interfaces> <interface xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge"> <name>GigabitEthernet0/5/0.1</name> <type>GigabitEthernet</type> <description>connect to pe2</description> <vrf-name>5G-RAN</vrf-name> </interface> </interfaces> </ifm>是不是觉得Netconf报文太长了,没关系,下面我们来分段解析我们的报文,并推导出我们报文对应的命令行。1. 模块一(使能使用YANG接口下发BGP配置)<bgp xmlns="urn:huawei:yang:huawei-bgp"> <global> <yang-enable>true</yang-enable> </global> </bgp>Netconf报文报文解析对应命令行<bgp xmlns="urn:huawei:yang:huawei-bgp">…</bgp>这一层报文表示此模块配置是依据huawei-bgp.yang模型的结构内容,是对bgp的配置。bgp yang-mode enable<global>  <yang-enable>true</yang-enable></global> <global>表示对全局的配置。<yang-enable>表示是否使用yang接口下发配置。2. 模块二(创建VPN实例5G-RAN,并配置VPN路由引入,引入静态路由和直连路由,配置BGP对等体。)<network-instance xmlns="urn:huawei:yang:huawei-network-instance"> <instances> <instance xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge"> <name>5G-RAN</name> <bgp xmlns="urn:huawei:yang:huawei-bgp"> <base-process> <afs> <af> <type>ipv4uni</type> <ipv4-unicast> <import-routes> <import-route> <protocol>direct</protocol> <process-id>0</process-id> </import-route> <import-route> <protocol>static</protocol> <process-id>0</process-id> </import-route> </import-routes> </ipv4-unicast> </af> </afs> <peers> <peer> <address>2.2.2.2</address> <remote-as>100</remote-as> </peer> </peers> </base-process> </bgp> ……(模块三配置) </instance> </instances> </network-instance>Netconf报文报文解析对应命令行<network-instance xmlns="…: huawei-bgp"><instances><instance xmlns:… >      <name>5G-RAN</name>      ……    </instance></instances></network-instance>这几层报文表示创建一个名为5G-RAN的L3VPN实例(instance),并开始配置。bgp 100  ipv4-family vpn-instance 5G-RAN<bgp xmlns=…><base-process>    <afs>      <af>        <type>ipv4uni</type>        ……      </af>    </afs>  </base-process></bgp>这几层报文是对bgp的相关配置:1.       <af>(address family)表示开始bgp地址族配置。2.       <type>表示配置bgp实例的地址族类型。由于这几层报文在instance的下一层,所以这一段配置的是5G-RAN的bgp路由引入。<ipv4-unicast><import-routes><import-route>      <protocol>direct</protocol><process-id>0</process-id></import-route>    <import-route>      <protocol>static</protocol>      <process-id>0</process-id>    </import-route>  </import-routes></ipv4-unicast><af>的内层报文,由于之前type类型为ipv4地址族,所以继续配置ipv4单播选项,引入静态路由和直连路由。1.       <import-routes>可引入多个路由。2.       <import-route>引入一条路由。3.       <protocol>引入的路由协议类型。4.       <process-id>引入路由协议的id。bgp 100  ipv4-family vpn-instance 5G-RAN  import-route direct  import-route static<peers><peer><address>2.2.2.2</address><remote-as>100</remote-as></peer></peers><peer>配置bgp对等体。<address>配置对等体连接地址,<remote-as>配置对等体AS号。bgp 100  ipv4-family vpn-instance 5G-RAN    import-route direct    import-route static    peer 2.2.2.2 as-number 1003. 模块三(配置VPN实例5G-RAN的 RT和RD值)<network-instance xmlns="urn:huawei:yang:huawei-network-instance"> <instances> <instance xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge"> <name>5G-RAN</name> ……(模块二配置) <afs xmlns="urn:huawei:yang:huawei-l3vpn"> <af> <type>ipv4-unicast</type> <route-distinguisher>100:1</route-distinguisher> <tunnel-policy>LDP</tunnel-policy> <vpn-targets> <vpn-target> <value>100:11</value> <type>export-extcommunity</type> </vpn-target> <vpn-target> <value>100:11</value> <type>import-extcommunity</type> </vpn-target> </vpn-targets> </af> </afs> </instance> </instances> </network-instance>Netconf报文报文解析对应命令行<afs xmlns="…: huawei-l3vpn">  <af>    <type>ipv4-unicast</type>    ……  </af></afs>这几层报文是对地址族相关配置:1.       <af>(address family)表示开始配置VPN实例的地址族。2.       <type>表示配置VPN实例的地址族类型。由于这几层报文在instance的下一层,所以这一段配置的是5G-RAN的地址族。ip vpn-instance 5G-RAN  ipv4-family<route-distinguisher>100:1</route-distinguisher><tunnel-policy>LDP</tunnel-policy><vpn-targets>  <vpn-target><value>100:11</value><type>export-extcommunity</type>  </vpn-target>  <vpn-target><value>100:11</value><type>import-extcommunity</type>  </vpn-target></vpn-targets><af>的内层报文,开始配置RD和RT(vpn-target)值。ip vpn-instance 5G-RAN  ipv4-family    route-distinguisher 100:1    vpn-target 100:11 export-extcommunity    vpn-target 100:11 import-extcommunity 4. 模块四(创建子接口,配置接口地址并绑定VPN实例)<ifm xmlns="urn:huawei:yang:huawei-ifm"> <interfaces> <interface> <name>GigabitEthernet0/5/0.1</name> <ipv4 xmlns="urn:huawei:yang:huawei-ip"> <addresses> <address xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge"> <ip>20.1.2.9</ip> <mask>255.255.255.0</mask> <type>main</type> </address> </addresses> </ipv4> </interface> </interfaces> </ifm> <ifm xmlns="urn:huawei:yang:huawei-ifm"> <interfaces> <interface xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge"> <name>GigabitEthernet0/5/0.1</name> <type>GigabitEthernet</type> <description>connect to pe2</description> <vrf-name>5G-RAN</vrf-name> </interface> </interfaces> </ifm>Netconf报文报文解析对应命令行<ifm xmlns="urn:huawei:yang:huawei-ifm">  <interfaces>  <interface>   <name>GigabitEthernet0/5/0.1</name>   ……  </interface>  </interfaces></ifm>这几层报文是对子接口的相关配置:1.       <ifm>表示接口配置。2.       <interface>表示进入接口视图。3.       <name>表示接口的名称。总的来看本段报文表示开始进入某个接口下的配置。interface GigabitEthernet 0/5/0.1<ipv4 xmlns="urn:huawei:yang:huawei-ip"><addresses><address xmlns:… >      <ip>20.1.2.9</ip><mask>255.255.255.0</mask>      <type>main</type>    </address>  </addresses></ipv4>这几层报文是配置接口下的ip地址:1.       由<ipv4>可以看出,下面的配置都是关于ipv4的。2.       <address>联合上一层的<ipv4>表明是对ip地址的配置。3.       具体到配置<ip>ip地址;<mask>掩码地址。interface GigabitEthernet 0/5/0.1  ip address 20.1.2.9 255.255.255.0<ifm xmlns="urn:huawei:yang:huawei-ifm">  <interfaces>    <interface xmlns:......><name>GigabitEthernet0/5/0.1</name>      <type>GigabitEthernet</type>      <description>connect to pe2</description>      <vrf-name>5G-RAN</vrf-name>    </interface>  </interfaces></ifm>由<ifm>可看出这一部分是对接口的配置:1.       <interface>和<name>表示开始配置GigabitEthernet0/5/0.1的接口。2.       <vrf-name>表示在此接口下绑定vpn。interface GigabitEthernet 0/5/0.1  ip address 20.1.2.9 255.255.255.0  ip binding vpn-instance 5G-RAN那最后让我们来总结一下怎么分析Netconf转CLI命令行的吧首先要明确,不论是Netconf报文还是CLI命令行,最终目的都是实现业务的配置。Netconf报文内容是基于下发业务的基础之上的;Netconf报文的结构也与命令行相似。所以我们要聚焦在两种下发配置的形式与业务之间的联系,理解每一句命令行或每一层报文与业务之间的相关性之后,就不难将两者之间进行转化。(命令行查询请查看相应设备的产品手册。)1. 从结构上分析比如下面这个表格的情况:配置业务CLI命令结构Netconf报文结构配置某接口下的IP地址interface XXX  ip address XXX<ifm>  <interfaces>  <interface>           <name>XXX</name>           <ipv4>               <addresses>                   <address>                        <ip>XXX</ip>                        <mask>XXX</mask>                   </address>               </addresses>           </ipv4>       </interface>   </interfaces></ifm> 配置接口下的IP地址,大概的业务层次就是:先进入某接口视图,然后配置ip地址、掩码等。不难发现,CLI命令结构的层次和Netconf报文的xml层次也都是按照业务逻辑层次来配置实现的。 2. 从内容上分析Netconf报文的每一层都是按照“<参数名称>参数值or内层内容</参数名称>”这个形式去构建内容的。那么从内容上去理解具体怎么从Netconf报文转化到CLI命令行,实际上也就是从内容上理解,Netconf报文的某些层次具体在配置什么样的内容。下面提供两种方法思路。请注意,这两种方法不是非A即B,而是相辅相成的。 方法一:从<参数名称>的角度理解业务。(推荐先用方法一)我们通过上文中给出的L3VPN的例子,发现很多时候,netconf报文中<>内的参数名称其实与业务配置含义或者说命令行的指令名称是十分相近或者说基本一致的。下面给出几个例子: Netconf报文配置业务类型/具体配置<ifm>……</ifm>接口配置<instance>……</instance>实例配置<interface>……</interface>进入视图<ipv4>  <address>……</address><ipv4>配置ipv4地址 但例如“<af>……</af>”这种报文,从参数名称就很难看出在配置什么业务,这种情况,就需要用到方法二了。 方法二:针对无法从<参数名称>看出配置的业务是什么的情况,我们可以通过看“<参数名称>参数值or内层内容</参数名称>”中的“参数值”和整体结构来判断这几层报文在配置什么业务。看下面一个例子:Netconf报文配置业务类型/具体配置<afs> <af>   <type>ipv4uni</type>   …… </af></afs>通过<af></af>内层内容和参数值:<type>ipv4uni</type>,可以推测出是在配置ipv4地址族相关内容。 3. 看到Netconf报文之后,按照以上两种方式分析,基本上就可以梳理出下发的Netconf报文在配置什么业务,那么相应的命令行根据产品手册也就可以查出来了。  最后我们来看一下Netconf报文中一些前文未提到的部分。(对Netconf报文解释的补充)1. 关于urn:huawei:yang:XXX。例如:<ifm xmlns="urn:huawei:yang:huawei-ifm">表示本层报文其实是根据名为huawei-ifm.yang这个设备yang模型转化而来的。内层的所有配置报文都可以在此设备yang模型中追溯到。2. 关于operation=“XXX”。<instance xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:operation="merge">用来给配置数据指定操作类型。如果未携带“operation”属性,则默认为merge操作。Operation取值如下:merge:在数据库中修改存在或不存在的目标数据,如果目标数据不存在则创建,如果目标数据存在则修改。这是默认操作。create:当且仅当配置数据库中不存在待创建的配置数据时,才能成功添加到配置数据库。如果配置数据存在,则会返回,其中包含一个值“data-exists”。delete:删除配置数据库中指定的配置数据记录。如果数据存在,则删除该数据,如果数据不存在,则返回,其中包含一个值“data-missing”。
  • [技术干货] 了解L2VPN
    本次给大家分享一些学习到的L2VPN的相关知识,如果以下内容有存疑的地方,欢迎大家评论区讨论~~                                    
  • [技术干货] 使用ncclient连接华为设备创建vpn
    【案例总结】使用ncclient连接设备创建vpn1、环境准备# python以及pip版本 PS D:\TOOLS\nc-client> pip --version pip 21.2.4 from c:\users\y00451247\appdata\local\programs\python\python37\lib\site-packages\pip-21.2.4-py3.7.egg\pip (python 3.7) PS D:\TOOLS\nc-client> python --version Python 3.7.3 # 安装ncclient pip install ncclient2、场景搭建需要实现的是,创建PE1和PE2之间的VPN通道,最终可以通过查询路由表来证明。本例中只以PE1设备作为需要配置的设备,PE2使用类似方法进行配置。3、ncclient python脚本写作步骤配置主要包括创建vpn-instance -- vrf_ncc_oc_nat配置接口 GigabitEthernet0/3/8.4091配置路由策略配置ipv4配置ipv6配置静态路由以其中创建vpn-instance配置块为例:# step1: 配置块字符串获取使用xml-translate工具将目标命令行放置在xml-translate begin之后,在将所有需要转换的命令行都输入之后,使用xml-translate end结束本次转换,我们只需截取节点内的内容并作为需要发送报文字符串。# step2: 调用ncclient库函数,与设备建立连接 manager.connect(host=host, port=port, username=user, password=password, hostkey_verify = False, device_params={'name': "huaweiyang"},allow_agent = False,look_for_keys = False) # step3: 调用ncclient库函数,下发edit-config报文; 其中rpc为上述xml-translate转换出的字符串 manager.dispatch(xml_.to_ele(rpc)) # step4: 调用ncclient库函数,下发commit报文, 使配置实际生效 manager.commit()其他配置块与创建vpn-instance配置块类似,需要重复执行step3和step4,将转换出的报文依次下发到设备 4、结果验证将完整的python脚本完成执行后,可以通过如下命令行查看路由状态
  • [问题求助] 如何查询设备信息
    在做L3VPN SSP的时候,VPN的RD格式为<loopback0-address>:<value>,我们希望只是填入<value>这个参数,loopback0地址由SSP自动查询设备生成,请问这个如何实现?谢谢
  • [问题求助] 如何灵活创建VPN
    在Yang模型中,定义了一个list(如下代码),生成的AOC GUI如下图。 希望能够灵活输入vpn的参数(VPN的数量根据用户输入来确定) 但是发现每次list只有最后添加的的VPN参数才生效,请问如何才能实现这种需求?(脚本可以参考附件) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/26/020019hdvmhhhvt8urvwde.png) ``` list vrfList { key "vrfName"; leaf vrfName { description "Defines a type of service component identifier."; type string { length 1..255 { description "VPN Routing/Forwarding instance name, support 1-255 characters."; } } mandatory true; } leaf rd { description "BGP route distinguisher"; type string; } leaf rtInList { type string { length "0..63"; } } leaf rtOutList { type string { length "0..63"; } } } } ```
  • [技术干货] 【云驻共创】AOC一触即发,玩转L3VPN业务开发
    一 背景什么是智能云网,业务上云,智驱行业新价值,围绕“数字化、智能化、服务化”,华为打造端到端智能云网解决方案,以数赋智,提供云园区网络、云广域网络、数通网络开放可编程、超融合数据中心网络、数通网络设备开放社区五大场景,让企业上好云、用好云。本直播实战AOC开发L3VPN业务。二 AOC核心机制及相关概念AOC的核心机制:模型驱动、映射机制、事物机制、配置预览和历史记录等。• 模型驱动:• AOC可以根据Yang模型自动生成Web UI和RestConf。• Yang模型在配置下方的时候可以存储备份,和同步设备上的配置• Yang同时起到了屏蔽南向协议的作用,例如NetConf和STelnet。映射机制:AOC的映射机制将SSP的网源模型映射为AOC中data store的网源模型进行自动比较,形成一些列操作,对开发者非常的友好。事务机制:针对于复杂业务,可能有多个设备,也可能一个设备多条配置,事物机制在实时监控配置下发过程,如果出现异常进行回滚配置预览:基于AOC任何下发的配置,在页面上可以看到预览信息,可以看到下发的报文什么样子的。历史记录:在AOC上做的任务配置,可以记录用户针对AOC的北向记录配置,同时也可以记录AOC对设备的配置记录,这样非常方便的进行审计。2.1 SSP定义 Specific Service Plugin 缩写,也称为业务包。业务是指 针对一款或多款设备设计的,利用一台或多台设备的能力共同达 成某种目的的应用程序。在一个SSP包中,定义了完成一套网络级 业务配置对应的数据YANG模型、 Python脚本、Jinja2模板。 • 业务YANG模型描述了业务的相关参数。 • Python脚本可以对输入业务Yang模型数据进行进一步校验或 者逻辑处理,AOC在open-api中提供了很多接口方便用户处 理。 • Jinja2模板通过使用Jinja2语法诸如插值、条件判断、循环等 完成对网元的Yang模型数据结构描述。2.2 作用业务包可支撑业务跨设备、跨厂商快速部署,当在开放可编程中导入一 个SSP后,用户就可以基于业务Yang模型对对应的网络业务进行配置 发放,并且支持查看由业务分解出的网元级配置等。三 开发全景开发全景如下步骤:1.业务分析2.开发SSP包• 创建SSP包模板• 编辑pkg.json• 业务开发YANG模型• 开发Python映射代码• 开发Jinja2模板• 编写测试用例3.编译SSP包4.验证SSP包在开发SSP包步骤中是一个循环的步骤。四 L3VPN业务分析4.1 环境• IDE:本地IDE或者在线IDE环境 • AOC:在线AOC环境或者本地实验室AOC环境4.2 设计L3vpn的组网以及配置比较复杂,当前由于时间及环境的关系 我们只挑选PE节点中的部分配置下发,其他的节点及配置类似, 假定业务分析设计阶段已完成,网元层最终要下发给设备的模 型数据已确定,只需要针对PE节点下发vpn相关属性,以及接 口相关属性4.3 目标编写Yang,编写分解逻辑以及模板,最终AOC试运行产生的配置数 据符合预期4.4 命令行解析假设设备上VPN的全局配置已经配置完成。现在 只需要下发如下配置: 1. 创建VPN实例5G-RAN,配置RT和RD值。 2. 创建子接口,配置接口地址、vlan并绑定 VPN实例。 3. 配置VPN路由,引入静态路由和直连路由, 配置BGP对等体。 4. 使能YANG接口下发bgp配置。上图为Yang模型对应的格式报文,最终写的jinja2模版报文也类似。4.5 整理网络配置的输入参数根据l3vpn业务梳理出网络配置的输入参数: 1. 标识哪个VPN业务下发到哪台设备,提取出 设备名称和VPN名称两个参数,作为组合 key标识一个VPN业务。 2. VPN需要配置RT和RD值,过滤路由信息, 提取出RD和RT两个参数。 3. 接口需要配置IPv4地址、绑定VPN、配置 vlan,提取出子接口名称、接口描述、接口 IP和掩码4个参数。 4. 配置BGP对等体,提取出对等体的IP。五 开发业务YANG模型5.1 编写业务YANG模型 1. 在SSP包模板的yang模型中,服务名称对应 业务YANG module的名称,业务定义点对 应业务YANG模型的“app:applicationdefinition”。 2. 在yang模型中定义业务标识,本例中使用设 备名称和VPN名称作为组合key。 3. 在yang模型中定义VPN业务的RD和RT值。 4. 在yang模型中定义子接口配置。 5. 在yang模型中定义对等体信息。5.2 校验YANG文件运行命令D:\yang-offline-util>java -jar yang-offline-util.jar validate console path .yang-offline-util.zip获取地址: https://devzone.huawei.com/test/aoc/resDownload.html 1. 从AOC开发者社区上下载YANG文件校验工具。 2. 然后解压“yang-offline-util.zip”。 3. 将软件包“yang”目录下的业务YANG模型文件, 复制到“yang-offline-util.zip” 的解压路径下。 4. 从离线工具包中获取业务YANG模型文件依赖的 YANG文件huawei-ac-applications.yang和ietfinet-types.yang,并放到和业务YANG模型文件 的同一个目录下。 5. 打开CMD并切换到校验工具所在目录,执行命令 验证YANG模型的正确性。当运行结果为空时, 表明YANG文件格式正确。六 开发Python映射6.1 开发python映射代码 1. 在编写python代码前,需要引入必要的头 文件中的相关类。 2. 复写“ncs_map” 方法,将用户业务 YANG定义的业务数据填充到jinja模板。 3. 定义一个方法,用于更新VRF描述信息。 4. 定义一个方法,用于校验主接口是否存在。 5. 添加Jinja模板过滤器,用于在Jinja模板中 实现SSP业务映射到不同款型设备。6.2 开发Jinja2模板1. 根据ifm、network-instance、bgp的配置,制 作Jinja2模板,在业务分析涉及阶段已分析,并获取 到了对应的网元Jinja2模型。 2. 将具体值提取出变量,完成后将模板放入到模板 文件(L3VPN>template>l3vpn>NE8000M8.j2)中。 3. 如果有多种类型设备,可以将业务扩展映射到不 同款型的设备。 4. 将编写好的模板放入到模板文件 (L3VPN>template>l3vpn>servicepoint.j2)中。6.3 编写测试用例编写测试用例 1. 编写llt测试代码,并保存到test > l3vpn路径下的脚本文件中。2. 运行测试脚本文件,可以看到 生成的报文,检查报文格式和 值是否正确。6.4 加载SSP 包1. 在AOC软件的“包仓库”页 面,先删除原来的SSP包模 板。 2. 然后导入新开发的SSP包和 签名文件。 3. 单击“操作”列中的“部 署”,激活SSP包。 6.5 下发网络业务1. 进入“业务管理”页面,选中 业务模型“l3vpn”,单击 “增加”。 2. 在打开的页面中,填写设备名 称和VRF名称后,单击“创 建”。 3. 再填写 子接口与和bgp 等配置 信息 。 4. 单击“试运行”,查看将要下 发的配置报文 。七 实战在CloudIDE进行编码设配配置包仓库中创建包模版最终完成开发及测试运行。本文整理自华为云社区内容共创活动:【内容共创系列】中秋月圆至,人间好时节——签约作者征集令,推荐/参与活动有奖。查看活动详情:https://bbs.huaweicloud.com/blogs/298594