ipset域名如何正确设置?ipset域名设置方法有哪些

ipset域名是运维人员通过ipset工具批量管理域名对应IP地址的高效方法,在CDN加速、防盗链、DDoS防护等场景中广泛使用。 它让你从繁琐的iptables单条规则中解放出来,通过集合操作实现动态、批量管控,配合定时脚本能自动跟上域名解析的变化。

ipset域名配置步骤详解

安装ipset并确认内核支持

ipset是Linux内核模块xt_set的用户态工具,安装前检查内核是否支持,执行lsmod | grep xt_set,若未加载则modprobe ip_set,安装命令随发行版不同:

  • Debian/Ubuntu:sudo apt-get install ipset
  • CentOS/RHEL:sudo yum install ipset
  • 安装后验证:ipset -v,输出版本号即成功。

创建域名IP集合

ipset支持多种类型,管理域名IP最常用的是hash:ip,创建集合时指定名称和最大元素数:

ipset create domain_whitelist hash:ip maxelem 65536

若需存储CIDR网段,使用hash:net类型,集合创建后可用ipset list查看,初始为空。

编写域名解析更新脚本

手动添加IP不现实,推荐脚本化,以下脚本从域名列表文件逐行读取,解析A记录并更新集合:

#!/bin/bash
IPSET_NAME="domain_whitelist"
DOMAIN_FILE="/etc/ipset/domains.txt"
# 清空旧集合,避免累积过期IP
ipset flush $IPSET_NAME
while read domain; do
    # 只取IPv4地址,忽略CNAME
    ips=$(dig +short $domain A | grep -E '^[0-9]+.[0-9]+.[0-9]+.[0-9]+$')
    for ip in $ips; do
        ipset add $IPSET_NAME $ip
    done
done < $DOMAIN_FILE

赋予执行权限,加入crontab,每5分钟执行一次:/5 /usr/local/bin/update_ipset.sh,注意调整dig的超时设置,避免DNS故障时阻塞。

关联iptables规则实现控制

创建集合后,需与iptables联动,白名单集合只允许指定IP访问80端口:

ipset域名如何正确设置?ipset域名设置方法有哪些

iptables -A INPUT -p tcp --dport 80 -m set --match-set domain_whitelist src -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j DROP

黑名单同理,将ACCEPT改为DROP,规则顺序重要,白名单规则应放在DROP之前,若需同时匹配源和目标IP,使用--match-setsrcdst参数。

ipset域名与iptables性能对比

匹配效率的差异

传统iptables规则按顺序匹配,每条规则都需检查五元组,当IP列表达到几百条时,CPU开销明显,ipset基于哈希表,时间复杂度O(1),无论集合有100个还是10万个元素,匹配速度几乎不变,行业共识认为,超过1000个独立IP时,ipset的性能优势是一到两个数量级。

管理便捷性对比

维度 iptables逐条规则 ipset集合
添加/删除IP 需插入或删除整条规则,影响规则编号 直接ipset add/del,不影响其他规则
批量操作 写脚本循环执行iptables,易出错 支持文件导入、集合间swap、flush
持久化 通过iptables-save/restore 通过ipset save/restore,格式更简洁
原子性 多条规则需同时操作时无法保证 集合操作本身原子,脚本可封装事务

内存占用实测参考

在同等IP数量下,ipset哈希表占用内存略高于单条规则,但远低于iptables规则链的元数据开销,据统计,一个包含5000个IP的hash:ip集合,内存占用约3-5MB,而同等数量的iptables规则可能消耗10-15MB,随着规则增长,差距更大。

ipset域名批量封禁场景

攻击IP自动封禁

当网站遭遇DDoS,攻击IP往往来自多个域名,收集恶意域名列表(如从日志、第三方威胁情报),编写脚本定时解析并加入黑名单集合,关键步骤:

ipset域名如何正确设置?ipset域名设置方法有哪些

  • 创建黑名单集合:ipset create blacklist hash:ip maxelem 1000000
  • 编写脚本,解析域名后ipset add blacklist $ip
  • iptables规则:iptables -A INPUT -m set --match-set blacklist src -j DROP
  • 配合conntrack,已建立的连接不受影响,需配合-m state --state NEW
  • 脚本执行频率建议与恶意域名TTL匹配,通常每5-10分钟。

CDN节点白名单管理

使用CDN服务时,只允许CDN节点IP访问源站,传统做法是手动维护IP段列表,但CDN厂商会动态增减节点,ipset方案:

  • 收集CDN官方域名(如cdn.example.com),解析出所有A记录。
  • 每日或每6小时执行脚本,清空白名单集合后重新添加。
  • iptables规则:iptables -A INPUT -p tcp --dport 443 -m set --match-set cdn_whitelist src -j ACCEPT,其余DROP。
  • 注意:若CDN节点同时使用IPv6,需创建hash:ip6集合并添加对应规则。

多服务器同步方案

