Linux如何精确过滤域名?,白名单黑名单命令怎么用?

Linux上精确过滤域名,核心不在iptables,而在DNS解析层,白名单/黑名单最实用的路径是:单机用/etc/hosts,局域网用dnsmasq,防火墙配合ipset做兜底阻断。

先搞清Linux域名过滤和IP过滤区别

很多运维第一次做域名屏蔽,会直觉地往iptables里写域名,结果命令直接报错,或者当时生效、过两天失效,原因是iptables工作在网络层,只认IP地址和端口,不负责域名解析,域名到IP的转换发生在用户态,防火墙规则加载时并不知道某个域名当前对应哪些IP。

OpenWrt使用adguard home实现域名白名单功能
加载中
OpenWrt使用adguard home实现域名白名单功能

CDN和轮询DNS让这个问题更麻烦,一个域名可能对应几十个IP,还会动态增减,用IP过滤固定服务完全够用,但过滤大量域名或动态解析的域名,必须把DNS解析纳入控制范围。

下表对比三种常见方案的定位:

方案 过滤层级 精确度 维护成本 适用场景
/etc/hosts 本机DNS 单域名精确 低 单台Linux服务器或桌面
dnsmasq 局域网DNS 支持泛域名和通配 中 内网批量域名过滤
iptables+ipset 网络层兜底 依赖IP更新频率 高 阻断直连IP绕过DNS

Linux hosts文件屏蔽域名:最轻量黑白名单命令

/etc/hosts 是最原始的本地DNS覆盖文件,格式很固定:IP地址 域名,系统在查询DNS之前,会先读这个文件,命中就直接返回,不再向上游DNS服务器发请求。

黑名单操作只需要一行命令:

sudo sh -c 'echo "0.0.0.0 bad.example.com" >> /etc/hosts'

把域名指向 0.0.0 比指向 0.0.1 更好。0.0.1 会回环到本机,如果本机恰好有Web服务,屏蔽页面可能变成自己的默认站点,造成混淆。0.0.0 是不可路由地址,连接会立即失败,多数情况下失败速度更快。

白名单用hosts直接做不了,hosts只能指定单个域名解析到指定IP,没有“默认拒绝其他所有域名”的规则,想用hosts做白名单,需要配合防火墙或DNS服务把未列出的域名全部拦截,否则其他域名仍然正常解析。

Linux如何精确过滤域名?,白名单黑名单命令怎么用?

hosts的优点是不用装任何软件,改完立即生效,适合临时屏蔽某个跟踪域名或测试环境,缺点是不支持泛域名,.example.com 这种写法在hosts里无效;域名多时文件会膨胀,维护起来比较痛苦。

dnsmasq域名黑名单与DNS层精确过滤实操

dnsmasq是一个轻量DNS转发器,支持非常灵活的域名匹配规则,很多路由器固件和公司内网DNS都基于它构建。

安装命令按发行版区分:

# Debian/Ubuntu
sudo apt install dnsmasq -y
# CentOS/RHEL
sudo yum install dnsmasq -y

主配置文件是 /etc/dnsmasq.conf,也可以把自定义规则放进 /etc/dnsmasq.d/ 目录下独立文件,便于管理。

黑名单示例:

# 在 /etc/dnsmasq.d/blacklist.conf 添加
address=/ads.example.com/0.0.0.0
address=/tracker.example.com/0.0.0.0

address=/域名/0.0.0.0 表示把该域名及其子域名都解析到 0.0.0,dnsmasq会自动处理 www.ads.example.com 等子域,比hosts灵活得多。

白名单示例:

# /etc/dnsmasq.d/whitelist.conf
no-resolv
server=/api.allowed.com/223.5.5.5
server=/monitor.allowed.com/119.29.29.29
address=/#/0.0.0.0

关键在最后一行 address=/#/0.0.0.0,它代表所有未明确匹配的域名都返回 0.0.0,前面的 server= 只放行白名单域名走指定上游DNS。no-resolv 是必须的,否则dnsmasq会读取 /etc/resolv.conf 里的上游DNS,导致 target.com 也能被解析,白名单失效。

重启服务并验证:

sudo systemctl restart dnsmasq
dig @127.0.0.1 bad.example.com
# 应返回 0.0.0.0
dig @127.0.0.1 api.allowed.com
# 应返回白名单域名真实IP

局域网内要把客户机的DNS地址指向这台dnsmasq服务器,DHCP下发DNS选项或手动修改客户端 /etc/resolv.conf 都行,这样整个网段的域名过滤就统一管起来了。

Linux防火墙屏蔽域名命令:iptables/nftables的兜底方案

iptables本身不支持直接写域名,如果尝试:

iptables -A OUTPUT -d bad.example.com -j DROP

会收到 host/network 'bad.example.com' not found 报错,因为iptables只接受IP、网络段或主机名能在规则加载时解析一次,之后不会动态更新。

Linux如何精确过滤域名?,白名单黑名单命令怎么用?

但在实际场景里,仍有人需要“用防火墙屏蔽某个域名”,做法分两步:先解析域名得到IP,再把这些IP写进ipset集合,由iptables引用。

