ROS 软路由上常见的一种现象:设备到二三十台之后,原本好好的某台机器突然连不上,重启一下又恢复,过几天再犯。查下去往往发现是地址撞了,两台设备拿到了同一个号,谁先上线谁占用,另一台就只能等着或者反复掉线。
地址冲突的三个来源
- 池子重叠
- 两个池子的范围有交叉,各自分配时撞在一起
- 手填地址落在池子里
- 设备侧手填了一个属于动态范围的号
- 旧绑定没清理
- 设备退役后绑定还在,新设备被分到同一个地址
三个来源里,第二个最常见,也最难查。手填的地址在设备上看不出问题,只有在软路由的分配记录里才能对上。查的时候可以先列出当前所有手填地址,再和池子范围比一遍,落在池子里的那些就是隐患。
第三个来源和习惯有关。设备退役、换机之后没人想着清理绑定,绑定表越积越长,池子里能分出去的余量却没减少,等到某一天新设备分到旧地址,冲突就出现了,而且往往在业务最忙的时候出现。
前两个来源靠规划,第三个来源靠清理。
怎么排一遍现有地址
- 导出当前的分配记录与绑定表
- 列出手填过地址的设备,逐个核对是否落在池子里
- 检查池子之间有没有交叉范围
- 把退役设备的绑定清掉,再看余量
四步做完,冲突的来源基本能排干净。ROS 软路由的记录会显示每个地址分给了谁,和代理IP线路的分组表对照起来不算麻烦,一轮下来通常也就花上一两个小时。
排完一轮之后,建议把池子范围写进说明里,标注哪段留给动态分配、哪段留给手填,后来接手的人照着说明走,不必再从头推一遍。
日常怎么避免再出现
手填地址的场合尽量少,能改成就近绑定就改;池子之间留一点空隙,不让两段贴在一起;设备退役当天就把绑定清理掉。在 ROS 软路由上这几件事都不算费事,难的是养成习惯,因为不做也不会立刻出问题,代价要拖很久才显现。
地址不打架,多 IP 环境才算真的稳。往后设备再加,只要池子还有余量、绑定表还是干净的,加机器就只是登记一下的事,代理IP也能一直按当初的分组跑下去,不用隔一阵就停下来重新梳理一遍。