当有多台后端服务器,需保持ipset集合一致,常用方法:

  • 主服务器生成集合文件,通过rsync或scp分发到各节点,触发ipset restore
  • 使用共享存储(如NFS),所有服务器挂载同一文件,但需注意并发写入。
  • 高级方案:使用etcd或consul广播IP变更,各节点监听后调用ipset命令,业内专家指出,此方案适用于大规模集群,但复杂度较高。

ipset域名常见问题与优化

集合大小限制与调整

创建集合时未指定maxelem,默认65536,若需更大,在创建时设置:ipset create big_set hash:ip maxelem 1000000,注意:maxelem太大可能消耗过多内存,建议根据实际IP数量设置,通常10万以内足够。

持久化配置

ipset集合在重启后消失,持久化方法:

  • 导出:ipset save > /etc/ipset/ipset.conf
  • 恢复:

    ipset域名如何正确设置?ipset域名设置方法有哪些

    ipset restore < /etc/ipset/ipset.conf

  • 在系统服务中启用自动恢复,如systemd的ipset.service,或写入rc.local,注意:恢复应在iptables规则加载之前执行,否则规则引用空集合会报错。

更新频率与DNS缓存

域名解析脚本不宜执行太频繁,防止被DNS服务器限速,建议根据域名的TTL设定,取TTL的一半,例如TTL为600秒,每300秒执行一次,若域名解析变化不频繁,可延长至1小时,在脚本中增加日志,监控解析失败或异常,避免清空集合。

与iptables规则的兼容性

ipset规则与普通iptables规则可混用,但注意匹配顺序,若集合为空,--match-set会匹配失败,所以先确保集合有数据再加载规则,ipset不支持-m set--return-nomatch标志,需注意。

ipset域名方案将域名管理与IP集合深度融合,在日常运维和安全防护中展现出极高效率,无论你是搭建CDN白名单,还是构建自动封禁系统,掌握这套技术栈都能显著提升响应速度。

ipset域名常见问题解答

ipset域名集合如何同时用于多个iptables链? 同一个集合可在多个规则中引用,只需在iptables命令中指定相同的集合名,同时在INPUT和FORWARD链中使用-m set --match-set domain_whitelist src,集合更新后所有规则自动生效。

ipset域名集合在重启后iptables规则报错怎么解决? 确保ipset服务在iptables之前启动,在systemd中,可设置iptables.service的After=ipset.service,若手动恢复,先执行ipset restore,再执行iptables-restore

ipset域名方案是否支持IPv6域名? 支持,创建集合时指定family inet6,如ipset create ipv6list hash:ip family inet6,解析域名时使用dig AAAA,更新脚本中过滤IPv6地址,iptables规则对应使用ip6tables-m set --match-set ipv6list src

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/684053.html

(0)
上一篇 2026年8月18日 05:52
下一篇 2026年8月18日 05:54

相关推荐

  • vc域名解析失败怎么办,vc域名解析教程

    VC域名解析的核心在于通过虚拟主机或云服务器环境实现域名与IP的高效映射,2026年主流方案已全面转向基于DNSSEC安全协议与全球Anycast网络的低延迟解析服务,建议优先选择支持API自动化管理且具备等保三级资质的服务商以保障业务连续性,VC域名解析的技术演进与核心优势在2026年的数字化基础设施中,VC……

    2026年5月17日
    02594
  • ros域名解析失败怎么办,ros域名解析

    ROS(RouterOS)本身不具备内置的DNS解析服务,必须通过安装并配置第三方插件(如ddns-updater或nsd)或结合外部DNS服务商来实现域名解析功能,目前主流方案是采用“外部动态DNS+本地缓存”的混合架构以兼顾稳定性与速度,在2026年的家庭及中小企业网络环境中,随着IPv4地址枯竭与IPv6……

    2026年6月2日
    01224
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 中文域名与通用网址是什么?中文域名和通用网址的区别是什么?

    中文域名在提升品牌识别度和用户记忆力方面具有天然优势,但在全球兼容性与技术稳定性上仍逊于通用英文网址,企业应采取“中文域名品牌化+英文域名技术底座”的双轨策略以实现2026年百度SEO效果最大化,中文域名与通用网址的核心逻辑解析技术底层与表现形式中文域名(IDN)并非直接在DNS系统中运行,而是通过Punyco……

    2026年7月13日
    0472
  • 电脑域名是什么?域名注册和解析是什么

    在2026年的互联网生态中,选择“.com”还是“.cn”并非简单的二选一,而是取决于您的业务属性:面向全球市场或追求国际品牌溢价首选.com,深耕国内政企合作、合规经营及本土流量获取则必须优先考虑.cn,域名不仅是网站的入口,更是企业数字资产的核心组成部分,随着百度SEO算法在2026年进一步向“地域相关性……

    2026年6月29日
    0713

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(3条)

  • 影ai577的头像
    影ai577 2026年8月18日 07:14

    读了这篇文章,我深有感触。作者对使用的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

    • 白冷9483的头像
      白冷9483 2026年8月18日 07:14

      @影ai577这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是使用部分,给了我很多新的思路。感谢分享这么好的内容!

  • 帅草7448的头像
    帅草7448 2026年8月18日 07:14

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于使用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!