我一直在尝试设置 Launchd,以在周一至周五上午 9 点至下午 3 点屏蔽 osX 10.12.2 上的几个网站
我设定launchd
为cp /etc/hosts_BLOCKED_sites.txt /etc/hosts
Launchd 似乎正在正确复制文件。
$ ls -la /etc/hosts
-rw-r--r-- 1 root wheel 715 Jan 10 15:01 /etc/hosts
$ sudo cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
# Blocked sites redirected to 0.0.0.0
0.0.0.0 reddit.com
0.0.0.0 www.reddit.com
0.0.0.0 facebook.com
0.0.0.0 www.facebook.com
/etc/hosts
但是,设置为阻止访问后,我仍然可以打开被阻止的网站。
关于为什么/etc/hosts
不阻止访问这些网站,有什么建议吗?
我尝试过以下方法在 Chrome 上屏蔽网站,但均以失败告终:
sudo killall -HUP mDNSResponder
从命令行- 我尝试通过以下方式刷新 Chrome DNS 缓存
chrome://net-internals/#dns
- 我尝试刷新 Chrome 套接字
chrome://netinternals/#sockets
- 我切换了 hosts 文件以将网站重定向到 127.0.0.1 ,它没有阻止该网站,而且我被告知重定向到 0.0.0.0 速度更快
这没什么区别。所有被屏蔽的网站仍然可以通过 Chrome v55.0.2883.95 访问。
答案1
我注意到您的 /etc/hosts 文件的权限为 600。该文件的权限通常应为 644。如果您的应用程序无法读取 /etc/hosts,那么它将仅使用 DNS。
答案2
输入 ipv4 + ipv6 的主机条目并运行
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
为了清除缓存,我仍然必须重新启动 Chrome 才能使主机条目生效。
我的主持人条目:
127.0.0.1 youtube.com
127.0.0.1 www.youtube.com
fe80::1%lo0 youtube.com
fe80::1%lo0 www.youtube.com
答案3
尝试将它们写为 127.0.0.1 的别名
127.0.0.1 localhost www.facebook.com www.reddit.com
答案4
您是否已验证 /etc/nsswitch.conf 中是否有如下一行:
主机:文件 DNS
如果文件中没有这样的行,或者行在文件之前有 dns,则首先进行 dns 查询,如果得到有效答案,则甚至不会查看 /etc/hosts 文件