ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

eNSP 中 USG6000V 多虚拟系统与安全域隔离配置

eNSP 中 USG6000V 多虚拟系统与安全域隔离配置 机房只有一台防火墙的镜像实验要求却摆出三套互不干扰的安全域——一边是办公楼的外网出口一边是宿舍区的策略验证还有一组要给学弟留着做毕业设计。真机采购不现实把三个 USG 塞进同一块屏幕里也不现实于是就有了在 eNSP 里用一台 USG6000V 开出三个虚拟系统这条路。这事儿听起来只是敲几行命令实际上从镜像导入到接口归属、从资源配额到每个 vsys 单独保存每一步都有它自己的坑尤其是那个让无数人抓狂的一直冒井号和错误代码 40卡住的人比配通的人多得多。这篇东西不讲概念定义按我自己的实验顺序来先把 USG6000V 在 eNSP 里跑起来再把根系统打理干净然后把虚拟系统一个个切出来、接口分下去最后在 vsys 内部配出一套能 ping 通的策略顺带说说跨 vsys 为什么默认不通、怎么让它通。适合手上有 eNSP、想拿虚拟系统做校园网/多租户综合实验的人也适合被 USG6000V 启动问题折磨过、想找个完整链条对照的人。1. 一台设备当三台用先想清楚虚拟系统在 USG 上到底是什么在动手敲命令之前有个概念必须先摆正不然接口分下去之后会发现自己根本不知道在配哪台设备。华为 USG 上的虚拟系统vsys不是多实例那种轻量隔离它更接近把一台物理防火墙在逻辑上切成若干台独立的防火墙每个 vsys 有自己独立的接口集合、安全区域、安全策略、路由表、会话表、管理员和配置文件。默认那个叫 public 的根系统也叫根系统/公共系统是唯一能发资源的角色它负责把物理接口、VLAN、地址资源分配给下面的 vsys自己通常不参与业务转发。1.1 虚拟系统和 VLAN 不是一回事别把隔离层级搞混刚开始接触的时候我习惯性把它和 VLAN 类比结果在规划地址时想岔了。VLAN 是二层广播域的隔离隔离的是同一台交换机上的广播域vsys 是整台设备级别的隔离隔离的是策略、路由、会话、管理账号。举个直白的例子VLAN 100 和 VLAN 200 上的两台主机只要三层可达、策略放行它们之间的流量可以在同一台设备内部被转发而 vsys_a 里的主机想访问 vsys_b 里的主机如果中间没有额外的转发路径它们在设备内部是互相看不见的哪怕你把地址规划得再顺。这个差异直接决定了拓扑怎么搭。做多租户实验时常见做法是每个租户一个 vsys各租户的出口接口分别指向同一台模拟的运营商路由器而租户之间如果要互通就必须在外部加一台交换机或者通过根系统做中转。我在第一次做的时候就吃了这个亏把所有地址都塞进同一个网段结果两个 vsys 之间怎么都不通排查了半天才发现是隔离模型的问题不是配置写错了。1.2 在 eNSP 里跑虚拟系统先算两笔账虚拟系统在真机上是对硬件资源的再分配在 eNSP 里则是对你本机资源的再分配。USG6000V 本身就是个完整的虚拟化镜像它启动时需要有足够的内存和 CPU而每开一个虚拟系统内部的会话表、路由表、策略匹配都会另占一份内存。我在一台 16G 内存的笔记本上试过同时开三台 USG6000V结果第三台一直卡在启动界面把每台的内存配额从 2048MB 下调到 1024MB 才勉强跑起来但会话一多就开始丢包。这里有个经验值可以参考只开一个 vsys 做实验USG6000V 给 1024MB 够用要开 2 到 4 个 vsys建议给到 2048MB如果还要在同一个拓扑里挂 AR 路由器和一堆 PC那 16G 内存的机器就别贪心了宁可分批做实验。CPU 核心数给 2 核就够因为 eNSP 的瓶颈几乎永远在内存和磁盘 IO不在 CPU 计算上。另外提醒一句eNSP 里给设备分配资源的对话框只是申请真正决定成败的是宿主机的虚拟化平台是否正常。虚拟化没打开、平台版本和 eNSP 不匹配都会变成后面那个著名的错误代码。1.3 什么样的实验值得上虚拟系统不是所有实验都需要虚拟系统用了反而增加复杂度。我总结下来下面这几类场景用它最划算一是毕业设计里要求一台设备承担多个安全域比如校园网出口把办公、宿舍、服务器区分别做成独立防火墙二是验证策略隔离想证明 A 租户的策略不会影响 B 租户三是练管理面比如每个 vsys 用不同的管理员账号登录看看权限边界在哪四是资源配额实验用 resource-class 限制某个虚拟系统的会话数观察超限后的表现。反过来如果只是练一条 NAT 策略、练一条 ACL那就老老实实单系统配置别给自己找麻烦。虚拟系统的价值在于隔离和复用用不上这两点就没必要开。2. USG6000V 镜像导入 eNSP把启动失败挡在第一步十个关于 USG6000V 的问题里有八个出在镜像和启动环节。这一步没走稳后面所有 vsys 的命令都是空谈。我把它拆成三件事镜像文件是不是对的、放在哪里、启动前给多少资源。2.1 镜像文件选什么、放哪里eNSP 里的 USG6000V 需要一份独立的系统盘镜像扩展名通常是 .vdi文件名一般就是 USG6000V.vdi 这种。它和 eNSP 自带的 AR、交换机镜像不是一个来源eNSP 安装包里不包含它得单独准备。网上流传的导入包离线包其实都是同一个东西的不同打包方式认准两点就行扩展名是 .vdi且来源版本与你的 eNSP 版本大致匹配。放置路径这件事看似无关紧要实际上坑很深。eNSP 和它背后的虚拟化平台在很多情况下对中文路径、空格路径、超长路径的处理都不够健壮。我吃过一次亏镜像放在桌面上一个叫eNSP 实验 备份的目录里导入时直接报格式错误换到 D:\ensp_image\ 这种纯英文、无空格的短路径下就正常了。所以第一条建议就是所有镜像统一放一个英文短路径目录比如 D:\ensp_image\别图方便扔桌面。导入的动作本身很简单把 USG6000V 拖进拓扑区启动时会弹出选择系统镜像的对话框指到刚才那个 .vdi 文件上。有的版本是在工具菜单里提前注册。两种方式效果一样区别只是早晚——提前注册过之后新建拓扑就不用每次再选。2.2 一直冒井号、错误代码 40、格式错误的成因对照这三个现象几乎是 USG6000V 用户的三座大山它们背后的原因完全不同处理方式也完全不同混着治只会浪费时间。我整理了一张对照表方便按现象直接定位。现象本质原因典型触发条件处理方向一直冒 # 号长时间不停设备正在加载系统属于正常启动过程只是慢首次启动、镜像较大、宿主机 IO 忙耐心等 5 到 10 分钟别急着关超过 15 分钟再排查资源启动失败提示错误代码 40设备无法启动虚拟化实例虚拟化支持未开启、平台版本不匹配、镜像缺失或损坏检查虚拟化开关、换镜像、确认平台与 eNSP 版本一致导入时提示格式错误镜像文件本身不符合要求扩展名不对、文件损坏、解压不完整、路径含中文重新解压、放到英文短路径、确认是 .vdi一直冒井号这个现象最容易被误判。很多新手看到满屏的 # 就以为死机了直接关掉重开然后陷入重开—冒号—再关的死循环。其实井号就是加载进度的一种输出形式防火墙系统盘大、初始化项目多慢是正常的。我见过的极端情况是宿主机同时在跑虚拟机、开着多个浏览器标签启动花了十几分钟。判断它是不是真的卡死可以看井号是否还在继续输出只要还在动就有希望。错误代码 40 的定位顺序我建议是从下往上先确认宿主机的虚拟化功能是否启用这个和虚拟化平台本身的配置相关再看 eNSP 里给这台设备的内存是不是被压得太低然后检查镜像文件是否完整。绝大多数情况是镜像或者虚拟化环境的问题而不是 eNSP 本身的 bug。顺带一提这个错误在 AR 路由器上也会出现症状和原因是同一类处理方法可以互相参考。2.3 启动前把资源设好别等卡住了再回头改eNSP 里设备的内存配额是在启动之前设置的。我的习惯是新建 USG6000V 后先在设备属性里把内存调到 2048MB再启动。因为一旦启动过一次配额可能被固化在设备配置里中途改容易出各种奇怪的问题。还有个小细节如果打算用 Cloud 把 eNSP 里的设备和宿主机网络打通Cloud 的绑定网卡要在启动设备之前配好顺序反了经常出现端口连不上、Cloud 里看不到对应虚拟网卡的情况。这个问题和 USG6000V 本身无关但因为它总在同一个实验里出现所以顺手提一句。3. 根系统public落地登录、管理口与 WebUSG6000V 启动完成后第一件事不是急着建虚拟系统而是把根系统本身打理顺能登进去、管理口能用、Web 能开。这三件事做完了后面无论建多少个 vsys都有一个稳定的总控台。3.1 第一次登录和管理员密码默认情况下用 admin 账号登录命令行密码是设备出厂的那个eNSP 镜像里一般是 Admin123具体以你手上镜像的说明为准。第一次登录会强制要求改密码而且复杂度要求不低长度至少 8 位通常还要覆盖大写字母、小写字母、数字、特殊符号中的多类组合。这一步别偷懒设成 123456一来设备不接受二来后面 Web 登录也要用这个密码记不住更麻烦。这里有个容易被忽略的点设备的登录超时。默认的超时时间不长配虚拟系统的时候你又经常在根系统和各 vsys 之间来回切很容易在思考的时候被踢出去。我一般的做法是先把超时时间调长一点或者干脆在客户端侧把连接保持住。这不是必须的但能省掉不少重复登录的时间。3.2 管理口地址和 Web 登录要放行的服务eNSP 里的 USG6000V 通常有一个带外管理口默认地址是 192.168.0.1/24 这一类。命令行配完之后很多人想用 Web 界面点一点、看看图形化里虚拟系统的菜单长什么样结果发现浏览器打不开。原因基本都是接口上没放行对应的服务。需要在管理口上放行相应服务大致是这样一组命令system-view interface GigabitEthernet0/0/0 ip address 192.168.0.1 255.255.255.0 service-manage https permit service-manage ping permit quitWeb 登录的地址一般是 https 加管理口 IP端口 8443也就是在浏览器里输入 https://192.168.0.1:8443。如果还打不开可以顺手确认一下 Web 管理功能本身是否处于开启状态用display web-manager之类的命令看一眼状态。另外宿主机上要有一块网卡和 192.168.0.0/24 这个网段可达通常的做法是在 Cloud 里把管理口和宿主机的某块虚拟网卡桥接起来。3.3 用 Web 先确认虚拟系统能力是否存在登进 Web 之后别急着点各种菜单先确认一件事当前设备的授权和版本是否支持虚拟系统。有些精简过的镜像是不带虚拟系统功能的。命令行里可以更快地确认在系统视图下敲vsys ?如果能看到 vsys 相关的命令提示说明支持如果提示命令不存在那就不是配置问题而是镜像本身的能力边界。这一步很有价值因为它把配不对和不支持两种情况区分开了。我在论坛上见过不少人反复研究配置命令最后发现是自己的镜像根本不带这个功能白折腾两天。4. 创建虚拟系统名字、ID、接口归属确认支持之后才正式进入主题。这个阶段最关键的是想清楚谁分给谁什么根系统手里握着所有物理接口虚拟系统是嗷嗷待哺的一方接口分出去之后就归属到那个 vsys根系统也就管不着了。4.1 vsys enable 和 vsys name 的先后关系顺序上虚拟系统功能是一个总开关必须先打开才谈得上创建。整体流程大致如下system-view vsys enable vsys name vsys_office vsys name vsys_dorm vsys name vsys_lab每执行一次vsys name设备里就多出一个逻辑防火墙。名字建议带业务含义别用 a、b、c因为后面接口分配、策略配置、排错都会反复看这个名字语义化的命名能省下大量回忆时间。系统会给每个虚拟系统分配一个 ID也可以手动指定ID 在设备内部是唯一的配的时候留意不要冲突。这里有个新手常犯的错把vsys enable忘了直接敲vsys name命令可能提示不对或者建出来的东西行为异常。养成习惯动手前先敲一遍总开关反正这个命令重复执行也不会报错。4.2 接口分配独占接口和共享接口的区别接口分配这一步是虚拟系统里最容易出事的地方因为它牵涉到这个接口到底归谁的问题而且一旦分出去回收和改派都有代价。先说到独占接口也就是把一个物理接口完整地划给某一个 vsys。命令有两种写法一种是在根系统的接口视图里指定归属一种是在 vsys 视图里主动认领system-view interface GigabitEthernet1/0/0 assign vsys vsys_office quit vsys name vsys_dorm assign interface GigabitEthernet1/0/1 quit两种写法结果一样我通常用第一种因为可以一次性把所有接口按网段顺序分完不容易漏。再说共享接口。有些场景下一个物理接口要同时给多个 vsys 用这时候靠的是基于 VLAN 的子接口划分根系统把物理接口按 VLAN 切成若干个子接口每个子接口再挂到不同的虚拟系统上。这种方式在真机上很常见但在 eNSP 的 USG6000V 上支持程度要看具体版本能不能配以设备上的命令提示为准别把真机的方案直接照搬过来。必须记住的一条红线管理口一般不能分配给虚拟系统根系统要留着它管门。另外接口分出去之后根系统里就看不到它的业务配置了接口上的 IP、安全区域都要在对应 vsys 内部重新配。我见过有人在根系统把接口 IP 配好了再分配出去结果 vsys 里空空如也白配一场。4.3 用 resource-class 给每个虚拟系统上箍虚拟系统共享物理资源如果不管一个 vsys 里的异常流量就能把整台设备的会话表吃干净其他 vsys 跟着遭殃。所以配完接口我一般会给每个 vsys 挂一个资源类限制它的会话数、地址资源占用等。大致形态是这样system-view resource-class rc_office resource-item session-limit 2000 quit vsys name vsys_office resource-class rc_office quit不同型号、不同版本支持的资源项不一样敲resource-item ?看提示最靠谱。这里我要说句实话在 eNSP 的 USG6000V 上部分资源限制项可能被精简或者不生效配了之后建议用display vsys resource这样的命令去看实际生效的数值别默认它一定按你写的执行。做实验时如果只是为了演示配额概念能看到数值变化就够了如果是要压测就得注意模拟器和真机的差距。5. 在 vsys 里配出一套能通的最小实验接口分完接下来就是进到每个虚拟系统内部把它当成一台独立防火墙来配。这一步的心态要切换过来从现在开始你面对的不是一台设备的一个配置块而是一台完整的、有自己的接口和策略的防火墙。提示符也会跟着变通常会带上 vsys 的名字比如从USG变成USG-vsys_office一定要注意自己在哪一层这是后面排错的基础。5.1 拓扑与地址规划我习惯先画一张纸把地址规划摆出来再动手。一个典型的三 vsys 实验可以这样规划虚拟系统业务接口接口地址用途vsys_officeGE1/0/010.10.1.1/24内网办公终端网关vsys_officeGE1/0/1202.10.1.1/24外网出口vsys_dormGE1/0/210.20.1.1/24宿舍区终端网关vsys_dormGE1/0/3202.20.1.1/24外网出口根系统 publicGE0/0/0192.168.0.1/24管理接口编号只是个示例你手上的镜像给的是哪几个口用display interface brief一看便知不要照着别人的截图硬套。地址规划的原则是每个 vsys 内部自成一套完整的三层结构内网段和外网段都不重叠这样根系统不需要做任何转发每个 vsys 各走各的。进虚拟系统的命令是switch vsys vsys_office退出直接quit回到根系统。我建议每配完一个 vsys 就退出来用display vsys看一下状态确认它处于激活状态再进下一个。5.2 vsys 内部的安全区域、接口与策略进了 vsys 之后第一件事是把接口配上地址然后划分安全区域。安全区域是华为防火墙策略模型的基础接口必须归属到某个区域策略才有意义。system-view interface GigabitEthernet1/0/0 ip address 10.10.1.1 255.255.255.0 quit interface GigabitEthernet1/0/1 ip address 202.10.1.1 255.255.255.0 quit firewall zone trust add interface GigabitEthernet1/0/0 quit firewall zone untrust add interface GigabitEthernet1/0/1 quit然后是策略。华为防火墙在默认情况下区域之间的流量是被拦住的需要显式放行。很多人第一次配完接口从内网 ping 外网怎么都不通就是因为没写策略。最小可用的一组策略是允许 trust 到 untrust 的放行以及允许 ping 这类管理流量。security-policy rule name allow_trust_to_untrust source-zone trust destination-zone untrust action permit quit写策略的时候要注意两点一是规则的匹配顺序从上往下匹配前面放通了后面就不会再看二是别图省事直接写一条 any 到 any那样实验是通了但完全失去了隔离验证的意义。我的习惯是每个 vsys 的策略集都写得窄一点只放必要的网段和协议这样在做多租户对比的时候一眼就能看出哪个 vsys 的策略起了作用。5.3 跨 vsys 互访为什么默认不通怎么让它通这是虚拟系统实验里最容易被问到的问题。两个虚拟系统之间即使地址在同一网段也是不完全隔离的——设备内部没有自动的转发路径根系统也不会替你转发。想要它们互通常见有三条路。第一条是外部中转。把两个 vsys 的某个接口都接到同一台模拟交换机上通过外部二层设备把流量绕出去。这种做法最贴近真实场景因为在真机上不同虚拟系统之间的通信本来就要靠外部网络来承载这样也最能体现它们就是两台独立防火墙这个概念。第二条是通过根系统的共享接口。根系统作为公共资源的分配者可以持有一些共享的接口资源让不同 vsys 借用。这条路配置更复杂而且对版本支持有要求做实验时建议先小范围验证。第三条是干脆让根系统也参与转发把某些接口留在根系统里做一次中转。这种做法我不太推荐因为它把隔离这个前提破坏了做出来的实验结论会被质疑。如果只是想让两个 vsys 里的终端互相访问最省事也最规范的还是第一条给它们各自划一个互联段通过外部的交换机对接然后在各自的 vsys 里写放行策略。我实测下来这样搭出来的拓扑稳定而且后面加第三个、第四个 vsys 时扩展很方便。6. 保存、重启与排错让实验环境可重复实验做到能 ping 通只是完成了一半。真正让这套环境有价值的是可重复——今天配通了明天打开还得是通的。这一步的关键在保存和排错。6.1 保存这件事每个虚拟系统都要做一遍华为设备的配置不保存就会丢这个常识在虚拟系统场景下有个容易忽略的细节配置可能分散在不同层次里。稳妥的做法是在每个虚拟系统内部执行一次保存回到根系统再保存一次。虽然实际行为上根系统的一次保存通常会把整体配置文件落盘但我在多个版本的镜像上都遇到过重启后某个 vsys 的配置没回来的情况从那以后就养成了每个 vsys 都单独保存的习惯。保存完之后建议做一次验证把所有 vsys 的配置用display current-configuration在各自内部看一眼确认关键配置都在然后再重启设备等它完整加载一遍看是否所有 vsys 都恢复正常。这个过程大概要花十几分钟但对一个要反复使用的实验环境来说绝对值。6.2 从现象倒推根因的排查顺序配虚拟系统出问题时现象和原因的对应关系其实很有规律。我一般按下面这个顺序查现象优先排查点命令敲不出 vsys 相关提示镜像是否支持虚拟系统功能接口分配报错接口是否属于根系统、是否被占用、是否是管理口进入 vsys 后看不到接口接口是否真的分配成功、是否配了 IPvsys 内不通安全区域归属、安全策略、地址是否冲突两个 vsys 之间不通是否有外部转发路径这是正常的隔离行为重启后配置丢失是否在每个 vsys 内分别保存过这个表的核心逻辑是先确认能力再确认归属最后确认策略。很多人一上来就怀疑策略结果发现是接口根本没分成功。还有一个排查技巧用display vsys看整体状态用display interface brief看接口归属这两条命令的组合基本能定位八成的接口类问题。进 vsys 之前和之后各执行一次对比输出能很快看出差异在哪。6.3 几个我在 eNSP 里踩过的小坑第一个坑是提示符看错层。在根系统和三个 vsys 之间来回切的时候很容易忘记自己在哪一层然后把策略配到错误的系统里。我的办法是每次敲命令前扫一眼提示符里有没有 vsys 的名字没有就是根系统有就是那个虚拟系统。这个习惯救了我很多次。第二个坑是接口的双重配置。我曾经在根系统里给接口配了 IP又分配给了 vsys结果两边都想用这个接口行为很怪。记住一点接口归属和接口配置都在 vsys 内部完成根系统只负责分配这个动作本身。第三个坑是同时开太多设备。eNSP 里一台 USG6000V 加几个 vsys再挂上路由器、交换机、若干 PC宿主机很快就被榨干表现为设备频繁重启、ping 丢包严重、控制台没反应。这时候别怀疑配置先看任务管理器十有八九是内存不够。减少同时运行的设备数或者把每个设备的内存配额调低一点问题通常就消失了。第四个坑是实验做完不保存快照。eNSP 的拓扑文件保存的是连线关系不保存设备的运行配置所以配置还是得靠设备自己保存。我现在的习惯是每个阶段配完就保存一次虽然多敲几行命令但比重新配一遍划算得多。最后一个想说的是虚拟系统这套东西在真机上比在模拟器上要重一些资源分配、共享接口、管理员权限这些细节真机的选项更丰富。所以在 eNSP 上练熟的应该是思路和命令的顺序而不是具体的数值。把根系统怎么发资源、vsys 怎么接资源、策略怎么各管一段这三件事想明白换成真机也就是把接口编号和资源数值换一换的事。
返回列表