You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过路由器基于网站IP地址实现全网设备的网站访问拦截

特定网站访问拦截实操方案

核心问题前置说明

  • 支持直接基于IP地址实现访问拦截,但纯IP拦截存在明显局限性:中小站点常与其他业务共享公网IP,直接封IP可能误杀同IP下的正常服务;头部站点普遍使用CDN调度,单域名对应数十个动态变化的公网IP,纯IP拦截漏拦概率较高。
  • 之前遇到的域名拦截失效、谷歌搜索跳转仍可访问的问题,本质是规则覆盖不全、存在解析绕过路径,不是域名拦截方案本身无效。

本地hosts拦截失效的常见原因

修改/etc/hosts未完全生效,基本是以下三类原因:

  • 规则未覆盖全子域名:仅配置裸域site.com的映射时,www.site.com、m.site.com等常用子域名仍会走正常DNS解析
  • 浏览器开启DoH(加密DNS):Chrome、Edge、Firefox等主流浏览器默认的安全DNS功能会直接绕过系统hosts与本地DNS,向第三方加密DNS服务器发起解析请求,导致hosts规则失效
  • 系统开启DoH服务:Ubuntu 22.04及以上版本默认搭载的systemd-resolved组件支持DoT/DoH,未手动关闭时同样会绕过本地hosts规则

方案1:Ubuntu本机无漏拦配置

按以下步骤操作可实现本机对目标站点的完全拦截:

  1. 补全hosts映射规则
    编辑/etc/hosts文件,添加目标站点全常用子域名的映射,不要仅配置裸域:
127.0.0.1   site.com www.site.com m.site.com
  1. 关闭浏览器加密DNS
    进入浏览器隐私安全设置页,找到「安全DNS/DoH」相关选项,选择关闭或使用本地网络默认DNS服务,不要配置自定义公共加密DNS。
  2. 关闭系统级加密DNS
    编辑/etc/systemd/resolved.conf文件,将DNSOverTLS、DNSOverHTTPS配置项的值设为no,保存后执行以下命令重启服务生效:
sudo systemctl restart systemd-resolved
  1. 防火墙层IP兜底拦截
    用Ubuntu默认自带的ufw防火墙直接拦截发往目标站点IP的出站流量,就算存在解析绕过路径也无法建立连接:
# 拦截发往目标IP的所有出站流量,多个IP重复执行该命令添加即可
sudo ufw deny out to 101.53.182.181
# 重载防火墙规则生效
sudo ufw reload

如果目标站点使用CDN,可在不同网络环境下多次执行dig site.com获取全部解析IP,全部加入拦截规则即可大幅降低漏拦概率。

方案2:局域网全设备统一拦截

无需逐台修改设备配置,两种可落地方案可选:

  1. 基于Ubuntu搭建局域网DNS服务
    在Ubuntu设备上部署dnsmasq作为局域网默认DNS服务器,实现统一拦截:
  • 安装dnsmasq组件:sudo apt install dnsmasq -y
  • 编辑/etc/dnsmasq.conf配置文件,添加泛域名拦截规则,无需逐个配置子域名:
address=/site.com/127.0.0.1
  • 为Ubuntu设备设置固定局域网IP(例如192.168.1.100)
  • 进入路由器管理后台,将DHCP服务的默认DNS地址修改为Ubuntu设备的固定局域网IP,所有接入局域网的设备会自动应用该DNS规则,对应域名解析直接被拦截。
  • 可在Ubuntu的ufw防火墙中补充目标IP的拦截规则,就算个别设备手动配置了加密DNS绕过局域网DNS,流量经过出口时也会被IP规则拦截。
  1. 路由器端直接配置
    无需通过telnet 192.168.1.1敲命令行,绝大多数家用路由器可直接通过Web管理页(浏览器访问192.168.1.1,登录账号密码印在路由器底部标签)配置拦截规则:
  • 找到「域名过滤/网站屏蔽」功能,将site.com加入黑名单,开启后所有局域网设备访问对应域名会被直接拦截
  • 找到「IP过滤/访问控制」功能,将dig获取到的目标站点公网IP加入黑名单,所有发往这些IP的流量会被直接丢弃
    如果是仅支持命令行配置的老旧路由器,可直接添加iptables转发规则实现IP拦截,参考命令:
iptables -I FORWARD -d 101.53.182.181 -j DROP

保存规则后所有经过路由器转发到目标IP的流量都会被拦截。

谷歌搜索跳转可访问的问题说明

该现象一般由两个原因导致:一是谷歌搜索结果的跳转链路先走谷歌自身的代理/缓存服务器,未直接触发域名匹配规则;二是浏览器本地缓存了目标站点的历史解析记录。清理浏览器缓存、关闭加密DNS、补充IP层兜底规则后,该问题会自动解决。

内容的提问来源于stack exchange,提问作者ya22y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 07:36:18