1. 从一台二手设备说起:为什么还要折腾BDCOM路由
手里这台BDCOM路由器是朋友公司淘汰下来的,型号不算新,但做工扎实,接口齐全,扔了可惜。拿回来之后我琢磨着能不能把它用起来,做个小型的边界网关或者实验环境里的核心路由。BDCOM这个品牌在企业网和运营商边缘接入场景里其实挺常见的,尤其是早期的一些项目里,很多中小企业和园区网都部署过它家的设备。但说实话,网上关于BDCOM路由配置的中文资料并不算多,大部分都是零散的论坛帖或者简短的命令手册,缺少一套从零开始的完整思路。
这篇文章就是把我自己折腾这台设备的过程完整记录下来。从最基础的管理口连接、命令行界面熟悉,到接口配置、静态路由、动态路由协议,再到NAT和访问控制列表的落地,每一步我都会把命令、参数含义、以及我踩过的坑写清楚。如果你手里正好有一台BDCOM设备,或者你所在的环境里还在跑这类路由器,那这篇内容应该能帮你省下不少查资料的时间。即使你用的是其他品牌的路由器,底层的路由逻辑和配置思路也是相通的,完全可以参考。
我默认你已经有基本的网络基础,知道IP地址、子网掩码、网关这些概念,但不需要你精通路由协议。我会尽量用生活化的类比来解释那些容易混淆的地方,比如为什么静态路由和动态路由要配合使用,为什么NAT的转换顺序会影响访问控制列表的匹配结果。整个配置过程我会在一台实验设备上实际跑一遍,所有命令都是经过验证的,你可以直接抄作业。
2. 开工前的准备:连接方式与初始环境搭建
2.1 物理连接与控制台接入
BDCOM路由器通常提供多种管理方式,最常见的是通过Console口进行本地管理,另外还有Telnet和SSH的远程管理方式。我建议第一次配置时一定要用Console线连接,因为设备出厂时可能没有配置任何IP地址,远程管理根本连不上。Console线一般是一根USB转RJ45的线缆,或者一端是DB9串口另一端是RJ45。现在很多电脑没有串口了,所以USB转串口的转接线是必备的。
连接好线缆之后,在电脑上打开终端软件。Windows平台可以用PuTTY或者SecureCRT,Linux和macOS直接用screen或者minicom。串口参数一般是波特率9600,数据位8,停止位1,无校验,无流控。这个参数在BDCOM的设备上基本是默认的,如果连上去之后出现乱码,先检查波特率是不是设成了115200或者其他值。我遇到过一台设备被上一任管理员改过波特率,折腾了十几分钟才反应过来。
注意:Console线连接时,路由器的电源要先关闭,接好线再上电,这样能看到完整的启动自检信息。如果设备已经在运行,直接按回车键通常也能唤醒命令行界面。
上电之后,终端窗口会滚动显示启动信息,包括BootROM版本、内存大小、接口数量等。等到出现类似“Press RETURN to get started”或者直接出现提示符的时候,按一下回车,就能进入用户模式。BDCOM的命令行界面和主流网络设备类似,分为用户模式、特权模式和全局配置模式。用户模式下提示符是“>”,特权模式是“#”,全局配置模式是“(config)#”。这个层级设计和Cisco的设备很像,如果你之前接触过Cisco或者华为的设备,上手会非常快。
2.2 命令行基础操作与模式切换
进入用户模式后,输入enable命令进入特权模式。如果设备设置了特权密码,会提示输入。出厂设备一般没有密码,直接回车即可。进入特权模式后,输入configure terminal进入全局配置模式,这时候就可以开始修改配置了。BDCOM的命令支持Tab键补全和问号帮助,这两个功能在记不住命令的时候非常有用。比如你输入“sh”然后按Tab,系统会自动补全为“show”,再按问号会列出所有以show开头的命令。
这里我要强调一个习惯:每次修改配置之前,先用show running-config命令查看当前生效的配置,并且把输出保存到本地文件。因为一旦配置错误导致网络中断,你可能连不上设备,只能通过Console口恢复。我自己的做法是在电脑上建一个文本文件,把每次修改前的配置都粘贴进去,标注日期和修改内容。这个习惯在后来排查问题时帮了我大忙,因为可以清楚地知道哪次改动引入了故障。
另外,BDCOM设备支持配置回滚功能,但需要提前开启。在全局配置模式下输入archive命令可以进入归档配置模式,设置归档路径和触发条件。这个功能相当于给配置加了一个版本管理,出问题的时候可以快速回退到之前的版本。不过对于实验环境来说,手动备份就足够了。
2.3 设备基础信息查看与接口识别
在动手配置之前,先摸清设备的家底。用show version查看硬件型号、软件版本和运行时间。用show interface查看所有物理接口的状态,包括接口名称、IP地址、速率、双工模式等。BDCOM的接口命名规则一般是“GigabitEthernet0/1”或者“FastEthernet0/1”这种格式,斜杠前面的数字代表槽位,后面的代表端口号。有些模块化设备还有子接口的概念,比如“GigabitEthernet0/1.100”表示VLAN 100的子接口。
用show ip interface brief可以快速查看所有接口的IP地址和状态,这个命令在排查接口是否up的时候特别方便。如果某个接口显示“administratively down”,说明被手动关闭了,需要进入接口配置模式用no shutdown命令开启。如果显示“down”,说明物理链路有问题,检查网线或者光模块。我遇到过一种情况,接口状态是up但协议是down,最后发现是双工模式不匹配,一端是全双工一端是半双工,改成自动协商或者强制全双工就解决了。
提示:在实验环境里,我建议先把所有不用的接口都shutdown掉,只保留需要使用的接口。这样可以减少广播风暴的风险,也能让show命令的输出更干净。
3. 接口配置与基础路由打通
3.1 物理接口IP地址配置
接口配置是路由器的基本功。进入接口配置模式的命令是interface后面跟接口名称,比如interface GigabitEthernet0/1。进入之后,用ip address命令配置IP地址和子网掩码。BDCOM支持点分十进制掩码和前缀长度两种写法,比如ip address 192.168.1.1 255.255.255.0或者ip address 192.168.1.1/24都可以。我习惯用前缀长度,写起来更简洁。
配置完IP地址后,接口默认是关闭的,需要用no shutdown命令开启。开启之后,用show ip interface brief确认接口状态变成了up/up。如果只是up/down,说明物理层通了但数据链路层有问题,检查一下对端设备的配置。如果是down/down,那就是物理链路的问题,检查网线、光模块或者端口是否损坏。
这里有一个细节需要注意:BDCOM路由器的接口默认是二层交换口还是三层路由口,取决于设备型号和配置。有些低端型号的接口默认是交换口,需要先用switchport命令切换到路由模式,或者用no switchport命令。如果不确定,可以先用show interface命令查看接口的当前模式。我在这台设备上就遇到了这个问题,接口默认是交换模式,配了IP地址之后发现不生效,后来用no switchport切换成路由模式才正常。
3.2 环回接口与子接口的应用
环回接口是一个虚拟的逻辑接口,不依赖物理链路,只要设备正常运行它就一直是up状态。配置环回接口的命令是interface loopback后面跟编号,比如interface loopback 0。环回接口通常用来做管理地址、路由协议的Router ID,或者用于测试。我习惯给每台设备配一个环回接口,地址用10.x.x.x这样的私有地址段,方便远程管理和监控。
子接口是在一个物理接口上创建多个逻辑接口,常用于单臂路由或者VLAN间路由的场景。配置子接口的命令是interface GigabitEthernet0/1.100,后面的数字是子接口编号,通常和VLAN ID对应。子接口需要封装802.1Q协议,用encapsulation dot1q命令指定VLAN ID。比如encapsulation dot1q 100表示这个子接口处理VLAN 100的流量。子接口的IP地址就是对应VLAN的网关地址。
注意:子接口的物理父接口不需要配置IP地址,但需要确保父接口是up状态。如果父接口down了,所有子接口也会跟着down。另外,子接口的VLAN ID必须和对端交换机上配置的VLAN ID一致,否则流量无法正确封装和解封装。
3.3 静态路由配置与默认路由
静态路由是手动指定的路由条目,格式是ip route 目标网络 子网掩码 下一跳地址。比如ip route 192.168.2.0 255.255.255.0 10.0.0.2,表示去往192.168.2.0/24的流量下一跳是10.0.0.2。静态路由的优点是简单、可控、不占用设备资源,缺点是网络拓扑变化时需要手动修改。在小型网络或者边界路由器上,静态路由是非常常见的选择。
默认路由是一种特殊的静态路由,目标网络是0.0.0.0,子网掩码也是0.0.0.0,表示所有没有匹配到具体路由的流量都走这条路径。配置命令是ip route 0.0.0.0 0.0.0.0 下一跳地址。默认路由通常指向运营商的网关或者上级路由器。在BDCOM设备上,默认路由的管理距离默认是1,如果你同时配置了动态路由协议,需要注意管理距离的优先级。
我在这台设备上配置了两条静态路由,一条去往内部服务器网段,一条默认路由指向实验室的出口网关。配置完之后用show ip route查看路由表,确认路由条目已经生效。这里有一个容易忽略的地方:如果下一跳地址不可达,静态路由不会出现在路由表里。所以配置静态路由之前,先确认下一跳地址所在的网段是直连的,或者有其他的路由能到达下一跳。
3.4 路由表查看与连通性测试
配置完接口和路由之后,用show ip route查看路由表。路由表里的条目会标注路由来源,比如“S”表示静态路由,“C”表示直连路由,“R”表示RIP路由,“O”表示OSPF路由。直连路由是接口配置IP地址后自动生成的,不需要手动配置。如果路由表里缺少某条路由,检查一下接口是否up、下一跳是否可达、路由配置是否正确。
连通性测试用ping命令,可以指定源地址或者源接口。比如ping 192.168.2.1 source 192.168.1.1,表示从192.168.1.1这个地址发起ping测试。如果ping不通,先用traceroute命令查看数据包在哪一跳丢失了。traceroute会显示每一跳的IP地址和响应时间,能快速定位故障点。我遇到过一种情况,ping不通但traceroute能到最后一跳,最后发现是目标设备的防火墙拦截了ICMP报文,这种情况需要检查目标设备的访问控制策略。
提示:在BDCOM设备上,ping命令默认发送5个报文,可以用ping -c 10指定发送数量,用ping -s 1500指定报文大小。测试MTU的时候,可以用ping -s 1472 -f命令,其中-f表示不分片,如果能ping通说明MTU至少是1500。
4. 动态路由协议的选择与落地
4.1 OSPF协议的基础配置
静态路由适合小型网络,但当网络规模变大、拓扑经常变化时,动态路由协议就更合适了。OSPF是应用最广泛的内部网关协议之一,BDCOM设备对OSPF的支持很完善。配置OSPF的基本步骤是:先开启OSPF进程,指定Router ID,然后在接口上宣告网络。Router ID是一个32位的标识符,通常用环回接口的IP地址或者手动指定。命令是router ospf 1,然后router-id 1.1.1.1。
宣告网络的命令是network 192.168.1.0 0.0.0.255 area 0,其中0.0.0.255是反掩码,area 0是区域号。反掩码和子网掩码是相反的,比如子网掩码255.255.255.0对应的反掩码是0.0.0.255。这个设计一开始容易搞混,记住“0表示匹配,1表示忽略”就行了。所有需要运行OSPF的接口都要宣告,否则OSPF不会在那个接口上发送和接收Hello报文。
OSPF的邻居关系建立需要几个条件:接口的Hello和Dead时间间隔一致、区域号一致、认证方式一致、MTU一致。如果邻居关系卡在Init或者ExStart状态,通常是这些参数不匹配。用show ip ospf neighbor查看邻居状态,正常的稳定状态是Full。如果一直停留在2-Way,说明双方都是DRother,没有选举DR和BDR,这在点对点网络中通常没问题,但在广播网络中需要检查DR选举。
4.2 RIP协议的适用场景与配置
RIP是一个距离矢量协议,最大跳数限制是15跳,超过15跳认为不可达。RIP的配置比OSPF简单,适合小型网络。命令是router rip,然后version 2开启版本2,network 192.168.1.0宣告网络。RIP版本2支持VLSM和组播更新,比版本1更实用。不过RIP的收敛速度慢,而且有路由环路的风险,所以现在用得越来越少了。
我在这台设备上没有用RIP,因为实验环境里已经有OSPF了。但如果你面对的是一个非常简单的网络,比如只有两三个路由器串联,RIP的配置成本确实比OSPF低。需要注意的是,RIP默认每30秒发送一次全路由表更新,在网络不稳定的时候会产生大量广播流量。可以通过passive-interface命令把不需要发送更新的接口设为被动接口,只接收不发送。
4.3 路由重分发与协议优先级
在实际网络中,经常需要同时运行多种路由协议,比如内部用OSPF,边界用静态路由或者BGP。这时候就需要路由重分发,把一种协议的路由信息导入到另一种协议中。BDCOM设备支持在OSPF进程中用redistribute static命令把静态路由导入OSPF,或者用redistribute connected导入直连路由。重分发的时候可以指定metric值,因为不同协议的路由度量方式不同,OSPF用开销值,RIP用跳数。
管理距离是路由器选择路由来源的优先级指标,数值越小越优先。直连路由的管理距离是0,静态路由默认是1,OSPF是110,RIP是120。如果同一个目标网络同时有静态路由和OSPF路由,路由器会优先选择静态路由。这个机制在路由重分发的时候要特别注意,避免出现次优路径或者路由环路。我一般会在重分发的时候加route-map过滤,只导入需要的路由,避免把不该传播的路由也导入进去。
注意:路由重分发是一个容易出问题的环节,配置不当可能导致路由环路或者网络中断。建议在实验环境里先验证,确认路由表符合预期之后再应用到生产环境。另外,重分发的时候要特别注意双向重分发的情况,必须用route-map或者distribute-list做过滤,否则两种协议之间会互相学习,形成环路。
5. NAT与访问控制列表的实战配置
5.1 静态NAT与动态NAT的配置差异
NAT是网络地址转换的缩写,主要用来解决私有地址访问公网的问题。BDCOM路由器支持静态NAT和动态NAT两种方式。静态NAT是一对一的映射,把内部的一个私有地址固定映射到一个公网地址。配置命令是ip nat inside source static 192.168.1.10 200.1.1.10,表示把192.168.1.10映射到200.1.1.10。静态NAT通常用于内部服务器需要对外提供服务的情况。
动态NAT是多对多的映射,从一个地址池里动态分配公网地址。配置步骤是先用ip nat pool命令定义地址池,比如ip nat pool mypool 200.1.1.10 200.1.1.20 netmask 255.255.255.0,然后用access-list定义哪些内部地址需要转换,最后用ip nat inside source list命令绑定。动态NAT的缺点是地址池里的地址数量有限,如果并发连接数超过地址池大小,新的连接就无法建立。
还有一种更常用的方式是PAT,也叫端口地址转换或者NAT重载。PAT把多个内部地址映射到一个公网地址的不同端口上,这样只需要一个公网地址就能支持大量内部用户上网。配置命令是ip nat inside source list 1 interface GigabitEthernet0/0 overload,其中overload关键字表示启用PAT。这是家庭和小型企业网络里最常见的NAT方式。
5.2 访问控制列表的匹配逻辑与部署位置
访问控制列表是一组规则的集合,用来匹配流量并决定放行还是丢弃。BDCOM支持标准ACL和扩展ACL。标准ACL只匹配源IP地址,编号范围是1到99;扩展ACL可以匹配源IP、目的IP、协议类型、端口号等,编号范围是100到199。配置ACL的命令是access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 80,表示允许192.168.1.0/24网段的流量访问任意地址的80端口。
ACL的匹配逻辑是从上到下逐条匹配,一旦匹配到某条规则就执行相应动作,不再继续往下匹配。所以规则的顺序非常重要,具体的规则要放在前面,宽泛的规则放在后面。每条ACL末尾都有一条隐式的deny any,表示所有没有匹配到的流量都被丢弃。如果你希望默认放行,需要在末尾显式添加permit any规则。
ACL的部署位置也有讲究。标准ACL因为只匹配源地址,应该尽量靠近目的端部署,否则会误杀其他流量。扩展ACL因为匹配条件更精确,可以靠近源端部署,尽早过滤掉不需要的流量,节省带宽。我在这台设备上把扩展ACL应用在入口方向,只允许特定的流量进入,其他一律丢弃。应用ACL的命令是ip access-group 100 in或者ip access-group 100 out,分别表示入口方向和出口方向。
5.3 NAT与ACL的配合使用及顺序问题
NAT和ACL经常一起使用,但它们的处理顺序会影响最终结果。在BDCOM设备上,数据包的处理顺序是:先匹配入口方向的ACL,然后进行路由查找,然后进行NAT转换,最后匹配出口方向的ACL。这个顺序意味着,如果你在入口方向用ACL匹配了内部地址,然后在NAT里也引用了同一个ACL,那么ACL的匹配是在NAT转换之前发生的。所以ACL里写的地址应该是转换前的内部地址,而不是转换后的公网地址。
我在这台设备上配置PAT的时候,先定义了一个标准ACL匹配内部网段,然后在NAT语句里引用这个ACL。同时在外部接口的入口方向应用了一个扩展ACL,只允许已建立的连接回包。这里的关键是established关键字,它匹配那些已经建立了双向连接的流量,防止外部主动发起的连接进入内部网络。配置命令是access-list 100 permit tcp any any established。
提示:调试NAT的时候,用show ip nat translations查看当前的转换表,用show ip nat statistics查看转换统计信息。如果转换表里没有条目,检查ACL是否匹配、接口是否正确标记了inside和outside。我遇到过一种情况,接口忘记标记ip nat inside,导致NAT不生效,排查了半天才发现是这个小问题。
6. 常见故障排查与经验总结
6.1 接口不up的排查思路
接口不up是最常见的故障之一。排查的时候按照从物理层到应用层的顺序来。先检查物理连接:网线是否插好、光模块是否正常、对端设备是否开机。然后用show interface命令查看接口的详细状态,关注以下几个字段:line protocol is up/down表示数据链路层状态,bandwidth表示带宽,duplex表示双工模式,speed表示速率。如果line protocol是down,通常是物理层或者数据链路层的问题。
双工模式不匹配是一个隐蔽的故障原因。一端是全双工,另一端是半双工,接口可能显示up但实际通信质量很差,表现为丢包严重、延迟高。用show interface命令查看duplex字段,如果显示“Half-duplex”而另一端是“Full-duplex”,就需要手动统一。我一般建议在实验环境里手动指定双工模式和速率,避免自动协商带来的不确定性。命令是duplex full和speed 1000。
还有一种情况是接口被shutdown了。用show running-config查看接口配置,如果看到“shutdown”字样,进入接口配置模式用no shutdown开启即可。有些设备在启动时会默认关闭所有接口,需要手动开启。另外,如果接口配置了ACL或者策略路由,也可能导致流量被丢弃,但接口状态本身是up的。这种情况需要用show ip interface查看接口的ACL应用情况。
6.2 路由不生效的排查步骤
路由不生效的表现是ping不通目标网络,或者traceroute在某一跳中断。排查的时候先看路由表:show ip route查看是否有到达目标网络的路由条目。如果没有,检查路由配置是否正确、下一跳是否可达、接口是否up。如果有路由条目但ping不通,检查下一跳设备是否有回程路由。回程路由是经常被忽略的问题,数据包能过去但回不来,表现就是ping不通。
动态路由协议的问题通常出在邻居关系上。用show ip ospf neighbor查看邻居状态,如果是Full状态但路由没学到,检查网络宣告是否正确、区域号是否匹配。如果是Init或者ExStart状态,检查Hello和Dead时间、MTU、认证配置。我遇到过一种情况,两台设备的MTU不一致,OSPF邻居卡在ExStart状态,把MTU改成一致后邻居关系立刻恢复正常。
路由重分发的问题更隐蔽一些。如果从OSPF重分发到静态路由,但静态路由没有出现在OSPF的路由表里,检查redistribute命令是否配置正确、metric值是否设置。有些协议重分发的时候必须指定metric,否则不会生效。另外,重分发的时候要注意过滤,避免把不该传播的路由导入,导致路由环路或者次优路径。
6.3 配置丢失与恢复的应急处理
配置丢失通常发生在设备重启或者断电之后。如果设备没有保存配置,重启后会恢复到出厂设置或者上一次保存的配置。避免这个问题的方法很简单:每次修改配置后,在特权模式下用write memory或者copy running-config startup-config保存配置。BDCOM设备保存配置需要几秒钟,期间不要断电。
如果配置已经丢失,可以通过Console口重新配置。如果之前有备份配置文件,可以用TFTP或者USB恢复。BDCOM设备支持通过TFTP服务器上传和下载配置文件,命令是copy tftp startup-config。需要提前在电脑上搭建TFTP服务器,把备份的配置文件放在服务器目录里。恢复之后用reload命令重启设备,配置就会生效。
注意:恢复配置之前,先确认备份文件的版本和设备当前的软件版本兼容。不同版本的配置文件格式可能有差异,直接恢复可能导致设备无法正常启动。我建议在恢复之前先用show version确认软件版本,然后找对应版本的配置文件。
6.4 常用排查命令速查表
| 排查场景 | 命令 | 说明 |
|---|---|---|
| 查看接口状态 | show ip interface brief | 快速查看所有接口的IP和状态 |
| 查看接口详情 | show interface GigabitEthernet0/1 | 查看指定接口的详细统计信息 |
| 查看路由表 | show ip route | 查看当前生效的路由条目 |
| 查看OSPF邻居 | show ip ospf neighbor | 查看OSPF邻居关系和状态 |
| 查看NAT转换 | show ip nat translations | 查看当前的NAT转换表 |
| 查看ACL匹配 | show ip access-lists | 查看ACL规则和匹配计数 |
| 测试连通性 | ping 目标地址 source 源地址 | 指定源地址发起ping测试 |
| 路径追踪 | traceroute 目标地址 | 查看数据包经过的每一跳 |
| 保存配置 | write memory | 把当前配置保存到启动配置 |
| 查看配置 | show running-config | 查看当前生效的配置 |
这张表里的命令是我在日常排查中最常用的,基本上覆盖了80%的故障场景。建议把这张表打印出来贴在工位上,遇到问题的时候按顺序排查,能省下不少时间。
7. 一些零散但重要的实操心得
配置BDCOM路由器的过程中,我积累了一些不太容易在文档里找到的经验。比如,BDCOM的命令行支持命令缩写,只要缩写是唯一的就能执行。比如“sh ip int br”就是“show ip interface brief”的缩写,熟练之后能大幅提高配置速度。但要注意,缩写不能有歧义,否则设备会提示“Ambiguous command”。
另一个心得是关于配置注释的。BDCOM支持在配置里加注释,用感叹号“!”开头。我习惯在每个配置段前面加注释,说明这段配置的用途和修改日期。这样过几个月再回头看,能快速理解当时的配置意图。注释不会影响设备运行,但能让配置文件更可读。
还有一点是关于日志的。BDCOM设备支持把日志发送到Syslog服务器,配置命令是logging host 服务器地址。把日志集中收集起来,出问题的时候可以回溯。我在这台设备上配置了日志级别为informational,这样能记录接口up/down、路由变化等关键事件,又不会产生太多无用日志。日志级别从0到7,数字越大越详细,informational是6,debugging是7。生产环境一般用informational或者warning级别。
最后说一个关于密码恢复的。如果忘记了特权密码,可以通过Console口在启动过程中进入BootROM模式,然后修改配置寄存器跳过密码检查。具体步骤是:重启设备,在启动信息出现时按Ctrl+Break进入BootROM,然后修改配置寄存器的值,重启后进入特权模式,再修改密码并恢复配置寄存器。这个过程需要小心操作,因为不同型号的BootROM命令可能不一样。我建议在操作之前先查一下对应型号的文档,避免把设备搞成砖。
这台BDCOM路由器现在跑得很稳,承担了实验室的边界路由和NAT转换任务。整个配置过程虽然遇到了一些小波折,但整体来说BDCOM的命令行逻辑清晰,文档虽然不多但够用。如果你手里也有类似的设备,不妨拿出来折腾一下,比放在角落里吃灰强得多。