需先用getent hosts验证/etc/hosts是否生效,再检查权限是否为-rw-r--r--,用nano正确添加127.0.0.1domain.com格式规则,重启systemd-resolved并用resolvectl query确认命中本地hosts。

您在统信UOS系统中需要屏蔽广告、拦截恶意网站或实现内部服务域名重定向,但发现修改后浏览器仍能访问目标网址、ping命令返回公网IP或getent查询无响应——这说明/etc/hosts文件虽已编辑,但系统未按预期加载新规则,必须确保格式正确、权限合规且解析链真正命中本地映射。
确认当前hosts是否被系统识别
先验证问题根源:执行getent hosts example.com(将example.com替换为您的hosts中已添加的任意域名)。若输出为空或显示公网IP,说明系统根本没读取该行;若返回127.0.0.1或您指定的IP,则hosts已生效,无需继续操作。
再检查文件权限:运行ls -l /etc/hosts,正确权限必须是-rw-r--r-- 1 root root。若显示-rw-------或-rwxr-xr-x等异常权限,后续所有修改都会被systemd-resolved忽略。
用nano编辑器安全追加屏蔽规则
这是最稳妥的入门方法,适合不熟悉vi模式的新手,避免误删关键行。
第一步:打开终端,输入sudo -i并回车,输入管理员密码(输入过程不显示字符)进入root权限。
第二步:执行nano /etc/hosts启动编辑器。
第三步:用方向键移动光标至文件末尾空白行,输入规则,格式严格为:127.0.0.1
第四步:按Ctrl+O保存→回车确认文件名→Ctrl+X退出。
强制刷新DNS缓存使修改立即生效
统信UOS默认启用systemd-resolved作为本地解析器,它会缓存DNS结果,直接修改hosts后不刷新会导致旧解析持续生效数分钟甚至更久。
执行sudo systemctl restart systemd-resolved重启服务,这是让新hosts规则立刻起效的必要操作。
验证是否真正生效:运行resolvectl query domain.com(替换为您添加的域名),若第一行输出为Found in local /etc/hosts,说明已命中;若显示Using DNS server 114.114.114.114等,则说明nsswitch.conf配置错误或文件权限异常,需回退检查。
批量导入开源广告屏蔽列表(可选进阶)
手动添加效率低且覆盖有限,适合需拦截数百个广告域名的场景。
方法一:使用AdGuard过滤源
执行以下命令一键下载、清洗并追加:
curl -sS https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/cmd/a(撰于2026年6月20日)
方法二:采用StevenBlack权威列表
① 执行命令下载并过滤:curl -sS https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | grep "^0.0.0.0" | sed "s/0.0.0.0/127.0.0.1/g" | sudo tee -a /etc/hosts > /dev/null。
② 去重整理:sudo awk '!seen[$0]++' /etc/hosts | sudo tee /etc/hosts > /dev/null——这步必须做,否则重复条目会干扰解析优先级。
【去重命令必须执行,否则多条相同规则会降低解析效率并可能触发systemd-resolved跳过处理】











