Shell脚本解析CDN域名IP并自动添加防火墙白名单

ChatGPT4o 使用 ChatGPT 4o 回答

问题:

shell脚本解析cdn域名对应IP自动添加防火墙白名单

回答:

要编写一个Shell脚本来解析CDN域名对应的IP地址并自动添加到防火墙的白名单中,你可以按照以下步骤进行。这个脚本将使用dig命令来解析域名,并使用iptables来添加防火墙规则。

以下是一个示例脚本:

#!/bin/bash

# 检查是否以root用户运行
if [ "$EUID" -ne 0 ]; then
  echo "请以root用户运行此脚本"
  exit 1
fi

# 检查是否安装了dig命令
if ! command -v dig &> /dev/null; then
  echo "dig命令未找到,请安装bind-utils或dnsutils"
  exit 1
fi

# 检查是否安装了iptables命令
if ! command -v iptables &> /dev/null; then
  echo "iptables命令未找到,请安装iptables"
  exit 1
fi

# CDN域名列表
cdn_domains=(
  "example1.cdn.com"
  "example2.cdn.com"
  # 添加更多的CDN域名
)

# 解析域名并添加IP到防火墙白名单
for domain in "${cdn_domains[@]}"; do
  echo "解析域名: $domain"
  ips=$(dig +short "$domain")

  if [ -z "$ips" ]; then
    echo "未能解析域名: $domain"
    continue
  fi

  for ip in $ips; do
    echo "添加IP到防火墙白名单: $ip"
    iptables -I INPUT -s "$ip" -j ACCEPT
  done
done

# 保存iptables规则
if command -v iptables-save &> /dev/null; then
  iptables-save > /etc/iptables/rules.v4
  echo "iptables规则已保存"
else
  echo "未找到iptables-save命令,无法保存规则"
fi

echo "脚本执行完毕"

说明:

  1. 检查root权限:脚本首先检查是否以root用户运行,因为修改防火墙规则需要root权限。
  2. 检查依赖:脚本检查是否安装了digiptables命令。
  3. CDN域名列表:你可以在cdn_domains数组中添加需要解析的CDN域名。
  4. 解析域名并添加IP:使用dig命令解析域名,获取对应的IP地址,并使用iptables命令将IP地址添加到防火墙的白名单中。
  5. 保存iptables规则:如果系统中有iptables-save命令,脚本会将当前的iptables规则保存到文件中,以便在系统重启后规则依然有效。

使用方法:

  1. 将脚本保存为一个文件,例如add_cdn_whitelist.sh
  2. 赋予脚本可执行权限:
    chmod +x add_cdn_whitelist.sh
    
  3. 以root用户运行脚本:
    sudo ./add_cdn_whitelist.sh
    

请根据你的实际需求修改脚本中的CDN域名列表和其他配置。