网络运维配置管理:别再靠记事本改IP了

前两天同事老张差点把公司外网断了。他在路由器上改了个IP段,没备份旧配置,结果重启后策略全丢,业务直接瘫痪半小时。这种事儿在小团队里太常见了——一台设备一个密码本,改个配置靠微信对口令,出问题全靠记忆回滚。

配置不是改完就完的事

很多人觉得,只要设备能通,配置随手改没问题。但现实是,你今天加的那条ACL规则,可能三个月后才暴露出和新业务冲突。没有记录,没人知道它是谁、什么时候、为什么加的。

真正的配置管理,不只是存个文件。它得告诉你:谁在什么时间做了什么操作,变更前后差异在哪,是否经过审批。就像Git管理代码一样,配置也得有版本控制。

从Excel到自动化

刚开始可以用CSV记录设备IP、登录账号、上次变更时间。但随着设备增多,手工维护越来越难。这时候就得上工具。

比如用Ansible批量下发防火墙策略:

---
- name: Push firewall rules
  hosts: firewalls
  tasks:
    - name: Backup current config
      ios_config:
        backup: yes
        backup_options:
          filename: "{{ inventory_hostname }}_{{ ansible_date_time.iso8601 }}.cfg"
    - name: Apply new ACL
      ios_config:
        lines:
          - permit tcp any host 192.168.10.10 eq 443
        parents: access-list OUTBOUND

每次执行都会自动备份当前配置,再应用新规则。出问题一键回退,日志清清楚楚。

别忽视变更窗口

生产环境不是实验室。哪怕只是改一条静态路由,也建议放在变更窗口操作。晚上十点以后,业务低峰期,发通知,拉群待命。改完立刻验证连通性和业务状态,别等第二天用户投诉才发现数据库主从断了。

配置审计要常态化

每个月跑一次脚本,收集所有交换机、路由器的running-config,对比基线。有没有人私自开了telnet?默认路由是不是被篡改过?这些都能通过diff看出来。

像这样定期抓取并比对:

#!/bin/bash
for ip in $(cat device_list.txt); do
  ssh admin@$ip "show running-config" > /configs/$ip-$(date +%F).cfg
  diff /baseline/$ip.cfg /configs/$ip-$(date +%F).cfg
done

发现异常自动告警,比等故障发生再查快得多。

配置管理不是为了应付检查,而是让运维从“救火”变成“预防”。你花一个小时搭的自动化备份,可能某天就能让你避免一次P1级事故。