添加定时任务将解析 IP 自动添加到防火墙

Anson 杂记 157 次浏览 评论已关闭

脚本工作原理:通过指定 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