知用网
白蓝主题五 · 清爽阅读
首页  > 网络运维

网络运维最佳实践手册:一线工程师的实战经验分享

配置管理别靠记忆,文档才是你的外脑

刚入行那会儿,我习惯把交换机密码、VLAN 划分记在本子上,甚至背下来。直到有次半夜被叫来处理故障,发现某台核心设备配置变了却没人留记录,排查了两个小时才发现是同事临时调整没通知。从那以后,我坚持用 Markdown 写配置变更日志,每次操作都记录时间、人员和原因。

现在团队用 Git 管理所有网络设备的配置文件,每次提交都有注释。比如:

git commit -m "2024-04-05 更新防火墙策略,开放 8080 端口给测试服务器 (工单 #IT-1234)"

这比任何口头交接都靠谱。

监控不是装了就行,得让它真正“说话”

很多公司装了 Zabbix 或 Prometheus,但告警阈值设得跟出厂设置一样——CPU 超过 80% 就响。结果业务高峰期天天误报,最后大家干脆把通知静音了。

我们现在的做法是:根据历史数据动态调阈值。比如数据库服务器平时 CPU 在 30%,那我们就设成“连续 5 分钟超过 60%”才触发。同时搭配微信机器人推送,格式简洁明了:

[⚠] 核心交换机 SW-01 接口 Gi0/24 流量突增
当前速率:980 Mbps
持续时间:8 分钟
可能影响视频会议质量

这样的告警,值班的人才会认真看。

备份不能只做一次,自动化才是底线

见过太多人手动导出一次配置就以为万事大吉。硬盘坏了、机房漏水、人为误删……意外永远比想象来得快。我们每周一凌晨自动执行备份脚本,推送到三处不同位置:本地 NAS、异地服务器、加密云存储。

用 Python + Paramiko 实现的简易版本长这样:

import paramiko
import datetime

def backup_switch(ip, user, pwd):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username=user, password=pwd)
    stdin, stdout, stderr = client.exec_command('show running-config')
    config = stdout.read().decode('utf-8')
    filename = f'backup/{ip}_{datetime.date.today()}.cfg'
    with open(filename, 'w') as f:
        f.write(config)
    client.close()

跑完自动发邮件确认,失败立即告警。

变更窗口别图快,回滚方案要提前写好

上次升级路由器固件,想着晚上十点用户少,一口气点了“开始”。结果新版本和旧 license 不兼容,服务断了 40 分钟。后来学乖了,所有变更必须附带回滚步骤。

比如升级前先写下:

  • 当前版本:IOS 15.2(4)M7
  • 目标版本:IOS 16.9(3)
  • 回滚命令:archive download-sw /overwrite tftp://10.1.1.100/ios152.bin
  • 预计恢复时间:12 分钟

哪怕你觉得根本用不上,也得写。真出事的时候,慌乱中能救你命的就是这份预案。

权限分配要像管钥匙一样严格

曾经有个外包人员离职后还能登录防火墙,因为账号一直挂着“临时使用”的名头没清理。现在我们实行账号生命周期管理:入职申请 → 审批 → 创建 → 季度审计 → 离职自动禁用。

用 TACACS+ 做权限分级,普通运维只能看状态,改配置必须提工单走审批流。连我自己都不能越权操作,系统会拦住。

安全不是添麻烦,而是让大家都睡得着觉。