You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过hosts文件屏蔽YouTube失效问题排查及Linux系统级网站屏蔽方案咨询

通过hosts文件屏蔽YouTube失效问题排查及Linux系统级网站屏蔽方案咨询

我来帮你拆解下YouTube屏蔽失效的问题,再给你几个靠谱的系统级网站屏蔽替代方案~

一、hosts文件屏蔽YouTube失效的排查步骤

1. 先清缓存!大概率是缓存搞的鬼

浏览器和系统DNS缓存都可能残留旧的解析结果,导致hosts修改不生效:

  • 浏览器缓存:打开浏览器设置,找到清除缓存的选项(优先选“缓存文件”和“DNS缓存”相关项),或者直接按Ctrl+Shift+Del快速调出清除界面。
  • 系统DNS缓存:根据你的Linux发行版执行对应刷新命令:
    • 用systemd-resolved的发行版(如Ubuntu、Fedora):
      sudo resolvectl flush-caches
      # 或者重启服务确保生效
      sudo systemctl restart systemd-resolved
      
    • 用dnsmasq的发行版:
      sudo systemctl restart dnsmasq
      
  • 验证效果:执行nslookup youtube.com,如果输出IP是0.0.0.0::0,说明hosts已生效;如果还是YouTube真实IP,继续往下排查。

2. YouTube的子域名没屏蔽!这是常见坑

YouTube的访问依赖大量子域名(比如www.youtube.comm.youtube.comgooglevideo.com),只屏蔽主域名的话,浏览器可能自动跳转到子域名,导致屏蔽失效。把这些相关域名也加到hosts里:

0.0.0.0   youtube.com www.youtube.com m.youtube.com
::0       youtube.com www.youtube.com m.youtube.com
0.0.0.0   youtube.de www.youtube.de m.youtube.de
::0       youtube.de www.youtube.de m.youtube.de
0.0.0.0   googlevideo.com www.googlevideo.com
::0       googlevideo.com www.googlevideo.com

3. 检查系统域名解析优先级配置

Linux系统通过/etc/nsswitch.conf决定域名解析顺序,要确保hosts文件优先级高于DNS:
打开文件查看:

cat /etc/nsswitch.conf

找到hosts:开头的行,确保files(代表hosts文件)在dns前面,比如:

hosts: files dns myhostname

如果顺序是dns files,修改成files dns,保存后重启相关服务(如systemd-resolved)。

4. 浏览器的DNS over HTTPS(DoH)在搞事情

现在很多浏览器默认开启DoH,会绕过系统DNS解析(包括hosts文件),直接用浏览器自带的DNS服务器访问网站。需要关闭这个功能:

  • Firefox:设置 → 网络设置 → 设置 → 取消勾选“启用DNS over HTTPS”
  • Chrome:设置 → 隐私和安全 → 安全 → 关闭“使用安全DNS”

二、其他Linux系统级网站屏蔽方案

如果hosts文件方式不够稳定,试试这些替代方案:

1. 使用iptables/firewalld屏蔽IP段

直接屏蔽YouTube的IP地址段,注意YouTube的IP段会定期更新,需要偶尔调整:

  • iptables命令示例:
    # 屏蔽Google/YouTube的常见IP段
    sudo iptables -A OUTPUT -d 172.217.0.0/16 -j DROP
    sudo iptables -A OUTPUT -d 142.250.0.0/16 -j DROP
    
  • 如果用firewalld,添加富规则:
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="172.217.0.0/16" drop'
    sudo firewall-cmd --reload
    

2. 用dnsmasq做本地DNS屏蔽

dnsmasq是轻量DNS服务器,可方便配置域名重定向:

  1. 安装dnsmasq:sudo apt install dnsmasq(Debian/Ubuntu)或sudo dnf install dnsmasq(Fedora)
  2. 编辑配置文件/etc/dnsmasq.conf,添加屏蔽规则:
    address=/youtube.com/0.0.0.0
    address=/youtube.de/0.0.0.0
    address=/googlevideo.com/0.0.0.0
    
  3. 重启服务:sudo systemctl restart dnsmasq
  4. 将系统DNS设置为127.0.0.1,确保优先用dnsmasq解析。

3. 本地安装Pi-hole

Pi-hole原本是网络级广告屏蔽工具,也可在本地安装作为系统级域名屏蔽工具:

  • 安装命令:curl -sSL https://install.pi-hole.net | bash
  • 安装完成后配置本地DNS,在Pi-hole后台可视化添加要屏蔽的域名即可,操作简单直观。

备注:内容来源于stack exchange,提问作者Kaligule

火山引擎 最新活动