华为AR路由器命令行配置PPPoE拨号上网全解析

华为AR路由器命令行配置PPPoE拨号上网全解析 上周又接到一个老客户的电话新办公室的宽带上不了网华为AR路由器改成桥接后要自己拨号Web界面里状态一直卡在connecting。我远程登进去扫了几条display命令定位到是物理口网线没插到位但这个过程中我意识到命令行配置PPoE的完整资料网上一搜全是Web界面截图真正能照着敲的命令行流程反而少。于是就有了这篇东西把我这些年用华为路由器命令行配置PPPoE拨号上网的整套逻辑、命令、排查方法一次理清给机房运维、集成商实施和用eNSP练手的朋友做个参考。文章适用两类人一类是手里有真机准备把光猫改成桥接让华为AR系列路由器自己拨号的工程师另一类是用eNSP搭实验环境练习的网工学生。你不需要背命令跟着章节走一遍把账号、密码、物理接口编号换成你自己的就能跑通。1. 到底是哪类华为路由器决定了你要敲的命令集1.1 企业路由器的VRP平台与模拟器差异华为路由器产品线分得很开同一个华为路由器的称呼下配置逻辑可能完全不一样。家用B311、B315这类产品虽然也叫华为路由器但系统是定制化的不支持完整命令行真正能用命令行配PPPoE的是AR系列企业路由器比如AR150、AR1200、AR2200、AR6100等。AR系列跑的是VRPVersatile Routing Platform平台命令体系一致只是不同版本之间有些小差异。这几年交付的AR路由器软件版本以V300R019为主再新一些的会到V300R023。本文的命令我在V300R019上验证过后面出的版本基本通用个别命令差异我会在文中标注出来。有一点要提前说清楚VRP的命令视图是有层级的系统视图、接口视图、协议视图层层嵌套配置前先看清楚命令提示符比如显示[Huawei-GigabitEthernet0/0/0]的时候你就在接口视图里这时候敲的system-view类命令会失效或者报错。很多朋友问我能不能用eNSP练手。可以eNSP里的AR路由器模拟的就是VRPPPPoE客户端命令和真机是一套拿来做实验完全没问题。但eNSP有两个限制你要有心理准备一是老版本默认只有AR2220接口就GE0/0/0到GE0/0/2真机上你可能面对的是带不同板卡的设备接口编号习惯要先熟悉二是eNSP的PPPoE拨号依赖宿主机的网络模拟组件某些Windows版本下会话可能起不来那不是你配置的问题换个eNSP版本或者用真机验证就行。1.2 PPPoE拨号这条链路涉及到的概念敲命令之前我建议先把PPPoE这条链路涉及的几个角色搞清楚不然你看配置会一头雾水。PPPoE的工作方式可以类比成你进小区门卫室登记领出入证的过程。宽带接入服务器BAS在运营商那端是门卫你的路由器是住户以太网是小区通道。路由器先发一个发现报文PADI相当于问门卫这门能进吗门卫回一个PADO相当于能进来登记路由器再发PADR提交登记申请门卫回PADS相当于发给你出入证。这四步就是PPPoE的发现阶段之后才进入PPP会话阶段做认证PAP或CHAP认证通过后由IPCP协商分配IP地址到这一步才算真正可以上网。这四个英文缩写——PADI、PADO、PADR、PADS——你在调试设备和看日志的时候会经常碰到。知道每一段代表什么你就知道拨号卡在哪一步。比如一直停留在PADI发出但没有任何响应说明路由器发出的发现报文没人应答问题大概率在物理链路或者VLAN不通到了PADR之后没有PADS回来说明BAS端不愿意给这个路由器建立会话多半是账号密码错误或者单个账号并发拨号数到了上限。华为路由器在PPPoE场景里起关键作用的是两个角色Dialer接口和物理接口上的PPPoE客户端。Dialer接口是逻辑拨号口它不关心数据具体从哪个物理口出去只负责维护拨号会话的状态物理接口上开启pppoe-client并绑定Dialer bundle之后这个物理口才和Dialer接口建立绑定关系。有流量要出去时Dialer接口发起会话会话建立后物理接口承载这条PPPoE链路。理解这个关系后面看配置就不晕了。2. 从Console到SSH配置之前的登录准备2.1 Console线连接和登录参数新装一台华为AR路由器第一步不是配PPPoE而是先把设备登录上去。Console口连接是最基础的方式我做项目一般用USB转Console线连上电脑后打开终端软件SecureCRT、Xshell、MobaXterm都行。华为设备的Console参数默认是波特率9600数据位8停止位1无校验无流控这项配置是固定的填错了会看到满屏乱码。插线开机之后终端界面会刷VRP的启动日志。首次登录一台出厂设备有两种情况老版本直接进系统视图主机名显示Huawei新版本会提示设置初始化密码并要求配置Console登录密码。这一步不要跳过我见过太多现场维护的人默认设备没密码结果设备一重启才发现上一手实施的人已经在Console口设置了认证密码进不去只能通过长按reset或者找厂家帮忙恢复很耽误时间。连接到设备之后的第一个动作我习惯敲display version看一下设备型号和VRP版本。这个信息很重要它决定了你后面能不能用某些新命令。比如V300R019之后的版本对ppp ipcp dns request的支持更稳定老掉牙的V200R版本在Dialer接口下的命令细节就有差别。先确认版本再开始配置属于老网工的基本素养。2.2 Console密码与AAA用户的关系华为设备的登录认证有两种主流模型直接给用户接口设置密码或者走AAA的本地用户认证。Console口是带外管理口物理接触才有权限生产环境用password模式就足够了没必要上AAA增加复杂度。在用户接口视图下配置Console密码命令是这样user-interface console 0 authentication-mode password set authentication password cipher Huawei2023这里有个细节容易踩坑set authentication password后面跟cipher配置后显示的是密文但部分老版本设备只认simple不支持cipher会把明文直接写进配置存在安全隐患。所以配完之后一定执行display current-configuration configuration console看一下实际保存的是什么形式如果显示的是明文要么升级版本要么换一种加密方式管理账号。如果公司有安全基线规范要求Console口必须走AAA认证也可以这样配置user-interface console 0 authentication-mode aaa配合在AAA视图下创建本地用户把用户权限级别设为15。这种方式的好处是权限级别可控可以创建只读用户给第三方人员看配置但单台设备独立维护的小项目用password模式更简单没必要把简单的事搞复杂。2.3 顺手把Telnet/SSH远程登录备好PPPoE配置过程中设备可能要重启或者网络会闪断所以我习惯在配PPPoE之前先把SSH远程登录开好。这样万一拨号配置出了问题还能通过网络远程连回来排查不用反复跑机房。华为设备开SSH的完整流程包含几个环节少一步都不行system-view rsa local-key-pair create stelnet server enable local-user admin password cipher Admin2023 local-user admin privilege level 15 local-user admin service-type ssh user-interface vty 0 4 authentication-mode aaa protocol inbound sshrsa local-key-pair create这步会被不少人漏掉系统会交互式提示输入密钥长度选2048然后回车确认。生成密钥对的过程在真实设备上几秒钟就完成但某些模拟环境或低端设备上可能需要等待。密钥对不生成SSH服务是起不来的stelnet server enable这步虽然能敲进去但实际连接会失败。配置完SSH之后别急着继续先找局域网里另一台机器实测一下能连上再往下走。Telnet虽然也能远程管理但密码是明文传输的除非客户明确要求且内网完全隔离否则我基本不用。3. PPPoE拨号核心配置Dialer接口不是随便建一个就完事3.1 创建Dialer接口并指定PPP认证方式现在进入正题。假设运营商的宽带账号是user123adsl密码是Pass1234物理上网口是GigabitEthernet0/0/0。我们首先在系统视图下创建Dialer接口interface Dialer 1 link-protocol ppp ppp chap user user123adsl ppp chap password cipher Pass1234 ppp ipcp dns request dialer user user123adsl dialer bundle 1 dialer-group 1 ip address ppp-negotiate tcp adjust-mss 1400逐条解释一下方便你理解为什么要这么写。link-protocol ppp是设置链路层协议为PPP不写这一句Dialer接口默认的链路层协议可能不对PPP认证根本不会发起。ppp chap user和ppp chap password是CHAP认证的用户名和密码如果你的运营商用的是PAP认证要改写为ppp pap local-user user123adsl password cipher Pass1234。具体是CHAP还是PAP问运营商要参数或者看原来旧路由器上配置的是什么认证方式这是最常见的配置失败点之一。ppp ipcp dns request这行很多教程里没有但实际非常重要。它让路由器在IPCP协商阶段主动向BAS请求DNS服务器地址。不加这一句设备即使拨号成功了自己也不知道该用哪个DNS去解析域名现象就是内网电脑能上QQ但打不开网页。dialer user、dialer bundle、dialer-group这三个参数是拨号体系的接头暗号需要和后面的拨号规则、物理口绑定一一对应。ip address ppp-negotiate表示接口IP地址由PPP协商获得不能手动配静态地址否则拨号成功后地址会被BAS下发的地址覆盖产生路由混乱。tcp adjust-mss 1400是调整TCP报文MSS值的PPPoE有8字节额外开销MSS要相应调小否则会出现网页打不开、大包不通的诡异故障这个我在第4章专门展开。3.2 拨号规则和Dialer Bundle怎么对上号Dialer接口配置里的dialer-group 1对应的是全局视图下的拨号规则。拨号规则的作用是告诉设备什么样的流量值得触发拨号。内网有流量要出去时设备根据拨号规则判断是否发起PPPoE会话。进入拨号规则配置的命令是dialer-rule dialer-rule 1 ip permit这两行拆开看第一行进入dialer-rule视图第二行配置编号为1的规则对所有IP流量放行并允许触发拨号。permit后面不带时间参数表示这条规则永远有效会话建立后不会因为空闲流量少而自动断开。如果你希望按需拨号、空闲一段时间自动断开可以用deny配合dialer timer idle来实现但国内运营商的宽带基本是包月保持常在线更省心毕竟有些安防监控系统需要随时远程查看链路断了影响很大。Dialer Bundle的编号逻辑要讲明白。dialer bundle 1表示Dialer 1接口属于1号捆绑组这个编号只在本设备内有效不需要跟运营商对应。之后在物理接口上配置pppoe-client dial-bundle-number 1就是把物理口也归入1号捆绑组。两边编号一致绑定关系才成立。如果我看到Dialer里写dialer bundle 2、物理口却绑dialer-bundle-number 1的情况不用查了百分之百是配置错了拨号永远起不来。3.3 物理接口绑定PPPoE客户端物理接口上的配置非常少少到容易让人觉得是不是漏了什么interface GigabitEthernet0/0/0 undo shutdown pppoe-client dial-bundle-number 1一共就这三行。undo shutdown确保物理口是开启状态这个不用多说。pppoe-client dial-bundle-number 1让物理口作为PPPoE客户端加入1号Dialer Bundle和Dialer接口建立绑定关系。有朋友会把IP地址也配置在物理接口上这是常见的错误。PPPoE场景下物理接口不需要也不能配IP地址。原因很简单PPPoE封装是在以太网之上再套一层PPP物理口本质上是二层口IP地址是PPPoE会话建立之后由Dialer接口通过PPP协商获取的。你在物理口上配了静态IP不仅没用反而会影响PPPoE会话的建立。另外要提醒一个场景有些项目里宽带到手是带VLAN的比如运营商的ONU出来需要打VLAN 10才能到BAS。这种情况下如果你的路由器直连ONU就要考虑VLAN封装问题华为路由器的物理接口直接拨PPPoE时处理VLAN比较绕通常需要把物理口加入VLAN并配置VLANIF再拨号或者让交换机在中间完成VLAN标记。判断方法很简单路由器直连光猫拨不上号中间隔了一台交换机反而能拨上那基本就是VLAN透传的问题。3.4 默认路由、DNS和NAT一次配齐PPPoE会话建立起来Dialer接口拿到了运营商分配的公网IP接下来还缺三样东西默认路由、DNS解析、NAT转换。少任何一个内网设备都上不了网。默认路由的写法是ip route-static 0.0.0.0 0.0.0.0 Dialer 1注意这里是写到Dialer 1这个逻辑接口不是物理接口。为什么不能写到物理口因为物理口的地址不是固定的——PPPoE每次拨号可能拿到不同地址路由写死了物理口地址一变路由就失效了。写到Dialer接口路由会在拨号成功后自动关联实际会话这才是正确的做法。DNS解析分两个层面。路由器自己解析域名需要给系统配置DNS服务器dns resolve dns server 223.5.5.5dns resolve是开启域名解析功能不开启的话路由器本身不解析域名。223.5.5.5是公共DNS这里只做兜底。既然Dialer接口上配了ppp ipcp dns request拨号成功之后设备会通过IPCP拿到运营商的DNS这些动态DNS默认会参与系统解析用display dns dynamic能看到。LAN侧的内网设备如果DHCP由这台路由器分配就要在DHCP地址池里给客户端下发DNS地址比如ip pool lan1 gateway-list 192.168.1.1 network 192.168.1.0 mask 255.255.255.0 dns-list 223.5.5.5 119.29.29.29NAT配置是最后一个环节也是PPPoE拨号场景最容易被配错位置的。一定要把NAT做在Dialer接口上不是物理接口上。因为真正的出接口是Dialer物理口上没有合法地址。配置分两步acl number 3000 rule 5 permit ip source 192.168.1.0 0.0.0.255 quit interface Dialer 1 nat outbound 3000ACL 3000匹配内网网段指定允许转换的源地址范围。如果内网有多个网段在ACL里增加rule即可。nat outbound 3000挂在Dialer 1下表示匹配ACL 3000的流量从该接口出去时做地址转换。如果你的场景需要内网服务器对外提供服务还需要在Dialer接口下配置nat server做端口映射那是另一个话题本文不展开。3.5 完整配置模板可直接抄作业把上面的内容串起来就是一份可以照抄的完整配置。我按项目规范整理了一份模板实际使用的时候把账号、密码、接口编号、内网网段换成你自己的就行sysname R-Hangzhou-01 # acl number 3000 rule 5 permit ip source 192.168.1.0 0.0.0.255 # interface Dialer 1 link-protocol ppp ppp chap user user123adsl ppp chap password cipher Pass1234 ppp ipcp dns request dialer user user123adsl dialer bundle 1 dialer-group 1 ip address ppp-negotiate tcp adjust-mss 1400 nat outbound 3000 # interface GigabitEthernet0/0/0 undo shutdown pppoe-client dial-bundle-number 1 # ip route-static 0.0.0.0 0.0.0.0 Dialer 1 # dns resolve dns server 223.5.5.5 #配置完最后一定要保存。在用户视图下敲save提示确认时回车即可。没保存的话设备一重启全部白配这种教训我见得太多了。4. 拨不上号时我的逐层排查链路4.1 从物理层一路查到PPPoE会话层配置敲完拨号不一定一次就能成功。我在现场排错时习惯从下往上逐层查物理口状态、VLAN链路、PPPoE发现阶段、PPP认证、IPCP地址协商、路由、NAT一层一层确认。第一步看物理口状态display interface GigabitEthernet0/0/0重点关注Line protocol是不是up。如果物理口down检查网线、光模块、对端的ONU或交换机状态。这一步看着基础但现场大量拨号问题就是网线松动或者对端设备没通电还没进入PPPoE排错环节就已经定位了。第二步看PPPoE会话状态display pppoe-client session summary这个命令能看到会话的MAC地址、会话ID、状态、绑定的Dialer接口。状态是UP说明发现阶段完成了PPP会话建立成功。如果这里显示DOWN就要回头检查dialer bundle编号是否一致、物理口是否完成绑定。第三步看Dialer接口地址display ip interface briefDialer 1下面应该有一个正常IP地址而不是unassigned。如果Dialer接口没有地址说明IPCP协商没完成接下来要看认证阶段。这三步走完基本能把故障范围从全网缩小到某一层。4.2 典型症状、日志特征和处理办法拨号失败的具体原因通常会在设备日志里留下线索用display logbuffer查看最近的日志记录。我把实际遇到过的情况整理成了下面的表方便你对照排查症状日志特征大概率原因处理方向会话反复UP/DOWNPPPoE Session相关告警MTU不一致或运营商绑定MAC地址检查MTU联系运营商解绑MAC认证失败PPP Authentication fail账号密码错误或认证方式不对核对账号密码确认CHAP/PAP一直停留在PADI无响应只看到PADI发出物理链路通但二层VLAN不通或BAS不响应检查VLAN透传确认光猫桥接模式拨号成功但无法打开网页IPCP正常获取地址DNS未下发或TCP MSS问题检查dns resolve配置tcp adjust-mssMAC地址被运营商绑定的情况在更换设备的项目里特别常见。旧路由器用了很多年运营商侧记录了这个设备的MAC地址你换了一台新路由器PPPoE拨号怎么都起不来打运营商客服报MAC解绑之后立即恢复。遇到这种问题不用慌这是运营商侧的正常安全策略。认证失败时有一个很好用的验证方法用电脑直接连接光猫在Windows系统里手动创建一个PPPoE宽带连接填入同样的账号密码拨号。如果电脑能拨上说明账号密码没问题问题在路由器配置回去逐项检查认证方式如果电脑也拨不上那问题在运营商侧或光猫桥接配置上。这个方法能把问题域一分为二效率很高。4.3 MTU和TCP MSS这个坑我踩过PPPoE链路上的MTU问题是拨号后各种诡异故障的头号来源。PPPoE封装给以太网帧增加了8字节开销PPPoE头部6字节加PPP协议头2字节所以PPPoE链路的MTU应该是1500减去8也就是1492。如果Dialer接口MTU没有调整还是1500超过1492字节的IP报文就会被分片很多应用对分片报文处理不好表现出来就是网页打不开、图片加载不全。更隐蔽的是TCP MSS问题。TCP建立连接时双方协商MSS值MSS等于MTU减去IP头部20字节再减TCP头部20字节正常1500的MTU对应MSS为1460PPPoE链路MTU是1492MSS应该为1452。问题在于内网客户端的TCP栈并不知道出口是PPPoE链路仍然按1460发起连接大包到达路由器后必须切分切出来的分片可能在某些中间设备上被丢弃症状就是网页能打开但图加载不出来、下载大文件到一半卡住、某些OA系统登录不进去。tcp adjust-mss 1400这条命令就是解决这个问题的。它会把经过Dialer接口的TCP握手报文中的MSS字段强制改写为1400。为什么不写成1452而是1400留一点余量防止对端网络还有额外封装开销。如果你在现场遇到拨号成功但网页时好时坏这样的问题优先怀疑MSS。4.4 断线重拨与保持在线拨号成功只是开始能不能稳定在线才是检验配置的试金石。运营商的BAS设备会定期清理无流量的PPPoE会话如果路由器长时间没有数据流量可能被BAS主动踢掉。华为路由器提供了PPP层的Keepalive机制来应对这个问题。Dialer接口默认的PPP保活报文间隔一般是10秒这个值在大部分场景下够用但如果中间链路过拥塞可能因为保活报文丢失导致设备误判对端下线。这时候可以手动调整interface Dialer 1 timer hold 30把保活间隔调大到30秒能降低误判概率。不过这个参数也不是越大越好太大会让BAS认为本端已经失联。30秒到60秒之间是安全范围我一般用30秒。关于重拨只要拨号规则配的是dialer-rule 1 ip permit会话异常断开后有流量经过就会自动触发重新拨号不需要额外写脚本。但要注意一点如果运营商限制单个账号的并发拨号数为1设备反复快速重拨可能导致BAS临时封锁账号。所以遇到断线先看日志确认断线原因再决定要不要手动介入别在界面上疯狂点断开重拨。5. 稳定运行背后的几个命令行习惯5.1 保存配置和回滚的保命操作配置完成、验证通过后第一件事就是保存配置。华为设备的保存命令很简单在用户视图下敲save系统提示确认文件名默认是vrpcfg.zip回车确认即可。我给关键设备做变更有两个习惯改动前先执行display current-configuration把当前配置完整备份下来改动并验证通过后再单独导出一份变更后的配置。现场如果配置改坏了要回退直接把备份的配置内容重新粘贴回设备执行绝大多数情况下都能恢复到变更前的状态。配置回传的方式很多TFTP、FTP都行我一般用FTP或者直接在终端里粘贴哪种顺手用哪种。5.2 用display命令做最终验收配置完成后我习惯用一组display命令做最终验收这组命令就是我的交付检查清单display pppoe-client session summary display dialer interface display ip interface brief display nat outbound display ip routing-tabledisplay pppoe-client session summary确认会话UPdisplay dialer interface确认Dialer接口拿到了IP地址display nat outbound确认NAT策略已经生效display ip routing-table确认默认路由经由Dialer 1可达且状态正常。这五条命令全部正常我才会跟客户说可以了。如果担心NAT没生效可以再看一下display nat session all确认内网设备访问外网时是否生成了NAT会话。有会话说明数据走到了NAT环节没问题没有会话要么ACL没匹配上要么路由不对方向就很明确了。5.3 配置模板化复用做集成项目的朋友都知道配置模板库是提高效率的利器。华为AR路由器的PPPoE拨号配置在型号之间差异其实很小基本就是物理接口编号、宽带账号密码、内网网段这三个变量。我自己维护了一份snippet模板新站点开工直接把三个变量替换掉整体配置十分钟完成。最后分享一个实用的小习惯每台设备配置完我都会在保存之前执行display current-configuration interface Dialer 1确认Dialer接口下的每一条配置都在尤其是ppp chap password这条密文配置有没有被系统正确记录。这个检查过程多花两分钟但能避免九成以上的低级错误。配置这东西不追求快追求稳。