资讯动态

山石防火墙CLI命令行配置上网基础:接口、路由、NAT与策略

发布时间:2026/9/15 15:48:08 来源:尧图企业网站定制
前阵子值班时遇到一台山石网科Hillstone防火墙Web管理页面在办公室能打开远程一跳就白屏业务那边又急着放通一条新的上网策略。设备不能随便重启我打开终端用CLI命令行一条一条把配置敲了进去。也是从那次之后我把山石防火墙的基础配置从Web界面彻底迁到了命令行。这篇就写写如何在最新版StoneOS上用CLI命令行完成一台防火墙的上网基础配置——从接口、区域、路由、NAT到安全策略外加一路验证和排障的思路。适合谁呢刚接手山石设备的新手、平时习惯Web界面但想补上CLI这块短板的运维以及要批量交付设备的项目工程师。文章里所有命令都按我常用环境里的写法给出但设备型号和软件版本不同个别命令会有出入实操时多按Tab和问号看设备自己的提示这也是我吃了好几次亏之后养成的习惯建议你也这么干。1. 为什么我坚持用命令行配山石CLI的适用场景与工作习惯1.1 命令行不是Web的替代品而是更接近流程的配置方式很多刚接触山石防火墙的朋友习惯打开浏览器在Web界面上点点点觉得那才是现代的操作方式。这没错Web界面确实直观看实时流量、看接口状态、下发单条策略都很方便。但真到了批量交付、远程维护、配置审计、故障定位这些场景Web界面的劣势就出来了页面要加载、字段要一格格填、配置记录难沉淀、页面偶发兼容性问题还会让你连登录都成问题。CLI命令行的价值在于它天然是按接口→路由→策略→NAT的配置逻辑组织的。你敲下来的每一行都是一条稳定的配置语句可以直接存档、diff、复用。我做过一个十几台设备的上网配置项目在Web上一台一台点会疯掉用CLI整理成配置模板改改接口IP和网段就能批量套用效率完全不在一个数量级。下面是我自己常用的选择标准供参考对比项Web界面CLI命令行单台查看状态最直观推荐需要记命令但够用批量交付效率低易漏项模板化、脚本化可复用远程维护依赖HTTPS可达偶发兼容问题SSH稳定、轻量几乎不挑终端排障深度能看到固定维度的状态能看会话、命中计数甚至抓包变更记录手工截图难比对配置文本直接git/diff入门门槛低略高但掌握后收益大1.2 动手之前先把这条数据流在脑子里过一遍配置防火墙最忌讳的就是拿到设备就敲命令敲到哪算哪。我每次做基础配置之前会先在脑子里或者纸上把数据包走一遍。以最常见的上网场景为例内网PC192.168.1.10/24访问公网服务器数据包的路径大致是这样的内网PC把报文发给网关也就是防火墙内网口192.168.1.1/24防火墙收到报文后先识别这个接口属于哪个Zone区域再查路由表命中默认路由根据路由决定从哪个出接口走然后检查站安全策略是否允许这条流量如果策略允许再做源NATPAT把内网私有地址伪装成外网接口的公网IP最后从外网接口203.0.113.10/30发出去送到运营商网关203.0.113.9。这个链路里有四个必配项接口IP、区域归属、路由、安全策略再加一个源NAT。为什么要强调先在脑子里过一遍因为CLI配置的顺序未必和数据包流动顺序一致如果你不了解数据流往往配完了都不知道自己缺了哪一项。后面第5章我会专门讲排障链路你会发现所有上不了网的问题最终都能归到这四类原因里。2. 开工前的三件事接线、登入设备与查看家底2.1 控制台与SSH两种登录方式的取舍配置山石防火墙第一步当然是把管理通道打通。新设备或者Web界面不可用的时候用Console线是最稳妥的方式。找一根Console线连到设备的Console口终端软件用SecureCRT、Xshell、PuTTY都行。串口参数大部分山石设备是9600 8 N 1部分新设备可能是115200具体看设备面板标签或产品手册。连接成功后用管理员账号登录首次登录如果系统强制要求修改密码就先改掉再开始配置别嫌麻烦。如果设备已经在网最好配置一个独立的管理IP并开启SSH。我强烈建议用专门的管理口MGT口做带外管理把管理流量和业务流量隔离开。小型网络里也可以直接用业务接口兼做管理但要记得在安全策略里单独放行管理网段的访问。SSH开启的常见命令大概是set ssh server enable这样不同版本路径会有差异用Tab键补全确认。还有一点要提醒管用接口的访问控制一定要留好后路。有次我在一台设备上把SSH源限制写死了结果把自己的办公网段拦在外面最后只能跑机房接Console。从那以后凡是要限制管理源地址我都会先加自己的地址段并且备份一条Console应急通道。2.2 配置之前先用get命令摸清家底无论是新设备还是二手设备配置之前我都会先敲三个命令get interface、get zone、get route。这三个命令看似基础作用却不小。get interface能看到当前所有接口的链路状态、IP地址、所属Zoneget zone能看到设备上现有的安全区域get route能看到路由表里有没有历史默认路由。命令行输出的信息比Web页面更密集但信息密度高本身就是CLI的优势——你一眼就能看完整台设备的网络拓扑骨架。我见过不少因为没先看现状就动手结果把接口重新配置导致业务中断的案例。比如ethernet0/2已经被上一个人划到某个奇怪Zone里或者某个接口上已经配了别的IP。这些信息在Web界面上要多点好几层才能看全在CLI里一条命令就出来了。养成这个习惯之后你踩到隐形配置的概率会小很多。2.3 接口编号与物理口的对应最容易看走眼的地方山石防火墙的接口命名一般是ethernet0/0、ethernet0/1这种格式斜杠前是槽位号斜杠后是端口序号。看起来简单但不同型号的物理口排列并不一定和编号完全一致有的设备第0口和第1口之间还隔着一个管理口。我建议你上手第一件事就是对照设备面板确认物理口和接口编号的对应关系。方法是把Console线插上get interface看接口状态然后把网线插到某个物理口上观察对应编号的接口Link状态是否变成Up。多试几个口心里有底再开始配置。这一步在项目交付现场尤其重要因为机柜里的设备可能已经被前人插得乱七八糟。3. 接口地址与区域划分先把外网口和内网口认领出来3.1 固定IP接入的外网接口配置这次我们以最常见的固定IP接入为例。假设运营商给了一段公网地址203.0.113.10/30网关是203.0.113.9。注意/30子网里可用地址只有两个一个是运营商网关一个是你设备的外网口这两个地址必须在同一个子网里否则三层就通不了。进入配置模式把外网接口的IP配上去# 进入配置模式 config # 配置外网接口 interface ethernet0/0 ip address 203.0.113.10 255.255.255.252 exit有的版本支持ip address 203.0.113.10/30这种CIDR写法也支持传统的点分十进制掩码写法用Tab补全看当前版本的语法。配完接口IP后我习惯立刻用get interface ethernet0/0确认一下防止手滑敲错子网掩码。3.2 内网接口与地址规划的基本套路内网接口相对简单通常给一个私网网段的网关地址即可。假设内网规划是192.168.1.0/24那么防火墙内网口就配192.168.1.1/24interface ethernet0/1 ip address 192.168.1.1 255.255.255.0 exit这里有一个规划层面的经验不要把内网网段划分得太大也不要直接用默认的192.168.1.0/24不做任何规划。基础配置阶段可能无所谓但后面要接DMZ、要扩展网段、要做策略分组的时候没有规划的地址段会让你非常难受。我一般建议至少按区域分段比如办公网192.168.1.0/24、服务器网192.168.10.0/24后续扩展也好排错。3.3 Zone划分为什么非要给接口贴门牌号很多人第一次接触防火墙时搞不懂Zone到底是什么。简单说Zone就是一个逻辑分组相当于给接口贴上门牌号。接口绑定到某个Zone之后防火墙才能判断一条流量是区域内还是跨区域。山石防火墙的默认逻辑很清晰同Zone内部的数据包默认放行跨Zone的数据包必须经过安全策略检查没有匹配的策略就拒绝。这是什么意思呢就拿刚才的配置举例内网口ethernet0/1你需要绑到Trust区外网口ethernet0/0绑到Untrust区interface ethernet0/0 zone untrust exit interface ethernet0/1 zone trust exit接口绑定Zone的写法在不同版本里也有差异有的版本是set interface ethernet0/0 zone untrust有的版本是在接口配置态下直接输zone untrust。不管哪种写法绑定完之后都要用get interface验证看接口所属的Zone是否已经生效。我把Zone理解成小区里的门禁同一个楼栋Trust区内部随便串门但出了楼栋进到隔壁楼栋Untrust区必须刷卡策略才能通过。不刷卡就硬闯默认直接拒之门外。这就是为什么刚配完接口IP还是上不了网——流量要跨Zone策略还没放行。3.4 改完接口后要做的检查配置完接口和Zone先别急着往下走做一次完整检查get interface get zone重点看三件事接口物理状态是否Up、接口IP是否正确、接口Zone是否如预期。如果接口状态显示Down先查物理链路——网线、光模块、对端设备。如果IP不对回到接口配置态里改。如果Zone不对重新绑定。这步检查做扎实了后面排障会轻松很多。4. 默认路由与源NAT让内网流量真正出得去4.1 默认路由下一跳不是想写哪就写哪接口配好之后防火墙还不知道怎么把公网流量送出去这时候就需要默认路由。命令很简洁ip route 0.0.0.0/0 203.0.113.9如果版本支持传统写法也可以写成ip route 0.0.0.0 0.0.0.0 203.0.113.9。这里的下一跳地址是运营商网关也就是和你的外网接口IP在同一个子网里的那个地址绝不可以随手写一个不存在的IP。为什么因为防火墙要把数据包发给下一跳本质是在本地广播域内通过ARP找到下一跳的MAC地址然后做二层封装。你写了一个本地不存在的下一跳路由表里看着有路由但数据包一发出去就石沉大海。判断下一跳有没有写对有个土办法在防火墙上ping一下运营商网关ping 203.0.113.9在部分版本里为了确保源地址是外网口而不是管理口还需要加源地址参数类似ping 203.0.113.9 source 203.0.113.10。这个细节很重要不然可能网关明明通你ping却不通容易误导排障方向。4.2 源NAT配置让内网地址伪装成出口IP路由有了但内网192.168.1.0/24是私网地址运营商根本不会把这些地址的路由更不会把回包发给它们。所以必须做源NAT把内网报文的源地址转换成外网接口的公网IP。最基础的做法就是出接口PAT所有内网用户共享外网接口的IP地址用端口号区分不同会话。常见写法大致是nat source from any to any to-interface ethernet0/0 pat但我必须提醒一句山石StoneOS的NAT模块在历史版本里改过好几次配置路径老版本可能是nat source开头的写法新版本可能进了nat rule或者nat policy类似的路径。千万不要死记硬背命令到了设备上先用Tab和问号把路径找出来再对着填参数。PAT和普通NAT的区别也顺便说一下普通NAT是一对一转换一个私网IP对应一个公网IP适合服务器映射场景PAT是多对一转换多个内网用户共用一个公网IP用端口来区分不同连接。基础上网场景用PAT就够了公网IP资源紧张的时候更得用PAT。4.3 路由与NAT的验证命令配完默认路由和NAT先别急着眼着配置策略先确认这两层没问题get route这条命令查看路由表确认默认路由存在且下一跳正确。然后再看NAT会话get session | include 192.168.1.10这条命令的意思是在会话表里搜索内网某个IP的连接记录。如果看到这条会话的源地址是192.168.1.10经过NAT转换后变成了203.0.113.10这个外网口地址说明NAT已经生效。如果没有会话记录说明流量压根没走到这一层赶紧回去查路由和策略。这里还有一个细节防火墙的会话表是有老化时间的。你ping一下外网再立即查会话看到的记录会比我写的更直观。别在没有任何流量的时候查会话查不到是正常的。5. 安全策略与联调验证从配置完到真能上网5.1 安全策略的最小放行规则路由和NAT都配好之后只差最后一道关键环节安全策略。山石防火墙默认行为是拒绝一切没有匹配规则的流量所以即使前面全配对了不写策略内网主机依然上不了网。基础场景下放行Trust到Untrust的流量就够用了policy rule name to-internet source-zone trust destination-zone untrust source-address any destination-address any service any action permit exit这里的几个参数要理解源区域是Trust目的区域是Untrust表示从信任区域访问非信任区域的流量源地址和目的地址先放通any是最小的演示配置服务any表示放行所有协议。生产环境里千万别长期这么放上了业务之后一定要收敛到具体的目的IP和端口否则安全审计一查一个准。为什么放行方向是Trust到Untrust而不是反过来这就是Zone的意义。内网主机主动访问外网时源在Trust目的在Untrust回包是会话的应答流量防火墙会自动关联不需要单独放行。而你如果不小心写反了方向内网照样上不了网因为请求方向的流量被拦了。5.2 数据包在防火墙里到底经历了什么刚做防火墙配置的新手最容易分不清路由、策略和NAT的执行顺序总以为它们是并列关系。实际上数据包进防火墙后的处理顺序大致是这样的报文从接口进来防火墙先识别这个接口属于哪个Zone接着查路由决定这个报文该从哪个出接口走然后基于入接口Zone、出接口Zone、源地址、目的地址、端口去匹配安全策略策略匹配通过之后再做NAT转换最后从出接口发出去。记住这个顺序非常重要。举个例子你只配了路由没配策略内网PC ping公网IP报文进了防火墙路由也查到了结果在策略匹配那一步被拦下根本到不了NAT。这种现象就是防火墙自己能ping通公网内网却通不了。后面第5.4节我会用一个真实案例详细拆解。5.3 一条完整的排障链路配置全部完成之后不要急着跟业务说已经配好了先按下面这套链路一层层验证第1步内网PC ping防火墙内网口。ping 192.168.1.1。如果这一步不通先查终端IP、网线、交换机接口别动防火墙。第2步防火墙ping运营商网关。ping 203.0.113.9。这一步通说明外网物理链路和接口配置没问题不通查外网接口状态、网线、光模块。第3步防火墙ping一个公网IP比如223.5.5.5或者119.29.29.29。通说明默认路由没问题不通查默认路由的下一跳。第4步内网PC ping公网IP。如果第2步、第3步都通这一步不通问题基本在NAT或者安全策略。用get session查会话再看看策略命中计数。第5步内网PC ping域名。如果能ping通IP但ping不通域名那是DNS配置的问题查内网PC的DNS指向或者防火墙是否做DNS代理。这套链路的价值在于它把故障一步步逼到某个具体的层面上而不是让你像无头苍蝇一样乱试。实际操作中我也见过很多一层都通、但就是上不了网的诡异情况那通常是因为某个会话被缓存了或者中间设备做了奇怪的处理把会话表清一下谨慎使用再试通常能暴露真相。5.4 实战复盘只配了路由没配策略卡在哪一步给你讲个真实的排查过程。前阵子一台山石设备做替换我帮同事复核配置他说路由、NAT都配了内网就是不通。我在设备上一看现象确实很典型防火墙自己ping公网通内网PC ping网关通但ping公网IP完全没有响应。我没有急着怀疑NAT先看了路由表默认路由在下一跳正确。然后再看会话表用内网PC的IP去搜一条会话都没有。这说明什么说明内网PC发出的报文根本没到NAT那一步被前面的策略拦了。再看策略命中计数那条从Trust到Untrust的规则命中计数一直是0。真相大白路由配了NAT配了但安全策略没放行。补上策略之后内网PC再ping会话表里立刻出现了经过NAT转换的记录问题解决。这个案例看起来简单但它完整展示了一条基本的排查逻辑防火墙自己通不代表内网通内网通不代表NAT做完NAT做完不代表策略正确。每一步都要用现象去验证这就是CLI配置相对于Web界面的一大优势——你能用命令精确地看到每一步的状态。6. 保存配置、备份恢复与版本差异提醒6.1 保存配置这句不敲前面全部白干CLI配置和Web界面一样修改只是改到运行态不保存的话设备一重启就回到老样子。所以配置完成之后务必敲save config让设备把当前配置写入启动配置。我自己的习惯是每完成一个功能点就保存一次比如配完接口保存一次配完路由保存一次策略放行验证通过再保存一次。这样做的好处是万一后面哪一步改出问题可以从最近的保存点恢复不用从头再来。保存之后再用类似get config的命令把当前完整配置拉出来看一遍确认和需求单逐条对得上。CLI配置最大的优势这时候就体现出来了配置是文本可以直接保存到本地命名规则建议带设备名和日期例如SG-6000_branch01_20250115.cfg。有了这份文本就算哪天Web打不开、CLI也进不去至少你还有一份完整的配置依据可以照着恢复。6.2 版本差异与问号大法山石StoneOS迭代这么多年CLI的底层风格一直比较稳定get、config、save config这些基础命令几乎没变过。但NAT和策略模块的配置路径不同版本之间确实改过几次。有的老版本里直接在接口下配NAT新版本改成独立的NAT规则策略从老的策略集模型到新的分层模型也有迁移。我在不同型号、不同StoneOS版本的设备上都配过只能说不要背命令。遇到命令输进去没反应、提示路径不存在、或者参数漏填最好的方式是使用问号大法。在配置态下输入命令前缀按Tab键可以补全按问号会列出当前路径下所有可用的子命令和参数说明。这比翻手册快得多尤其适合跨版本操作。反正我无论多熟悉的设备敲命令时都会习惯性用问号确认一下路径这个习惯帮我避了很多坑。6.3 远程维护的自保习惯别把自己锁在门外最后聊一个运维习惯。通过SSH远程配置防火墙时最容易犯的错是在改管理地址、SSH端口、或者接口区域归属的时候把当前这条管理链路直接改断。一旦断掉远程就再也连不上了只能跑机房。我给自己定了一条规矩远程改动网络相关配置之前要么确保有一条Console会话挂在旁边要么先配置好一个新的管理通道并且验证通过再删掉旧通道。比如要改管理IP先把新IP配上、确认能登录然后再移除旧IP。这个顺序看似简单但在紧张状态下人特别容易图快一图快就把自己锁外面。基础上网配置通了之后再往后可以做的东西还有很多比如透明模式、旁挂部署、双机热备、OSPF联动、基于用户的策略放行等等。这篇文章先把CLI基础配置这条主干走通后续有机会再逐个展开。最后说个习惯每敲完一段配置我会倒序把get config的输出再读一遍和需求单逐条核对而不是敲完就关窗口。CLI配置山石本身不难难的是让每一步都有据可查。用命令行最大的好处不是显得专业而是配置可以被保存、被比较、被复用。如果你手里有测试设备建议照着这篇文章把完整流程走两遍第二遍试着不看任何命令记录完全靠Tab和问号把配置敲出来。走完这两遍山石的基础CLI配置基本就长在你手里了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价