前两天同事老张差点把公司外网断了。他在路由器上改了个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级事故。