# 创建IP集合
sudo ipset create blocked hash:ip
# 添加一条OUTPUT规则,匹配集合内的目的IP直接丢弃
sudo iptables -I OUTPUT -m set --match-set blocked dst -j DROP
# 解析域名并加入集合
ip=$(dig +short bad.example.com | tail -1)
sudo ipset add blocked $ip

CDN域名会返回多个IP,需要把全部IP都加进去,更规范的做法是写一个cron脚本,每5分钟解析一次域名,清空旧集合再重新填充:

#!/bin/bash
ipset flush blocked
for ip in $(dig +short bad.example.com); do
    ipset add blocked $ip
done

nftables同样不支持域名匹配,但可以用动态集合或配合系统解析服务实现类似逻辑,如果环境中已经全面切换到nftables,思路相同:维护一个IP集合,定期刷新。

这种方案的优点是能在网络层直接阻断连接,即使应用程序绕过本地DNS、直接使用IP连接也会被拦截,缺点是IP变化有滞后,且维护成本明显高于DNS层过滤。

只允许白名单域名出站:生产服务器精确过滤场景

生产服务器如果只允许访问固定的几个API域名和监控上报域名,其他域名全部拒绝,单纯靠DNS白名单还不够,攻击者或恶意程序可能内置IP地址,不走DNS解析,直接连C2服务器,要封死这条路,必须配合防火墙默认拒绝策略。

完整操作步骤如下:

  1. 安装dnsmasq并按前文白名单配置,只放行指定域名。
  2. 将本机DNS指向本地服务:
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf

设置iptables出站白名单:

sudo iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -d 127.0.0.1 -j ACCEPT
sudo iptables -A OUTPUT -j DROP

第一条放行已建立连接,第二条只允许向本地DNS查询,第三条默认拒绝所有新出站连接。

测试验证:

curl https://api.allowed.com
# 应正常返回
curl https://blocked.example.com
# 应超时或连接拒绝

这种配置下,白名单域名通过DNS正确解析后,连接会被ESTABLISHED规则放行,未允许的域名要么被dnsmasq解析为0.0.0.0直接失败,要么即使程序绕过DNS直连IP,也会被OUTPUT默认DROP拦住,两条路径同时封死,才算精确过滤。

Linux如何精确过滤域名?,白名单黑名单命令怎么用?

选型建议与避开加密DNS坑

不同场景的推荐方案差异较大:

  • 单台Linux桌面临时屏蔽广告域名:直接用hosts,改动小、即时生效。
  • 内网几十台服务器统一屏蔽恶意域名:部署dnsmasq做DNS黑名单,DHCP下发内网DNS地址。
  • 高安全等级的生产服务器只开放白名单域名:dnsmasq白名单 + iptables默认拒绝出站。
  • 需要防止用户改DNS绕过过滤:在网关防火墙上阻断外部53端口UDP/TCP出站,只允许内网DNS服务器查询上游。

业内专家指出,单纯依赖域名过滤存在被加密DNS绕过的风险,生产环境应结合IP信誉库和出站白名单策略,近年来DoH(DNS over HTTPS)流行后,传统DNS过滤的部分场景确实被削弱,因为查询内容加密后无法在DNS层看到域名,这类环境必须把防火墙管控前移,从连接目标IP上做兜底。

Linux精确过滤域名没有单一命令能包打天下,先控DNS,再加防火墙默认拒绝,白名单场景尤其要把两条路径同时封死。

常见问题

Linux服务器屏蔽某个域名最简单命令是什么?

使用hosts文件把域名指向 0.0.0:

sudo sh -c 'echo "0.0.0.0 bad.example.com" >> /etc/hosts'

该命令立即生效,不需要重启网络服务,但hosts不支持泛域名,域名数量多时建议改用dnsmasq。

Linux防火墙iptables可以直接配置域名白名单吗?

不能,iptables的 -d 参数只接受IP地址或网络段,不支持域名,即使某些工具在规则加载时解析一次域名,之后IP变化也会导致规则失效,正确的做法是解析域名后写入ipset,再让iptables引用ipset集合。

白名单过滤后为何还要设置防火墙DROP出站?

因为DNS白名单只能控制域名解析结果,无法阻止程序使用硬编码IP地址直连外部服务器,将iptables的OUTPUT链默认策略设为DROP,只放行到本地DNS的查询和已建立连接,可以阻断所有绕过DNS的直连尝试,默认DROP是域名白名单能落地的必要条件。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/662430.html

赞 (0)
虚拟机多开游戏卡顿怎么办,提升流畅度有哪些技巧?
上一篇 2026年9月17日 11:14
高防的服务器有哪些类型值得选,高防服务器哪家好
下一篇 2026年9月17日 11:16

