添加定时任务将解析 IP 自动添加到防火墙
脚本工作原理:通过指定 DNS 查询指定域名解析 IP,将其添加到防火墙允许访问本机 443 端口的名单中。添加定时任务后,当域名解析到新 IP 后将其添加到防火墙名单,否则就不添加。
脚本内容如下:
#!/usr/bin/env bash # 将查找 IP 保存到文件(dig 命令需安装 bind-utils 软件包) dig @1.1.1.1 www.example.com +short | tail -n1 > /tmp/queryip.txt # 将防火墙已存在 IP 保存到文件(仅能匹配 IPv4 地址) firewall-cmd --info-zone=public | grep 'rule family=' | grep -o -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" > /tmp/addedip.txt # 查找 IP 是否存在并运行相应操作 query_ip=$(cat /tmp/queryip.txt) if grep -q -x "$query_ip" /tmp/addedip.txt then exit 1 else firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="'$query_ip'" port port="443" protocol="tcp" accept' firewall-cmd --reload fi
创建脚本文件并赋予运行权限。
vi /root/add-firewall-settings.sh chmod +x /root/add-firewall-settings.sh
添加定时任务(每天凌晨 2 点 30 运行)
30 2 * * * /root/add-firewall-settings.sh > /dev/null 2>&1