-
在Yang模型中,定义了一个list(如下代码),生成的AOC GUI如下图。 希望能够灵活输入vpn的参数(VPN的数量根据用户输入来确定) 但是发现每次list只有最后添加的的VPN参数才生效,请问如何才能实现这种需求?(脚本可以参考附件)  ``` 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核心机制及相关概念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
-
你想成为编程大牛吗?你知道网络开发也可以如此简单吗?特邀华为数通网络开放可编程专家WeiWei老师,为您讲解L3VPN业务包开发,实战网络自动化。学编程、思变革、迎未来!这是网络新运维革命的盛会。精彩时刻,等你加入!直播主题:AOC一触即发,玩转L3VPN业务开发直播时间:2021年8月20日16:00-17:30直播介绍:综合运用YANG、python、Jinja能力,通过AOC社区“在线开发”云上平台,快捷创建虚拟网元,完成L3VPN业务包的实战开发。1、【直播前】报名链接:https://bbs.huaweicloud.com/signup/70f7ab3bb2624ba38c7429eecc7fad70?utm_source=webinar&utm_medium=signup&utm_campaign=signup2、【直播后】直播盖楼有奖链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=147210
-
实战L3VPN业务包开发最近看完直播“AOC一触即发,玩转L3VPN业务开发”,对开放可编程强大的可编程能力很感兴趣,又很担心开发一个SSP包很复杂,所以今天亲自上手,试试实战做个L3VPN业务的软件包,看看是不是很难?直播视频回放地址:https://bbs.huaweicloud.com/live/HDZ_live/202108201600.html实战环境:本地IDE环境 从PyCharm官网下载安装社区版本,PyCharm官网:https://www.jetbrains.com/pycharm/AOC界面:在线AOC环境 https://remotelab.huawei.com/AOCmini2001/aocwebsite/#/aocIndexPage下面是记录的完整的实战过程。开发一个L3VPN的EasyMap网络业务,将配置下发到已纳管的设备NE8000M8上。万丈高楼平地起,首先要把基础打牢。 开发SSP包,首先得要有一个空的SSP软件包模板。可以从开放可编程环境上下载模板,也可以拿已有的SSP包做模板。 下面讲一下如何从环境上创建和下载模板。进入开放可编程主界面,在主菜单中选择“包仓库”,从左侧导航栏选择进入“包管理”界面,单击“增加”。并在弹出的“增加”对话框中设置软件包的相关属性。属性名称属性值名称L3VPN版本1.0.0提供商HUAWEI包类型Specific Service plugin描述l3vpn服务名称l3vpn业务定义点l3vpn映射类型python+template单击“确定”后,在弹出的提示添加成功的对话框中再次单击“OK”,即可在软件包列表中看到新添加的软件包。单击这条软件包记录“操作”栏中的下载图标下载该软件包到本地。接下来就在模板上编辑,先编辑软件包配置文件,描述下SSP包相关信息。打开PyCharm,单击“Create New Project”,进入“New Project”对话框。展开“Project Interpreter”区域,确认配置无误后,单击“Create”。如果已创建工程,则直接打开PyCharm工程即可。将下载下来的软件包解压到当前工程所在路径。在集成开发环境左侧导航树中,双击打开pkg.json文件。如果生成模板时填写的很规范,基本上这里不用修改什么。注意检查下hooks下的参数设置,EasyMap网络层业务分解为网元层业务时,type设置为mapping。{ "name": "L3VPN", "version": "1.0.0", "description": "l3vpn", "package-type": "ssp", "producer": "huawei", "service-name":"l3vpn", "nce-min-versions":[ "1.0.0" ], "hooks": [ { "type": "mapping", "key": "l3vpn", "python-class-name": "l3vpn.l3vpn.L3VPNService" } ] }开发SSP包,能实现在界面上配置业务参数,快速下发业务。那么我们现在就要开发业务YANG模型,定义这些参数。在集成开发环境左侧导航树中,双击打开yang目录下的.yang文件,编写YANG模型。不同的业务对应不同的参数,这里L3VPN业务涉及的参数已经帮大家整理出来了,如下表所示,不懂业务的开发者只需照抄定义即可。表 L3VPN业务配置参数类别描述参数名称参数值VPN业务标识标识哪个VPN业务下发到哪台设备,提取设备名称和VPN名称。deviceNamePE1vrfName5G-RANVPN配置参数VPN需要配置RD和RT值,过滤路由信息,提取RD和RT值。rd100:01:00rt100:11:00接口配置参数绑定VPN的子接口需配置IPv4地址,提取子接口名称、子接口描述、子接口IP和子接口掩码。ifNameGigabitEthernet0/5/0.1descriptionconnect to pe2ip20.1.2.9Subnet mask255.255.255.0BGP对等体配置参数配置BGP对等体的IP地址,提取对等体IP。peerAddress2.2.2.2下面YANG文件中定义上述参数。module l3vpn { //模块名称对应服务名称 //YANG模块命名空间,全球唯一的URI标识;通过prefix定义命令空间的缩写字符串 namespace "http://example.com/l3vpn"; prefix "l3vpn"; //huawei-ac-applications和ietf-inet-types定义了公共模型,这里需要导入 import huawei-ac-applications { prefix app; } import ietf-inet-types { prefix inet; } description "The module for L3VPN example."; revision 2020-11-05 { description "Initial revision."; } //可以用augment定义对YANG模型的增广模型 augment "/app:applications"{ list l3vpn { app:application-definition "l3vpn"; /*app:application-definition 表示定义一个系统可识别的servicepoint, 这里的service-point必须要和pkg.json文件hooks参数中的key字段值一致。*/ key "deviceName vrfName"; //定义业务标识,本例中使用设备名称和VPN名称作为组合key leaf deviceName { type string { length "1..512"; } } 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; } //在yang模型中定义VPN业务的RD和RT值 leaf rd { description "BGP route distinguisher"; type string; } leaf rt { description "Route target extended community as per RFC4360"; type string; } //在yang模型中定义子接口名称 leaf ifName { type string { length "0..255"; } } //在yang模型中定义子接口描述 leaf description { type string { length "0..242"; } } //在yang模型中定义子接口IP leaf ip { type inet:ipv4-address; } //在yang模型中定义子接口掩码 leaf subnet { type inet:ipv4-address; } //在yang模型中定义对等体IP信息 leaf peerAddress { type inet:ipv4-address; } } } } 开发Python代码,实现业务功能逻辑。本实例代码逻辑主要包含如下几部分:检查绑定VPN子接口的主接口是否存在,不存在则报错。(可选)更新VPN描述信息,方便后续查询时显示业务用途。这项可选,没有也不影响业务功能。将业务YANG定义的业务数据填充到Jinja2模板中,生成下发设备的报文。L3VPN软件包代码示例如下所示。# 必选,NcsService是系统提供的供SSP包继承的父类,需要复写以实现业务YANG数据到Jinja2模板的映射;devicemgr提供了一些查询设备信息的接口。 from aoc import NcsService, devicemgr # datastore提供了读写数据库的接口 from aoc import datastore # AOCException是系统定义的异常类,可以把用户自定义的异常呈现到前台界面 from aoc.exception.aocexceptions import AOCException # L3VPNService继承NcsService类并复写ncs_map方法 class L3VPNService(NcsService): def ncs_map(self, request, aoccontext=None, template=None): l3vpn_dict = self.xmltodict(request.xml) # 检查主接口是否存在 self.checkInterfaceIsExist(request, aoccontext) # 更新VPN描述信息 self.updateDes(l3vpn_dict) self.logger.info(str(l3vpn_dict)) # 将业务YANG定义的业务数据填充到jinja2模板 res = self.render('l3vpn/servicepoint.j2', l3vpn_dict) self.logger.info(res) return res # 更新vrf描述信息 # 如果要获取YANG模型相关的节点数据,可以通过x.y.z或x['y']['z']这样的方式便捷操作模型数据。 def updateDes(self, l3vpn_dict): if '3G' in l3vpn_dict['l3vpn']['vrfName'] : l3vpn_dict.update({"vrfDes": '3G'}) l3vpn_dict['l3vpn'].update({"description": '3G'}) # 校验主接口是否存在 def checkInterfaceIsExist(self, request, aoccontext): device_id = devicemgr.query_neid(request.xmldictnode.l3vpn.deviceName) subIfName = request.xmldictnode.l3vpn.ifName pointIndex = subIfName.find('.') parentName = subIfName[0:pointIndex] self.logger.info('deviceId:%s, parentName:%s' % (device_id, parentName)) if devicemgr.is_snd(device_id, 'NE8000M8SPC300_SND') or devicemgr.is_snd(device_id, 'NE8000_M8'): path = "huawei-ac-nes:inventory-cfg/nes/ne/" + device_id + "/huawei-ifm:ifm/interfaces/" # 查询配置数据库中数据 output = datastore.read_datastore_rdb(aoccontext, path) asnindex = str(output).find(parentName) if asnindex == -1: raise AOCException(parentName + ' not exist in device!') # 添加Jinja2模板过滤器,用于在Jinja模板中实现SSP业务映射到不同款型设备 def add_filters(self): result = {"is_snd": self.is_snd} return result def is_snd(self, nename, sndid): # 根据设备名称查询设备ID neid = devicemgr.query_neid(nename) # 判断设备使用的哪个网元驱动包 return devicemgr.is_snd(neid, sndid)开发Jinja模板,将南向报文的主要部分写好,空白部分用python中变量传递值进来。先同步下设备配置。在主菜单中选择“设备配置 > 设备配置”。进入“设备配置”界面,选择对应的设备,单击“同步操作 > 同步”。登录设备,在设备上用命令行配置L3VPN业务。选择对应的设备,单击“差异发现”。差异发现结束后,“同步状态”显示为“差异发现完毕”,在操作列单击“查看差异”,打开差异呈现页面,选择“导出模板”。在“设备配置”界面,单击对应设备操作列中的“编辑”。在左边模型节点上方单击导出图标,弹出导出页面。在导出页面中,勾选“huawei-ifm、Huawei-network-instance和huawei-bgp”三个模型节点,勾选“合并模板”,勾选“带结构不带数据”导出方式,然后单击“确定”。打开导出的模板,对比差异发现导出的数据模板,删除多余部分,仅保留下发部分,然后把输入参数替换为参数名称变量。最后把编辑的内容放入到模板文件“template>l3vpn>NE8000M8.j2”中。<bgp xmlns:x="urn:huawei:yang:huawei-bgp" x:tag="no_delete"> <global> <yang-enable>true</yang-enable> </global> </bgp> <network-instance xmlns="urn:huawei:yang:huawei-network-instance"> <instances> <instance> <name>{{l3vpn.vrfName}}</name> {%- if l3vpn.vrfDes %} <description>{{vrfDes}}</description> {%- endif %} <afs xmlns="urn:huawei:yang:huawei-l3vpn"> <af> <type>ipv4-unicast</type> <route-distinguisher>{{ l3vpn.rd }}</route-distinguisher> <tunnel-policy>LDP</tunnel-policy> <vpn-targets> <vpn-target> <value>{{ l3vpn.rt }}</value> <type>export-extcommunity</type> </vpn-target> <vpn-target> <value>{{ l3vpn.rt }}</value> <type>import-extcommunity</type> </vpn-target> </vpn-targets> </af> </afs> <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>{{ l3vpn.peerAddress }}</address> <remote-as>100</remote-as> </peer> </peers> </base-process> </bgp> </instance> </instances> </network-instance> <ifm xmlns="urn:huawei:yang:huawei-ifm"> <interfaces> <interface> <name>{{ l3vpn.ifName }}</name> <type>GigabitEthernet</type> <description>{{ l3vpn.description }}</description> <vrf-name>{{ l3vpn.vrfName }}</vrf-name> <ipv4 xmlns="urn:huawei:yang:huawei-ip"> <addresses> <address> <ip>{{ l3vpn.ip }}</ip> <type>main</type> <mask>{{ l3vpn.subnet }}</mask> </address> </addresses> </ipv4> </interface> </interfaces> </ifm>将业务扩展映射到不同款型的设备,编写调用对应款型设备Jinja2模板的逻辑,将编辑好的内容放入到模板文件“template>l3vpn>servicepoint.j2”中。<inventory-cfg xmlns="urn:huawei:yang:huawei-ac-nes"> <nes> <ne> <neid>{{l3vpn.deviceName| to_ne_id}}</neid> {%- if l3vpn.deviceName | is_snd('NE8000M8SPC300_SND') %} {% include 'l3vpn/NE8000M8.j2' %} {% elif l3vpn.deviceName | is_snd('NE8000M8_SND') %} {% include 'l3vpn/NE8000M8.j2' %} {% endif %} </ne> </nes> </inventory-cfg>开发工作已完成了,喝杯茶休息一下。然后接下来我们验证下YANG文件语法合法性。登录数通网络开放可编程社区:https://devzone.huawei.com/cn/enterprise/aoc/resDownload.html,下载验证工具。解压“yang-offline-util.zip”。复制软件包“yang”目录下的YANG模型文件到“yang-offline-util.zip”的解压路径下。运行如下命令验证YANG文件的正确性。前面路径是你的工具解压路径,不要搞错了哦。后面蓝色命令请务必输出正确,特别注意path后面是空格和一个点。C:\Users\demo\yang-offline-util>java -jar yang-offline-util.jar validate console path .当运行结果为空时,表明YANG文件格式正确。否则就需要根据报错检查并修正错误。C:\Users\demo>cd yang-offline-util C:\Users\demo\yang-offline-util>Java -jar yang-offline-util.jar validate console path . C:\Users\demo\yang-offline-util>最后,编译软件包,制作出可使用的软件包。在PyCharm窗口中,单击窗口下方的“Terminal”展开命令行窗格。运行软件包路径下“bin”目录中的“makeFile.bat”文件开始编译软件包。在命令行中运行如下命令:(dem) C:\Users\demo\PycharmProjects\dem>cd bin(dem) C:\Users\demo\PycharmProjects\dem\bin>makeFile.bat运行完成后,如果命令回显出现下面的内容表示编译成功。此时,可前往软件包路径下的“output”目录中获取软件包及其签名文件。[com.huawei.ncecommon.extended.pkg.mgr.tools.tool.Main] - [ZipAndSign] Sign: Execute successSo easy,好了,大功告成,软件包做出来,庆祝下吧!
-
HVPN解决方案现在对层次化VPN统一叫HVPN,两种实现形式,一种叫HoVPN,一种叫H-VPN。在IPRAN网络中,采用HVPN方案构建的无线接入网,不仅使网络具备优秀FMC承载能力,而且使CSG到RSG之间实现层次化,具有良好的可扩展性和灵活性,适合规模较大的网络承载。产生背景常规的BGP/MPLS IP VPN 是一种平面模型,对网络中所有PE 设备的性能要求相同,当网络中某些PE 在性能和可扩展性方面存在问题时,整个网络的性能和可扩展性将受到影响。目前的网络设计大多采用经典的分层结构,BGP/MPLS IP VPN 的平面模型与典型的分层网络模型不相符,在每一个层次上部署PE 都会遇到扩展性问题,不利于大规模部署VPN。为解决可扩展性问题,BGP/MPLS IP VPN 必然要从平面模型转变为分层模型分层VPN(Hierarchy of VPN)解决方案将PE 的功能分布到多个PE 设备上,多个PE 承担不同的角色,并形成层次结构,共同完成一个PE 的功能。分层VPN对处于较高层次的设备的路由能力和转发性能要求较高,而对处于较低层次的设备的相应要求也较低,符合典型的分层网络模型。BGP/MPLS VPN 可以逐层部署。当UPE 的性能不够的时候,可以添加一个SPE,将UPE 的位置下移。当SPE 的接入能力不足的时候,可以为其添加UPE。UPE 和SPE 之间采用标签转发,因而只需要一个(子)接口相互连接,节约有限的接口资源。若UPE 和SPE 之间相隔一个IP/MPLS 网络,采用GRE 或LSP 等隧道连接。在分层部署MPLS VPN 时,有良好的可扩展性。UPE 上只需维护本地接入的VPN 路由,所有远端路由都用一条缺省或聚合路由替代,减轻了SPE 的负担。SPE 和UPE 通过动态路由协议MP-BGP 交换路由、发布标签。每一个UPE 只需建立一个MP-BGP 对等体(主备情况建两个),协议开销小,配置工作量小。HVPN的基本结构,主要包括UPE、SPE和NPE三类设备: UPE:直接连接用户的设备称为下层PE(Underlayer PE)或用户侧PE(User-end PE),简称UPE。UPE主要完成用户接入功能。 SPE:接入UPE并位于网络内部的设备称为上层PE(Superstratum PE)或运营商侧PE(Service Provider-end PE),简称SPE。SPE主要完成VPN路由的管理和发布。 NPE:连接SPE并面向网络侧的PE称为网络侧PE(Network Provider-end PE),简称NPE。 HoVPN和H-VPN区别1、 路由传播HoVPN:SPE仅向UPE发布缺省路由或聚合路由H-VPN:SPE向UPE通告所有明细路由2、 流量传输HoVPN:UPE发往其他UPE或NPE的流量都需要通过在SPE上通过查找私网转发表进行流量转发H-VPN:UPE发往其他UPE或NPE的流量直接在SPE上交换标签进行转发3、 配置差异HoVPN:SPE上需要部署VPN实例(配置RT)H-VPN:SPE上不需要部署VPN实例,但是需要配置反射器,直接在NPE和UPE之间反射BGP VPNv4路由 (配置BGP VPNv4 FRR)
-
1.1 VPN的简单分类首先说以下VPN的分类,VPN的分类有许多种方式。我们一般常接触的分类方式是按照运营模式进行分类: 1)、CPE-Based VPN: 设备放置在用户侧(Custom Premise Equipment)由用户管理或委托运营商进行管理; 2)、Network-Based VPN: 设备放置在运营商网络侧用户设备不需要感知VPN由运营商管理,又称为Provider Provide VPN。本文所讨论的三种L2VPN都是属于Network Base VPN。图1、 VPN技术的分类1.2 VLL、PWE3、VPLS三种L2VPN区别1.2.1 三种L2VPN的简介VLL( Virtual Leased Line,虚拟租用线,也被称为VPWS)是对传统租用线业务的仿真VLL技术是一种点到点的虚拟专线技术,能够支持几乎所有的链路层协议。VLL简单的理解就好比在客户之间拉了一条网线。分为Kompella和Martini两种实现方式,但Kompella工作组已经解散,Martini也更新为PWE3技术。PWE3(Pseudo-Wire Emulation Edge to Edge)是端到端仿真业务,PWE3是VLL的一种实现方式,是对Martini协议的扩展。PWE3扩展了新的信令,减少了信令的开销,规定了多跳的协商方式,使得组网方式更加灵活。在IPRAN网络大量使用PWE3来承载TDM等二层业务。VPLS(Virtual Private LAN Service)是一种基于MPLS和以太网技术的二层VPN技术。具体分为Juniper主导的Kompella方式和Cisco主导的Martini方式,是将公网模拟为二层交换机。适合于点到多点的业务,简单的说VPLS就是一个超级交换机。1.2.2 VLL、PWE3、VPLS实现方式的对比下面这张表是总结的VLL、PWE3、VPLS三种L2VPN的实现方式对比。分类实现方式信令协议备注VLLCCC手动配置支持本地连接MartiniLDP不支持本地连接,配置ldp remote-peerSVC内层标签手动配置,外层LDP看成是Martini方式的静版KompellaBGP使用vpn-target进行vpn路由的收发控制,支持本地和远程连接。PWE3VLL的Martini形式扩展LDP信令的扩展1、 增加了Notification方式2、 增加了多跳PW扩展3、 TDM接口扩展VPLSKompellaBGPPE端口绑定VSI(虚交换实例)进行VPLS转发MartiniLDP1.3 举例三种L2VPN实际配置对比只说这三种L2VPN不能很好的理解,下面就以一个Martini和Kompella两种方式实现VPN跨域Option C为例子,说说VLL和VPLS的区别(PWE3只是是VLL Maritni形式的一种扩展和演进,在这种场景下实现和VLL完全相同,后面会对PWE3进行单独的介绍)。Martini和Kompella的最主要区别是:1、使用Martini方式时,采用LDP信令分发标签,PE之间要建立mpls ldp remote-peer;2、采用Kompella方式时,采用BGP信令分发标签,PE之间建立MP-EBGP关系。1.3.1 Martini方式的VLL和VPLSMrtini形式的Option C实现时,典型组网如下图所示。首先在骨干网上运行IGP协议,使同一个AS域内的各设备能互通。在骨干网上节点使能MPLS,在PE与ASBR之间建立动态LSP隧道。同一AS的PE和ASBR之间建立IBGP,在各ASBR之间配置EBGP。在ASBR上需配置路由策略,使能标签路由功能。在PE1和PE2之间建立MPLS LDP远端对等体关系。图2、Martini方式实现跨域Option C的典型组网上图2中,PE1、ASBR1、ASBR2、PE2的loopback0 地址分别为1.1.1.1/32,2.2.2.2/32,3.3.3.3/32,4.4.4.4/32。1、 VLL形式在完成前面的基础配置后,检查PE1和PE2之间的remote-ldp peer建立起来,需要在mpls l2vpn试图下面配置动态VC的信令行为是非Notification方式,也就是Martini方式。如果不配置这条命令,默认是PWE3方式。这也是PWE3和VLL Martini的最主要区别。 mpls l2vpn mpls l2vpn default martini在PE上面创建动态VLL链接mpls l2vc ip-address vc-id其中ip-address为PW对端设备的IP地址2、 VPLS形式VPLS形式的首先创建一个VSI,然后在连接CE的端口上绑定该vsi实例,这和L3VPN中绑定VPN-instance有点类似。 Martini方式的两种L2VPN配置实现差异如下表所示。Msrtini形式配置差异PE上的命令差异VLL1、 在mpls l2vpn试图下面配置动态VC的信令行为是Martini方式2、 在PE上面创建动态VLL链接mpls l2vpn mpls l2vpn default martini#interface Serial0/0/1 link-protocol ppp undo shutdown mpls l2vc 4.4.4.4 100VPLS1、 建立一个VSI,PW信令设置为LDP;2、 在端口下绑定该VSI。mpls l2vpn#vsi a1 staticpwsignal ldp vsi-id 2 peer 4.4.4.4#interface GigabitEthernet0/0/1.1undo shutdownvlan-type dot1q 10l2 binding vsi v11.3.2 Kompella方式VLL和VPLSMrtini形式的Option C实现时,典型组网如下图所示。协议部署和Martini方式的基本一致,区别在于PE1和PE2之间建立的是MP-EBGP远端对等体关系。图3、 Kompella方式实现跨域Option C的典型组网图3中,PE1、ASBR1、ASBR2、PE2的loopback0 地址分别为1.1.1.1/32,2.2.2.2/32,3.3.3.3/32,4.4.4.4/32。Kompella方式的VLL和VPLS差异如下表Kompella方式配置差异PE上的命令差异VLL 创建l2vpn实例,创建CE连接mpls l2vpn#mpls l2vpn vpn1 encapsulation ppproute-distinguisher 100:1vpn-target 1:1 import-extcommunityvpn-target 1:1 export-extcommunityce ce1 id 1 range 10 default-offset 0connection ce-offset 2 interface Serial0/0/1VPLS1、 创建VSI虚交换实例,pw信令协议为bgp2、 在端口下绑定VSI实例mpls l2vpn#vsi v1 autopwsignal bgproute-distinguisher 100:1vpn-target 1:1 import-extcommunityvpn-target 1:1 export-extcommunitysite 1 range 5 default-offset 0#interface GigabitEthernet1/0/0.1undo shutdownvlan-type dot1q 10l2 binding vsi v11.3.3 PWE3形式的L2VPNPWE3相对VLL的Martini方式在以下几点进行了扩展。1、 信令扩展,LDP信令增加了Notification方式,只通告状态,不拆除信令,除非配置删除或者信令协议中断。这样能够减少控制报文的交互,降低信令开销,兼容原来的LDP和Martini方式。2、 多跳扩展,增加PW多跳功能,这点在IPRAN网络中应用十分广泛,对于TDM和ATM业务的承载都可以采用多条PW方式。在IPRAN中典型组网如下图所示:CSG和RSG之间部署多条PW,CSG、ASG、RSG之间建立MPLS LDP PEER,在CSG、RSG上配置业务PW,在主备ASG上配置交换PW,在主备RSG之间部署Bypass PW。图4、多条PW在IPRAN中的应用3、 TDM接口扩展支持更多的电信低速TDM接口。通过控制字CW(Control Word)及转发平面RTP(Real-time Transport Protocol)协议,引入对TDM的报文排序、时钟提取和同步的功能。1.4 总结这三种L2VPN理解起来容易搞混,简单的理解,VLL是点到点的业务,可以将整个网络看成一条网线;VPLS是点到多点业务,可将整个网络看成是一个交换机;PWE3是端到端的仿真,其实就是VLL的Martini形式扩展。理解这几点,再去看这三种L2VPN就容易很多了。
-
按所用的设备类型进行分类:(1)路由器式VPN:路由器式VPN部署较容易,只要在路由器上添加VPN服务即可;(2)交换机式VPN:主要应用于连接用户较少的VPN网络;(3)防火墙式VPN:防火墙式VPN是最常见的一种VPN的实现方式,许多厂商都提供这种配置类型。
-
【功能模块】STREAM网络传输 【操作步骤&问题现象】 DWS集群因为其分布式架构,网络成了无法回避的一个瓶颈点。 熟悉Oracle RAC的同学都知道,Oracle计算节点之间的通信是通过私有网络(一般是 192.168.x.x, 不对外公布),私有网络是RAC节点间通信的通道 ,包括节点间的网络心跳信息、Cache Fusion传递数据块(某节点要处理另外一个节点正在处理的内存中的数据块,会通过内存及私有网传输,不通过磁盘)都需要通过私有网络。 有个问题想请教下: DWS执行过程中大概率会产生Stream, 要么重分布要么广播,这些数据库传输可能都是非常大的,是否走到内部私有网络,而不是业务网 ? 如果走的是业务网, 势必会与繁忙的业务网络冲突,影响到各个DN需要将结果集传输到CN的速度,为什么不分开 ? 【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
1.不用代理网民发帖流程:发帖人 → ISP → 服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → 发帖人IP → 发帖人ISP → 档案人肉几率:100%2.只用1层私人VPN网民发帖流程:发帖人 → ISP → VPN → 服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → VPN的IP → 路由日志 → 链接者IP → 链接者ISP → 网站档案人肉几率:100%3.用1层共用VPN网民发帖流程:发帖人 → ISP → VPN → 服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → VPN的IP → 入侵VPN服务器 → 日志 → 链接者IP → 链接者ISP → 办网档案人肉几率:80%4.用2层私人VPN网民发帖流程:发帖人 → ISP → VPN1 → VPN2 → 服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → VPN2的IP → 入侵VPN2服务器 → 日志查VPN1 → 路由日志 → 链接者IP → 链接者ISP → 办网档案人肉几率:40%5.用2层共用VPN网民发帖流程:发帖人 → ISP → VPN1 → VPN2 → 服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → VPN2的IP → 入侵VPN2服务器 → 日志查VPN1 → 日志 → 链接者IP → 链接者ISP → 办网档案人肉几率:25%6.用N层私人(共用)VPN后删掉VPN,如果发帖人有QQ网民发帖流程:发帖人 → ISP → VPN1 → VPN2 → VPN3 → VPN*n服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → 访问网站 → 发帖人常用用户名 → 谷歌(百度)一下 → 查到QQ → 找企鹅公司查近期登录IP人肉几率:100%7.用N层私人(共用)VPN后删掉VPN,如果发帖人无QQ网民发帖流程:发帖人 → ISP → VPN1 → VPN2 → VPN3 → VPN*n服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → 访问网站 → 发帖人常用用户名 → 谷歌(百度)一下 → 查到其他论坛注册的ID → 找管理员查注册(登录)IP人肉几率:100% 8.用N层私人(共用)VPN后删掉VPN,如果发帖人再网上没有任何信息网民发帖流程:发帖人 → ISP → VPN1 → VPN2 → VPN3 → VPN*n服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → 访问网站 → 无常用用户名 → 根据发帖内容(如北京市海淀区XX小区) → 监控整个小区宽带 → 分析 → 找到IP人肉几率:80%(如果不是严重的问题,如判国之类的应该不会用这种蛋疼方法)9.用N层私人(共用)VPN后删掉VPN,如果发帖人再网上没有任何信息,但电脑上有自动链接网络的软件,如QQ,金山快盘等。。网民发帖流程:发帖人 → ISP → VPN1 → VPN2 → VPN3 → VPN*n服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → 访问网站 → 无常用用户名 → 各大公司查IP → 查到常用用户名 → 查历史登录记录 → 查ip → 完事人肉几率:100%10.到KFC之类的地方上公共网。网民发帖流程:发帖人 → KFC → 服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → 访问网站 → 看发帖日期时间 → 到KFC → 调监控 → 完事人肉几率:100%11.到KFC之类的地方上公共网,假设本次没被监控拍到网民发帖流程:发帖人 → KFC → 服务器托管商 → 服务器网警追踪流程:网监 → 服务器IP → 访问网站 → 看发帖日期时间 → 到KFC → 查MAC地址 → 到附近其他公共网络查此MAC → (如果DHCP会查计算机名) → 附近监控 → 完事人肉几率:100%12.假设网监已知道MAC地址 12.1 假设自己买的电脑查MAC数据库能找到销售商。。一般买电脑的时候MAC也有记录。。可能是三包凭证之类的都有。。而一般买电脑会让你提供个人信息填写三包,MAC之类的硬件代码也会记录。。之后你懂的,不过有些商家对这个不怎么记录。不过也有可能查购买者银行卡(如果非现金)。所以..人肉几率<25%12.2 假设是线下二手交易同样,查到电脑原主人,问问就知道了。。不过一般交易者都会留下你的手机号之类的,到移动联通电信之类的查查就知道了。。如果非实名卡查查基站,能查到IMEI,如果不是山寨机同样有方法查到买手机的人,所以我感觉这样反而没到小地方买电脑的方法保险。。人肉几率<75%————————————————转载链接:https://blog.csdn.net/weixin_42078760/article/details/85922424
-
【协商篇】1、检查两端协商参数配置是否一致,确认云下的协商设备是否处于IDC出口,非出口设备协商请使用IKEv1的野蛮模式,其它组网推荐使用IKEv2的默认协商策略;说明:连接已建立跳过此步。2、确认两端是否在该公网IP上建立多条连接,确认每条连接的感兴趣流子网不存在冲突或重叠;注意:同一网关下多条连接存在感兴趣流重叠时,云下设备按照创建的连接序号进行匹配,序号越小越优先;云上则按照创建时间先后顺序配置,最早创建的优先,并非按照子网的掩码长度匹配。3、感兴趣流中的云下或云上的子网请使用明细IP+掩码配置,勿使用地址组包含多个子网的方式配置;4、确认云下网络是否存在多出口,若存在多出口请指定访问华为云公网IP及私网IP(NAT穿越的出口只指定公网IP即可)均从协商IP所在接口流出,不能使用动态负载。5、基础配置检查无误后,请检查NAT配置。确保云下子网访问云上子网的数据在出接口不被NAT;云下设备的接口IP在访问华为云公网IP时不被NAT。6、检查安全策略配置,确保云下子网与云上子网的数据互访全服务放行;云下公网IP云云上VPN网关IP互访放行AH、ESP以及UDP的500和4500。【丢包篇】7、确认网络组网是否多出口,是否因为负载导致丢包,连接中断亦请排查该项,务必使得数据流恒定的走特定出口访问华为云。8、优先检查公网质量。可以从云下的网关IP ping 测试华为云VPN网关IP(华为云网关IP缺省放行ICMP报文)检查是否有丢包。同时ping测试其它非华为云公网IP,若两个公网IP同时丢包时,建议向您的网络提供运营商求助;若只有访问华为云丢包,执行下一步。9、检查VPN网关的带宽使用情况,若存在带宽超限时,请扩容VPN网关的带宽规格。若以上情况均未出现,请您通过工单告知我们。10、云侧运维人员需要排查公网出口质量,整体带宽配额使用情况,安全流量配置等信息,确认是否出现异常丢包。【中断篇】11、公网出现异常抖动,导致一侧删除连接,且通知对端的删除报文被丢弃,此时会出现单边存在SA(需要等待SA老化才能在这一端发起协商),请在没有SA的一侧发起协商流。12、检查VPN网关的带宽使用情况,在出现带宽超限的情况下,华为云会出现因为收不到对端的DPD探测回包而断开连接。此时仍需要您扩容带宽规格。13、确认配置是否改变,检查配置信息是否一致,通过云下设备的协商报错信息判断中断原因。14、确认隧道是否一直有流量,若隧道无流量且对端设备不应答华为云的DPD请求报文报文(例如报文格式不一致,华为云DPD封装格式为seq-hash-notify)建议配置长ping保活脚本。说明:保活shell脚本请参考附件信息,可将附件脚本上传至linux操作系统的目录下,使用“unzip ping.zip”解压缩,根据文件内提示操作即可。
shangwubadian
发表于2020-11-26 20:20:26
2020-11-26 20:20:26
最后回复
shangwubadian
2020-11-26 20:20:26
6140 0 -
一、连接组网说明通过在华为云和阿里云之间建立VPN连接,实现云间的数据传输。华为云VPC信息:VPN网关139.139.a.a 云端子网:192.168.10.0/24,192.168.20.0/24阿里云VPC信息:VPN网关139.136.b.b 云端子网:172.16.16.0/24,172.17.17.0/24建立连接前请注意华为云VPN网关的工作模式:ACL策略模式:选择该模式与Ali对接,Ali侧连接不可开启BGP配置,需要手动发布VPN路由;静态路由模式:选择该模式与Ali对接,Ali侧连接务必关闭网关下的路由自动传播功能,开启BGP接口配置,需要手动发布VPN路由。此模式下不可与ACL策略模式的网关对接;动态BGP模式:选择该模式与Ali对接,Ali侧连接务必开启网关下的路由自动传播功能,开启BGP接口配置,无需手动发布VPN路由。此模式下不可与ACL策略模式的网关对接;对接策略-按照华为云缺省参数对接: 二、阿里云VPN配置登录阿里云账号,进入控制台后选择产品与服务中的专有网络VPC页面,按顺序分别创建专有网络、交换机、VPN等服务,然后创建ECS实例,用于验证数据面的连通性。本示例中略去专有网络、交换机、ECS创建步骤,以BGP路由协议对接为例,说明VPN网络的创建和对接过程。VPN网关创建分为在Ali云分为三步,详细步骤如下:STEP1 创建VPN网关选择进入控制台->选择region->产品与服务->网络->VPN网关->创建VPN网关,在弹出VPN网关创建页面中输入相关信息后付费创建。请注意创建VPN网关关联的VPC是否正确。VPN网关购买成功后,默认未开通BGP,需要在VPN网关列表页面的操作按钮中,点击“开启路由自动传播”功能。(采用静态路由对接时,“关闭路由自动传播”提示高亮)STEP2 创建用户网关选择VPN下的用户网关,点击创建用户网关,在最右侧的弹出页签填写名称,华为云VPN网关IP及BGP自治系统号。网关创建后仅名称可以修改。STEP3 创建VPN连接选择VPN下的IPsec连接,在右侧点击创建IPsec连接,在弹出页签填写连接名称,选择管理的VPN网关、用户网关,本端子网和远端子网可按照缺省配置。点击高级配置,选择两端协商策略,确保协商策略一致。选择BGP配置,开启BGP,并配置本端的隧道接口IP及指定本端自治系统号。请确保连接两端的隧道IP在同一个网段,且不得冲突(静态路由模式对接时接口IP地址配置必不可少)。修改隧道IP请重新选择编辑->高级配置进行操作。BGP创建成功后无需在Ali侧手动发布路由。健康检查请按照配置说明选择私网真实存在的IP进行探测。连接创建完成工作状态如下静态路由模式对接并不通过BGP动态学习路由,因此在Ali云的连接列表显示中,BGP状态为不正常(并不影响数据面通信),VPN路由是通过手工静态指定的。注意:1、 动态BGP通过路由宣告来动态学习子网路由,ALI云侧默认通告VPC所有的交换机子网,华为云侧按照本端子网通告子网;2、 Ali云侧创建连接请使用全0的本地子网与对端子网,否则BGP无法建立邻居,连接创建成功后,修改本端子网和远端子网配置会导致BGP邻居失效;3、 连接创建完成后,华为云与Ali云都会主动发起协商,无需数据流触发。通过BGP学习到的路由表明细信息如下所示三、华为云侧创建VGW配置的VPN连接指引详见链接:https://bbs.huaweicloud.com/forum/thread-83217-1-1.html四、配置验证(略)
shangwubadian
发表于2020-10-27 20:39:32
2020-10-27 20:39:32
最后回复
shangwubadian
2020-10-27 20:39:32
6178 0 -
一、VGW产品概述VGW为华为云针对IPSec VPN开发的新版本的产品形态;新增产品功能靓点:支撑双活负载VPN,支持BGP动态路由接入,支持公网链路监控等。更多组网场景实现:支持VPN连接多个IDC的HUB功能,支撑云上子网流量引流至IDC,支持同region两个VPC的主备EIP对接。二、创建方式Console中的VGW创建分为创建VPN网关、对端网关、VPN连接三个步骤。请在完成云上配置后,进对端VPN设备的配置。STEP 1 创建VPN网关选择控制台->网络->虚拟专用网络VPN->VPN网关,选择图示创建VPN网关按钮。在创建网关页面,请选择区域与VPC,为VPN网关指定名称及本端子网。按照规划信息修改本地VPC的BGP ASN编号,推荐使用路由模式创建VPN网关。连接模式选择静态路由:通过发布目标远端子网的静态路由匹配数据流;BGP路由:通过动态BGP学习到的路由匹配数据流。策略模式:通过感兴趣流ACL匹配数据流;可根据实际需要选择购买双活的主备EIP(VPN网关IP),分别为VPN网关EIP指定带宽策略(两者计费模式可不相同)。暂不支持主备EIP分批次创建。VPN网关提供按流量与按带宽限速两种模式(按带宽与按流量可自由切换),每个EIP提供独立的带宽监控;VPN网关创建完成后可修改名称、本端子网、带宽大小、计费模式;不可修改关联VPC、不可删除其中某一个EIP。注意:1、VPN网关EIP有别于弹性公网IP(EIP),普通的EIP不能作为VPN网关使用。2、右侧VPN网关示意图形象说明了本端网关、对端网关以及VPN连接的逻辑关系。 STEP 2 创建对端网关对端网关指与华为云VPN网关建立连接的客户侧网关IP,在创建对端网关前需要确认对接华为云的模式。静态路由及策略模式选择创建静态路由协议的对端网关,若使用动态BGP协议创建对端网关,请先获取对端的BGP ASN。对端网关创建后只能修改其名称,其它信息均无法修改。静态路由:自动发布远端子网的静态路由,下一跳指向Tunnel接口对端IP;动态BGP:通过BGP协议通告本端子网路由给Tunnel接口的对端IP。 STEP 3 创建VPN连接创建VPN连接前请预先确认对端子网信息,预共享密钥,协商策略等。选择创建VPN连接的网关及本端网关EIP,命名该VPN连接。创建连接后仅VPN连接的名称可以修改,关联的本端VPN网关及本端的公网IP不可修改。选择已创建的对端网关,输入预先规划好的对端子网。连接创建完成后对端网关和对端子网均可以修改。完成VPN Tennel隧道接口IP配置,若选用静态路由的双活场景做对接,请勾选“使能NQA”,并开启云下ICMP的请求响应,输入提前规划的预共享密钥(PSK)。该配置中隧道IP及预共享密钥在连接创建完成后可以修改,使能NQA选项不可修改。注意,修改PSK并非立即生效,PSK会在下次IKE 生命周期到期后协商生效。NQA:用于多链路场景下路由可靠性检测,通过ICMP报文检测实现。即开启该功能后才能实现静态路由模式下的连接故障切换;使能NQA后请允许来自华为云隧道IP的ICMP响应请求。动态BGP建立连接请选择路由协议为BGP,选择是否在BGP邻居间配置MD5认证,不配置时该字段留空。两端选择相同的协商策略,推荐使用华为云缺省策略或更高安全级别的策略参数。注意:1、对端网关的类型与路由协议类型需要选择一致,若对端网关创建为静态路由,路由协议务必选择静态路由,若对端网关创建为动态BGP,则路由协议务必选择BGP。否则连接无法正常协商建立。2、右侧的VPN连接示意图形象说明了本端网关、对端网关以及VPN连接的逻辑关系。3、创建双主VPN连接,请重复STEP 3,在连接中本端网关选择第二个EIP,隧道接口IP不能与已有的IP地址段冲突,其它配置信息可参考第一条连接配置。三、查看与修改配置VPN连接信息选择控制台->虚拟专用网络->VPN连接,进入VPN连接列表显示页面。页面最左侧为服务快速导航栏(可自定义添加),页面中上方可以选择开启或关闭服务简介及流程引导图示信息。流程简介下方是搜索和列表模式切换按钮,若列表中信息过多是可以通过条件搜索过滤,VPN连接是通过列表显示还是图表显示可以通过右侧按钮选择切换。连接信息展示了该VPN对应的名称、状态、ID、连接模式、计费方式、关联的VPC、调用的本端网关名称及IP,对端网关及IP以及本端子网和对端子网信息。可修改的信息请点击上图图示标号1、2、3、4、5,页面会跳转至对应修改页面。1、连接名称:在跳转页面基本信息中可修改VPN连接的名称和对端子网;可以添加针对两端公网IP的健康检查(IP地址不可修改);策略配置页面可查看、修改协商参数。2、查看监控:右侧弹出页签可查看针对该连接的状态监控,包含VPN连接状态,公网探测平均时延、最大时延、丢包率信息,也可以通过选择不同的周期进行灵活查看。3、修改连接信息:在弹出页签可修改连接的名称、本端隧道接口IP(对端隧道IP随之变化)、对端网关及对端子网。4、修改策略配置:与标号1从连接名称进入的策略配置页面修改信息相同,都是用于修改本端的协商策略,请注意协商策略需要两端一致;5、更多:重置密钥用于修改连接的预共享密钥(PSK),需要注意PSK修改后不会立即生效,需要等到IKE生命周期到期才会使用新的PSK进行协商。删除用于删除该条VPN连接。6、其它:点击VPN连接中的网关名称、对端网关名称、虚拟私有云可以查看或修改该连接关联的相关资源信息。VPN网关选择控制台->虚拟专用网络->VPN网关,进入VPN网关列表显示页面。网关信息展示了该VPN网关对应的名称、状态、关联VPC、连接模式、可用规格、公网IP、计费模式等信息。选择修改基本操作可修改网关的名称和本端子网,当网关已经被连接使用时,该网关不能被删除,VPN网关关联的虚拟私有云也不可以修改。点击网关名称跳转至网关基本信息页面,可修改网关的名称、本端子网以及对应公网IP地址的带宽。点击VPN列表中对应公网IP后面的查看监控图标,可查看对应公网IP的出网带宽、入网带宽、出网带宽使用率、出网流量和入网流量。四、 配置对端VPN设备请按照华为云配置信息完成云下设备配置。以华为USG防火墙为例,参考配置命令如下:*******************************************************************************以下为策略模式,静态路由或动态BGP模式的公共基础配置*******************************************************************************firewall tcp-mss 1300 //指定TCP MSS大小ike proposal 100 //配置IKE协商策略authentication-algorithm <SHA2-256>encryption-algorithm <AES-128>authentication-method pre-shareintegrity-algorithm <HMAC-SHA2-256>prf <HMAC-SHA2-256>dh <group14>sa duration <86400>ike peer hwcloud_peer //配置IKE对等体undo <version 2>pre-shared-key ********ike-proposal /100/remote-address <Huawei Cloud VPN Gateway EIP>ipsec proposal ipsec-hwcloud //配置IPSec协商策略transform <esp>encapsulation-mode <tunnel>esp authentication-algorithm <SHA2-256>esp encryption-algorithm <aes-128>NAT策略配置:云下子网访问华为云子网不做;安全策略配置:1、云下子网访问华为云子网单方向安全策略放行,2、华为云VPN网关EIP与客户侧公网IP互访安全策略放行AH、ESP和DUP的500/4500。*******************************************************************************策略模式对接华为云配置*******************************************************************************acl advanced 3999 //配置策略模式的感兴趣流rule 0 permit ip source <本端子网1 反掩码> destination <华为云子网 反掩码>rule 0 permit ip source <本端子网2 反掩码> destination <华为云子网 反掩码>ipsec policy HWCLOUD 100 isakmp //配置策略模式的policysecurity acl /3999/pfs <dh-group14>ike-peer /hwcloud_peer/proposal /ipsec-hwcloud/tunnel local <Huawei Cloud Customer Gateway>interface GigabitEthernet x/x/x //接口调用ipsec policyipsec policy /HWCLOUD/ip route-static <华为云子网 掩码> default_gateway_of_customer_gateway *******************************************************************************路由模式对接华为云配置*******************************************************************************ipsec profile HW-IPSec //配置路由模式的profileike-peer /hwcloud_peer/proposal /ipsec-hwcloud/pfs <dh-group14>sa duration time-based <3600>firewall tcp-mss 1300interface Tunnel100 //配置路由模式隧道接口ip address <Huawei Cloud Customer Tunnel Address>tunnel-protocol ipsecsource < Customer Gateway IP>destination <Huawei Cloud VPN Gateway EIP>undo service-manage enableipsec profile /HW-IPSec/firewall zone untrust //将隧道接口加入ZONEadd interface /Tunnel100/静态路由模式手工指定远端子网路由到Tunnel的下一跳IPip route-static <华为云子网 掩码> /Tunnel100/ <Huawei Cloud Tunnel Address> 动态BGP模式通过路由宣告发布本端子网路由bgp 45104 //用户侧的BGP ASNrouter-id ROUTER-IDnetwork <本端子网1 掩码>network <本端子网2 掩码>
-
一种让云手机通过编码容器出流访问公网和配置vpn的方法【方案概述】这里的编码容器是指运行在云手机服务器上容器虚拟机,每台云手机服务器都会默认启动一个编码容器。该方案是将云手机的流量导入到编码容器,并在编码容器上设置vpn。【方案约束】该方案目前只适用于1620服务器。【实施步骤】 1、 调用云手机api接口,使云手机的流量通过编码容器出流。 参数是否必选参数类型描述project_id是String获取方式请参考云手机官网文档traffic_type是String导流开关,设置routing表示导流到编码容器;direct表示不导流导编码容器phone_ids是String云手机ID列表可通过查询云手机列表获取。 POST /v1/{project_id}/cloud-phone/phones-trafficrequest{"traffic_type": "routing","phone_ids": ["xxxx"]}response{ "request_id": "6837531fd3f54550927b930180a706bf" "jobs":[ { "phone_id": "1234567b8bab40ffb711234cb80d0234", "job_id": "1564567b8bab40f34711234cb80d0123" } ]} 2、 在编码容器上开通vpn功能(linux通用操作,此处仅作示例) 1) ssh登陆到编码容器。登陆密钥和adb连接云手机的密钥相同。登陆IP是云手机服务器的EIP或者VIP,登陆端口是9000. 2) 编码容器开启vpnvim /etc/apt/sources.list (添加华为Ubuntu源,见附录)sudo apt-get updatesudo apt-get install pptp-linux安装ip命令sudo apt-get install iproute2 3) 编码容器创建vpn:vpnip是vpn的ip地址。vpnusr和vpnpasswd是vpn账户密码。sudo pptpsetup --create ppp0 --server <vpnip> --username <vpnusr> --password <vpnpasswd>--encrypt --start4) 做snat配置:10.237.0.0/24是手机内网网段。根据需要修改iptables -t nat -A POSTROUTING -s 10.237.0.0/24 -j MASQUERADE5) 创建编码容器vpn路由表配置,其中62107 adsl_62107是路由表名称可不修改。echo "62107 adsl_62107" >> /etc/iproute2/rt_tablesip ro add default dev ppp0 table adsl_621076) 配置手机走特定vpn,其中10.237.0.60/32是需要导流到编码容器的手机ip。ip ru add from 10.237.0.60/32 lookup adsl_62107 华为Ubutu源:deb http://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiversedeb-src http://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiversedeb http://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiversedeb-src http://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiversedeb http://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiversedeb-src http://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiversedeb http://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiversedeb-src http://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse 【验证步骤】wget icanhazip.comcurl icanhazip.com
-
Holmes 6.3.1功能介绍Holmes项目提供电信云基础设施和业务的告警关联分析,包括主机、VIMS、VNF、NS等。它的目标是通过挖掘海量的电信领域各级事件,找到导致业务失败的真正原因..Holmes是处理由托管资源或其他检测特定条件的应用程序发布的事件的应用程序。基于网络定义的根因分析规则,该类应用程序将确定各种条件的根因并通知其他相关的应用程序。Holmes的设计符合VES标准。 Holmes可以从DMaaP中取出并使用事件数据,然后物相关结果以VES结构的形式返回给DMaaP。在DMaaP订阅相应主题的任何其他项目都可以获取并使用该结果。在ONAP中,Holmes被部署为DCAE提供分析功能,因此Holmes是通过DCAE进行置的。在运行态中, Holmes必须与以下组件交互:CLAMP: CLAMP是设计相关性规则的地方。理想情况下,所有的Holmes规则是在CLAMP cockpit中设计的,然后在DCAE中部署。MSB: Holmes强依赖于MSB,它的所有HTTP请求都通过MSB转移到其他组件,例如与DMaaP和A&Al的通信。甚至在Holmes内部,子模块通过MSB调用彼此的API。A&AI: Holmes使用A&AI提供的资源信息作为告警相关性的线索。只有拓扑相关资源的告警才被认为是与彼此有某种关系的。DMaaP: DMaaP是Holmes主要依赖的消息总线,没有DMaaP的话, Holimes无法获得或发布任何消息。在Casablanca版本中, Holmes 订阅unauthenticated.SECFAULT_OUTPUT,把获取的VES事件作为其输人。同时,它将分析结果发布到unuthenticated.DCAE_CL_OUTPUT中,供其他组件使用。DCAE-PG-Holmes需要一个数据库来存储其规则和告警。 DCAE中有PostgreSQL,因此Holmes可以使用DCAE提供的PG业务。DCAE-CBS-Holmes作为DCAE应用部署时,所有配置都来源于DCAE配置绑定业务,如MSB信息、 Holmes的外网IP地址、Holmes规则等。Holmes包括三种功能模块:规则管理、引擎管理和数据源适配器。(1)规则管理模块(Rule Management):规则管理模块主要作为规则设计器(DCAE-CBS)与引擎管理模块之间的代理,负责与外部系统的交互,实施规则的部署。所有规则都会进入Holmes,然后存储到数据库中。如果启用规则,则将其部署到Drools引擎中。当涉及横向扩容场景时,该模块负责重新分配现有规则。规则管理模块本身就是一个无状态容器。它可以通过DCAE横向扩容。(2)引擎管理模块( Engine Management) :引擎管理模块是Holmes的核心模块。引聚管理是有状态的。当涉及扩容时,引擎管理必须处理现有的规则和警报。Holmes使用PG来持久化运行数据,以便恢复Holmes引擎不同实例的状态。此外,数据源适配器应与引擎一起使用,以均衡和分发告警。(3)数据源适配器(Data Source Adapter):数据源适配器用于将不同的事件格式转换为Holmes可用的,反之亦然。6.3.3重点特性和规划特性1. DroolsDrools是一个业务规则管理系统(BRMS)的解决方案。提供了核心业务规则引擎(BRE)、Web编写和规则管理应用程序(Drools Workbench),以及决策模型和符号(DMN)模型的完全运行态支持。Drools是Holmes的推理引擎。所有启用的规则都被分发到Drools引擎中,然后由Drools接管所有的工作并输出相关结果。Drools只为所有规则提供运行环境,实际的相关工作是通过规则来完成的。规则是基于脚本的,不是硬编码到代码库中去,而是根据不同场景的具体要求而设计和编写的。规则可以由Holmes的规则设计器组成和部署。在建立现代编码原则之前,业务逻辑是直接在应用程序代码中实施的,从而与应用程序紧密耦合。规则引擎( Rule Engine)是一个具有一定知识的软件,通过使用规则引擎可以执行各种规则。规则引擎是将业务规则与应用程序代码分离的可插拔软件组件。业务规则跟代码解耦,因此可以在不修改代码、不升级版本的情况下创建、更新和删除规则,实现零编码。2. Holmes GUIHolmes新增的特性为Holmes GUI。为了简化,从Casablanca版本开始, Holmes有自己的规则管理GUI。用户可以通过GUI对所有Holmes规则进行CRUD操作。注:CRUD代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。未来, Holmes计划支持如下功能:支持扩展的CCVPN用例。与AAF集成。实现S3P需求。6.4Policy6.4.1功能介绍Policy是ONAP中负责维护、外发和操作各种策略规则的子系统,这些规则可以实现ONAP的控制、编排和管理的动作。Policy为创建和管理策略提供逻辑集中的环境,其中包括条件规则。具有创建和验证策略和规则、识别重叠、解决冲突和根据需要派生附加策略的功能。 Policy用于控制、影响和帮助确保操作符合目标。 Policy可以支持基础设施、产品与业务、操作自动化、安全。用户(包括网络和业务设计者工程师、运维工程师、安全专家)可以在ONAP Portal的Policy管理器上轻松创建、变更和管理Policy规则。Policy可以创建条件、需求、约束或决策。它可以生成各种策略,然后将结果保存在合适的资源库中,可供其他子系统和组件使用。另外,一些策略直接被分发给策略决策引擎,如Drools或XACML.因此需要采取的约束、决策和操作是被分发的。ONAP策略由几个子组件组成: PAP ( Policy Administration Point,策略管理点),用于为创建策略提供接口,还有3种基于特定规则技术的策略决策点(PDP),即基于XACML技术的PDP-X,以及基于Drools技术的PDP-D和PDP-APEX。 PDP-X是无状态的,可以作为PDP-X服务器的资源池部署,通过增加服务器数量来增加容量(横向扩容)和提高可用性。PDP-D是有状态的,以其原生的、有状态的方式使用Drools,只要PDP-D处于启用状态,事务就会持续。持久的Drools会话、状态管理、本地和地理容灾已经在ONAP策略的初始版本中被去激活,在将来的版本中可以激活。Policy将在未来版本增加XACML或Drools引擎的附加实例与分配的角色和目的,以提供灵活的、可扩展的策略功能。6.4.3重点特性和规划特性1.可编程策略在ONAP运行态中, ONAP策略框架为所有策略提供分发策略管理。不仅提供统一般策略访同和版本控制,还提供策略的生命周期控制,并检测在ONAP安装中运行的所有策略之间的冲突。策略模板( Policy Template)是由专业的策略开发人员咨询业务领城专家后设计开发的。城策略(Domain Policy)是特性策略模板的一般实现。例如,可以编写策略模板来管理VPN的服务等级协议。域策略是由业务领域专家设计的,该域专家使用策略模板为特定的域创建域策略。 例如,VPN策略模板可用于为银行网络、汽车经销商网络或大学校园创建VPN策略。在ONAP中,使用特定的ONAP策略模板来创建驱动ONAP平台和组件的特定策略。面向客户策略允许通过参数配置特定的策略实例。例如,特定汽车经销商的VPN策略实例中,SLA值被配置为适合该经销商的预期活动水平的值。2.多样的、可扩展的PDP生成、配置和部署PDP的ONAP策略框架是可扩展的。它允许扩展ONAP PDP,也为用户提供创建和部署自己的PDP的功能。3. PDP-D概述: PDP-D是执行操作策略的策略组件。它使用Drools作为基础的规则引擎来执行策略。应用程序容器: PDP-D轻量级应用程序容器为运行在其上的Drools应用程序提供通用的业务。4. PDP-X概述:策略决定点(PDP)是策略的主要决策引擎,基于PAP指定的策略集采取决定。PDP作为XACML的一部分,又称为PDP-X。PDP-X收到XACML请求后,返回XACML响应(包括允许Permit、拒绝Deny和不确定Indeterminate)应用程序容器: PDP应用程序容器作为当请求决定时给出适当响应的独立容器运行。如果PDP配置了PAP,它将能够修改PDP的策略集;如果没有配置PAP, PDP将利用其现有的策略进行决策。为了扩展和处理多个请求,可以启动多个PDP以服务请求。5.PDP-APEX通过PDP扩展ONAP策略框架供业务提供者使用策略时选择。1)设计态添加策略的功能,定义该功能为脚本语言(JavaScript, Python, Ruby, MVEL等)编写的任务链。以状态机的形式表述和执行任务链。任务链是一个完全由模型驱动的架构; APEX执行的策略模型可以在GUI上通过使用命令行、RESTful接口,或者基于域的特定客户端来指定2)运行态运行态支持热加载策略定义(包括数据类型定义)。跨多个PDP实例透明共享状态(内部称为上下文)。实现完整的事件输入和输出(REST, Kafka、JMS、 File、 Web Socket和Java API)Policy项目未来规划的能力主要包括以下方面:安全要求。重建策略架构。日志记录需求:跟踪日志规范记录日志,使用统一的日志记录库。3)未来贡献提示ONAP的Dublin版本主要的关注点是提升平台成熟度,聚焦S3P (扩展性、稳定性、安全性和性能),重建策略架构和日志记录等需求和测试现有特性,以支持Dublin版本。
-
作者 : 华为云CC服务团队1 网络拓扑结构拓扑结构如图 1.1 组网规划北京4 VPC:同VPC内两个子网网段192.168.0.0/24、192.168.30.0/24OpenVPN主机:属于北京四VPC,双网卡配置、其中一个网卡绑定EIPSSL Server:OpenVPN提供服务,下发DHCP 10.8.0.0/16,通过入云接入服务香港VPC:客户员工希望跨Region访问的VPC,VPC子网10.0.0.0/241.2 实现目标个人PC可通过OpenVPN客户端连接Server端通过建立的SSLVPN练练可访问Server所在VPC资源;可通过CC访问云上其它Region的VPC资源2 Server端部署2.1 基础环境建设按照图示拓扑,在北京四创建VPC,指定相应子网,创建ECS。推荐ECS规格4vCPUs | 8GB以上,选择两块网卡分别隶属于不同的子网,主网关绑定EIP。完成CC服务创建,按照子网规划添加网络实例和路由,完成基础配置后开始部署OpenVPN Server,部署前请在安全组规则中放通所需协议端口。2.2 安装Server端通过yum install安装最新版本的server和密钥软件,本实例按照软件版本分别为openvpn-2.4.9-1.el8.x86_64与easy-rsa-3.0.7-1.el8.noarch。yum 安装命令如下:yum -y install openvpnyum -y install easy-rsa2.3 配置证书密钥cp -r /usr/share/easy-rsa/3.0.7 /etc/openvpn/server/easy-rsacd /etc/openvpn/server/easy-rsa./easyrsa init-pki #初始化pki目录./easyrsa build-ca nopass #创建CA证书./easyrsa build-server-full server nopass #生成服务器端秘钥./easyrsa build-client-full client1 nopass #生成客户端密钥./easyrsa build-client-full client2 nopass #可选,创建第二个客户端证书./easyrsa gen-dh #生成Diffie-Hellman文件openvpn --genkey --secret ta.key #HMAC防火墙,防止DDOS攻击2.4 创建目录与配置文件创建日志存放目录mkdir -p /var/log/openvpn/创建用户管理目录mkdir -p /etc/openvpn/server/user配置权限chown openvpn:openvpn /var/log/openvpn在/etc/openvpn/server目录下使用vi service.conf创建配置文件,并添加配置信息如下################################################## This file is for the server side ## of a many-clients <-> one-server ## OpenVPN configuration. ## ## Comments are preceded with '#' or ';' ##################################################port 2238proto udpdev tunuser rootgroup rootca /etc/openvpn/server/easy-rsa/pki/ca.crtcert /etc/openvpn/server/easy-rsa/pki/issued/server.crtkey /etc/openvpn/server/easy-rsa/pki/private/server.keydh /etc/openvpn/server/easy-rsa/pki/dh.pemtls-auth /etc/openvpn/server/easy-rsa/ta.key 0 auth-user-pass-verify /etc/openvpn/server/user/checkpsw.sh via-envscript-security 3verify-client-certusername-as-common-name client-to-clientduplicate-cnserver 10.8.0.0 255.255.0.0 push "route 192.168.30.0 255.255.255.0"push "redirect-gateway def1" “慎用”push "dhcp-option DNS 8.8.8.8"push "dhcp-option DNS 8.8.4.4" compress lzoauth SHA512cipher AES-256-CBC;ncp-ciphers "AES-256-GCM:AES-128-GCM" keepalive 10 120 max-clients 100persist-keypersist-tunverb 3log /var/log/openvpn/server.loglog-append /var/log/openvpn/server.logstatus /var/log/openvpn/status.log2.5 设置环境变量注意!这里创建完配置文件后,需要做个配置文件的软连接,因为当前版本的 openvpn systemd 启动文件中读取的是.service.conf配置。cd /etc/openvpn/server/ln -sf server.conf .service.confCentos默认没有使能MD5,Centos 7移除了Openssl的MD5支持,openssl仍然默认以md5作为散列算法并且可以正确识别md5散列算法export OPENSSL_ENABLE_MD5_VERIFY=1export NSS_HASH_ALG_SUPPORT=+MD52.6 创建用户密码文件格式是用户、密码以空格分割即可tee /etc/openvpn/server/user/psw-file << EOFmytest mytestpassEOFchmod 660 /etc/openvpn/server/user/psw-filechown root:root /etc/openvpn/server/user/psw-file 不校验密码检查脚本vi /etc/openvpn/server/user/checkpsw.sh#!/bin/bashexitchmod o+x /etc/openvpn/server/user/checkpsw.sh2.7 启动server及调试查看service名rpm -ql openvpn | grep service/usr/lib/systemd/system/openvpn-client@.service/usr/lib/systemd/system/openvpn-server@.service启动systemctl start openvpn-server@.service.service echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf #开启路由转发能力/sur/sbin/sysctl –p #验证开启功能检查服务状态systemctl status openvpn-server@.service.service查看服务日志vim /var/log/openvpn/server.log2.8 选择模式[主推]代理模式:在openvpn server虚拟机中,配置iptables规则,需要进行源地址转换策略添加。openvpn server虚拟机网卡不用关闭源目的地址检查透传模式:设置VPC路由,找到openvpn-server-vpc 路由表,添加vpc路由openvpn server:需要关闭openvpn server 网卡的源目的地址检测。2.9 Server端策略路由配置策略路由表/etc/iproute2/rt_tables配置策略路由/etc/rc.local查看策略路由source /etc/rc.local 查看结果2.10 CC配置更新:北京4 云连接实例,增加10.8.0.0/16 为openvpn tunnel网络路由3 Client端部署3.1 Linux client配置执行yum -y install openvpn,软件包版本openvpn-2.4.9-1.el8.x86_64,依赖包:pkcs11-helper-1.22-7.el8.x86_64。将server端 /etc/openvpn/server目录及子目录下的ca.crt、client1.crt、client1.key、ta.key文件下载到client虚拟机 /etc/openvpn/目录,122.112.*.*为client 虚拟机公网地址/etc/openvpn/client.ovpn 可以自己写一个,也可以参考下面内容 client #客户端标识dev tun proto udp auth-user-passremote 121.36.*.* 2**8 server端EIP地址及端口resolv-retry infinitenobindpersist-keypersist-tunca ca.crtcert client1.crtkey client1.keyremote-cert-tls server;ns-cert-type servercomp-lzoauth SHA512cipher AES-256-CBCtls-auth ta.key 1verb 3执行启动openvpn client端的命令,如下:openvpn --daemon --config /etc/openvpn/client.ovpn --log-append /var/log/openvpn.log 在上述文件夹中写一个passwd.txt,第一行输入用户名,第二行输入密码。修改client.ovpn中auth-user-pass –> auth-user-pass passwd.txt 回显日志信息 /var/log/openvpn.log 查看路由信息:Linux client 虚拟机DNS 解析地址需要修改3.2 Windows client配置上传软件包:openvpn-install-2.4.9-I601-Win10将软件包安装后,找到其文件位置:将模板文件C:\Program Files\OpenVPN\sample-config\sample.ovpn 复制到C:\Program Files\OpenVPN\config,重命名为client.ovpn 进行修改文件内容, 配置文件内容:和linux client客户端配置文件内容一致完成虚拟网卡命名:控制面板 -> 所有控制面板项-> 网络连接,将新添加的虚拟网卡,命名为tap2配置DNS地址解析及结果验证:在主网卡上进行,以及需要重启虚拟机,打开客户端软件,进行连接,成功标志查看路由信息:会把默认流量通过出接口重定向公网出口,默认路由分为0.0.0.0/1和128.0.0.0/1两个段,本端隧道地址:10.8.0.14,对端隧道地址:10.8.0.13<测试没什么作用,不影响。4 附件-配置参数说明4.1 Server配置参数解释/etc/openvpn/server/server.conf文件client-to-client如果允许openvpn客户端之间通信需要配置这个选项,如果不允许openvpn客户端之间互相通信可以注释掉这个配置选项。duplicate-cn允许一个openvpn客户端账号同时多个系统/电脑登陆。类似于一个qq账号同时手机和电脑登陆。只不过这个功能更厉害,是多个电脑同时登陆。 如果想一个客户端只允许同时在线一个客户端,可以注释掉这个配置max-clients 100定义最大客户端并发连接数量keepalive 10 120openvpn server 10秒尝试连接一次客户端,检查客户端是否存活。如果OpenVPN server连续120秒没有收到客户端回复则认为客户端掉线。 ifconfig-pool-persist ipp.txtopenvpn客户端登陆的账号和分配的IP记录在这个文件中。这样客户端再次登陆时可以使用相同的IP地址。ipp.txt文件默认10分钟回写一次,如果想要两秒回写,那么在后面加个2:ifconfig-pool-persist ipp.txt 2ipp.txt记录格式:CN用户名,子网网络地址。这个子网网络地址一般都是30位地址。例如:10.8.0.4,这个网络地址的第一个IP是10.8.0.5,这是这个子网段的dhcp,然后下一个才是客户端的IP,也就是10.8.0.6 comp-lzo数据传输之前使用lzo压缩数据,这样节约链路带宽,但是会加大服务器的CPU开销。persist-key通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。persist-tun通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的。否则网络连接,会先linkdown然后再linkup。proto udpopenvpn客户端和服务器数据传输使用udp协议。使用什么协议根据具体应用结合分析。一般语音会使用udp,如果使用tcp会因为 丢包重传而出现杂音现象。在多机房数据备份时建议使用tcp协议,不建议使用udp,因为udp协议没有重传机制。port 2238openvpn客户端连接openvpn server时的openvpn server的服务端口。类似ssh的22端口。默认是:1194,建议修改成10000以上的自定义端口。dev tun定义openvpn运行时使用哪一种模式,openvpn有两种运行模式一种是tap模式,一种是tun模式。 tap模式也就是桥接模式,通过软件在系统中模拟出一个tap设备,该设备是一个二层设备,同时支持链路层协议。 tun模式也就是路由模式,通过软件在系统中模拟出一个tun路由,tun是ip层的点对点协议。 一般网络电话等语音通信因为运营商屏蔽而使用openvpn时会使用tap,如果日常使用基本区别不大。verb 3日志冗余级别。 ca /etc/openvpn/keys/ca.crtcert /etc/openvpn/keys/server.crtkey /etc/openvpn/keys/server.key # This file should be kept secretdh /etc/openvpn/keys/dh1024.pemca定义ca证书文件路径,cert定义服务器证书路径,key定义服务器端key文件,dh定义哈夫曼散列值文件。这些文件可以用相对路径或绝对路径定义。auth SHA512认证算法cipher AES-256-CBC加密算法server 10.8.0.0 255.255.255.0定义openvpn链接后客户端和服务器通信使用的局域网IP的地址池范围。可以自定义。push “redirect-gateway def1”使客户端改变默认路由指向push “route 192.168.10.0 255.255.255.0”向客户端推送的路由信息,假如客户端的IP地址为10.8.0.2,要访问192.168.10.0网段的话,使用这条命令就可以了。tls-auth /etc/openvpn/keys/ta.key 0开启TLS,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。user nobodygroup nogroup定义openvpn运行时使用的用户及用户组log-append openvpn.log记录日志,每次重新启动openvpn后追加原有的log信息。mute 20重复日志记录限额log /var/log/openvpn/server.loglog-append /var/log/openvpn/server.logstatus /var/log/openvpn/status.log4.2 Client 配置参数解释client定义这是一个client,配置从server端pull拉取过来,如IP地址,路由信息之类,Server使用push指令推送过来。dev tun定义openvpn运行的模式,这个地方需要严格和Server端保持一致。proto tcp定义openvpn使用的协议,这个地方需要严格和Server端保持一致。remote 121.36.88.201 2238设置Server的IP地址和端口,这个地方需要严格和Server端保持一致。 如果有多台机器做负载均衡,可以多次出现remote关键字。可以使用域名remote-random随机选择一个Server连接,否则按照顺序从上到下依次连接。该选项默认不启用。resolv-retry infinite始终重新解析Server的IP地址(如果remote后面跟的是域名),保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址。这样无需人为重新启动,即可重新接入VPN。nobind定义在本机不邦定任何端口监听incoming数据。persist-keypersist-tunca ca.crt定义CA证书的文件名,用于验证Server CA证书合法性,该文件一定要与服务器端ca.crt是同一个文件。cert client1.crt定义客户端的证书文件。key client1.key定义客户端的密钥文件。ns-cert-type serverServer使用build-key-server脚本生成的,在x509 v3扩展中加入了ns-cert-type选项。防止client使用他们的keys + DNS hack欺骗vpn client连接他们假冒的VPN Server,因为他们的CA里没有这个扩展。comp-lzo启用允许数据压缩,这个地方需要严格和Server端保持一致。auth SHA512认证算法cipher AES-256-CBC加密算法tls-auth ta.key 1开启TLS,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。verb 3设置日志记录冗长级别。
shangwubadian
发表于2020-09-15 09:36:18
2020-09-15 09:36:18
最后回复
shangwubadian
2020-09-15 09:36:18
7582 0
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
正在直播
热门标签