在日常网络运维中,ACL(访问控制列表)是保障网络安全的重要手段。但当设备增多、规则变复杂时,逐条配置不仅耗时,还容易出错。比如公司刚扩容了服务器,需要给十几个IP开放相同权限,一条条手动加,光核对就得半天。
为什么需要批量处理?
想象一下,你负责三台防火墙,每台都要放行来自不同部门的20个IP地址。如果一台一台、一条一条去配置,改一次策略可能就要一小时。更头疼的是后期维护,一旦某个部门IP变更,你还得挨个检查修改。
利用脚本简化操作
实际工作中,很多人会用Python结合SSH自动化完成批量下发。比如写一个简单的脚本,读取Excel中的IP列表和对应规则,自动生成命令并推送到多台设备。
import paramiko
ips = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
acl_commands = [
"access-list 101 permit ip 10.1.1.0 0.0.0.255 any",
"access-list 101 deny ip any any"
]
for ip in ips:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, username='admin', password='pass')
stdin, stdout, stderr = ssh.exec_command("\n".join(acl_commands))
print(f"已向 {ip} 下发ACL规则")
ssh.close()
使用网络管理工具集中控制
如果你单位已经有网管平台,比如华为eSight或H3C iMC,可以直接在界面上导入规则模板。新建一个ACL策略组,把要应用的设备勾选进去,一键同步。这类工具还能做差异对比,哪台设备漏配了马上就能发现。
注意版本兼容性
不同型号设备对ACL语法支持不一样。比如老款交换机不支持命名ACL,而新款默认推荐使用。批量操作前最好先在测试环境验证一遍命令格式,避免全网推送后引发断网。
备份与回滚不能少
每次批量修改前,记得自动保存当前配置。可以用脚本提前拉取running-config并打上时间戳。万一出问题,能快速恢复到之前状态。
from datetime import datetime
backup_cmd = f"copy running-config tftp://10.0.0.100/config_{ip}_{datetime.now().strftime('%Y%m%d')}"
这种做法就像升级系统前的“快照”,心里踏实多了。