相关推荐

  • GPU服务器主要参数有哪些?,配置怎么选?

    GPU服务器最核心的参数包括GPU型号与架构、显存容量与带宽、CPU与内存配置、存储类型、网络互联、功耗与散热六大维度,其中GPU型号和显存带宽直接决定算力上限,网络拓扑则影响多卡协同效率,后期扩容时还需关注整机功耗冗余与散热设计,开始,先从GPU本身说起:型号不等于一切GPU服务器选购第一步永远是看卡,但只看……

    2026年8月24日
    1100
  • 个人博客网站制作php难吗?php个人博客搭建教程

    使用PHP制作个人博客网站的核心在于选择轻量级框架或CMS,结合Nginx/Apache服务器环境,通过数据库连接实现内容动态展示,这一方案成本低、灵活性高,适合追求个性化与可控性的开发者,在2026年的技术生态中,虽然SaaS建站平台依然占据大众市场,但越来越多的技术爱好者和小型创作者开始回归代码本身,他们不……

    2026年6月11日
    3600
  • 个人注册域名海外空间怎么操作?个人注册域名海外空间多少钱

    个人注册域名搭配海外空间是搭建独立站、规避国内备案繁琐流程及实现数据全球加速的最佳技术路径,核心在于选择高稳定性服务商并掌握基础的安全配置,对于许多希望建立个人品牌、展示作品集或运行小型博客的创作者而言,国内严格的备案制度往往成为一道难以逾越的门槛,备案周期长、材料繁杂,且对服务器地域有严格限制,相比之下,海外……

    2026年5月28日
    3800
  • AD域服务器要打哪些补丁,不更新有什么影响?

    AD域服务器的补丁策略并非“打一两个关键补丁”那么简单,而是一个围绕操作系统、安全漏洞、功能更新和季度汇总的持续更新体系,核心是遵循微软每月更新周期,并结合环境差异制定优先级,很多运维同行习惯把AD域服务器比作企业IT的“定海神针”,只要域控不出问题,账号登录、组策略下发、资源访问都顺顺当当;一旦域控掉链子,全……

    2026年8月22日
    1200
  • 服务器按键不开机怎么回事,服务器按开机键没反应什么原因

    服务器按键不开机通常由电源供应故障、硬件接触不良或主板自检保护机制触发导致,解决问题的关键在于快速定位故障源头,通过最小化启动排查法、指示灯状态判读及关键部件替换测试,绝大多数非物理损坏故障均可在现场修复,无需立即更换整机,电源与供电环境深度排查处理服务器按键不开机问题,首要任务是验证供电系统的完整性,这是最基……

    2026年3月14日
    14500
  • 分布式数据库教程有哪些内容,零基础能学会吗

    对于大多数现代企业来说,分布式数据库已不再是可选项,而是应对海量数据和高并发场景的必选项,其核心价值在于通过水平扩展突破单机瓶颈,同时保证系统的高可用和强一致性,为什么需要分布式数据库?——场景驱动的需求数据规模爆炸与单机瓶颈近年来企业数据量快速增长,传统单机数据库在存储容量、读写性能和可靠性上逐渐触及天花板……

    2026年7月29日
    1100
  • 个人信息出境安全怎么评估?数据出境安全评估标准

    个人信息出境的核心在于通过国家网信部门的安全评估、签订标准合同或进行个人信息保护认证,企业需根据数据量级和业务场景选择合规路径,否则将面临高额罚款及业务停摆风险,在全球化业务拓展中,数据跨境流动已成为常态,但随之而来的合规压力也呈指数级增长,许多企业误以为只要用户签署了隐私协议就能随意传输数据,这种认知偏差往往……

    2026年6月15日
    4100
  • 防火墙应用范围广泛,哪些行业和场景不可或缺?

    防火墙的应用范围主要涵盖网络边界防护、内部网络分段、云环境安全、终端设备保护及特定场景下的深度定制五大领域,其核心作用是通过访问控制、威胁检测与流量监控,在不同网络层次构建动态防御体系,以应对多样化安全威胁,网络边界防护:企业安全的第一道防线网络边界防火墙部署于内部网络与外部互联网(或不可信网络)之间,是传统且……

    2026年2月4日
    13330
  • 服务器弹出调试是什么原因,如何解决服务器调试弹窗

    服务器弹出调试窗口或提示信息,本质上并非单一的系统故障,而是服务器运行逻辑、应用程序代码与环境配置之间产生冲突的显性表现,核心结论在于:服务器弹出调试信息,意味着服务器端开启了详细的错误回溯模式,这虽然有助于开发人员快速定位问题,但在生产环境中却构成了严重的安全隐患与用户体验灾难, 解决这一问题的根本路径,不在……

    2026年3月25日
    10100
  • 服务器硬盘监控总报警?企业级硬盘健康检测方案

    服务器监控硬盘是确保数据中心和IT基础设施稳定运行的核心环节,它能实时检测硬盘健康状况,预防数据丢失、系统崩溃和业务中断,通过专业工具和策略,企业可以提前预警故障,优化性能,并提升整体可靠性,为什么服务器硬盘监控至关重要硬盘是服务器存储数据的物理载体,任何故障都可能导致灾难性后果,未经监控的硬盘问题如坏扇区、读……

    2026年2月9日
    11700

发表回复

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