我一直在尝试设置 Launchd 以在周一至周五上午 9 点至下午 3 点之间阻止 osX 10.12.2 上 Chrome 的多个网站
我将 launchd 设置为 cp /etc/hosts_BLOCKED_sites.txt /etc/hosts
Launchd 似乎正在正确复制文件。
$ ls -la /etc/hosts
-rw------- 1 root wheel 619 Dec 29 09:00 /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
127.0.0.1 reddit.com
127.0.0.1 www.reddit.com
127.0.0.1 facebook.com
127.0.0.1 www.facebook.com
# Block Facebook IPv6
fe80::1%lo0 facebook.com
fe80::1%lo0 reddit.com
::1 facebook.com
::1 www.facebook.com
::1 www.reddit.com
::1 reddit.com
但是,在 /etc/hosts 设置为阻止访问后,我仍然可以在 Chrome 浏览器中打开被阻止的网站。
关于为什么 /etc/hosts 不阻止对站点的访问有什么建议吗?
编辑:我尝试过但未能阻止 Chrome 上的网站:
sudo Killall -HUP mDNSResponder从命令行
我尝试通过 chrome://net-internals/#dns 刷新 Chrome DNS 缓存
我尝试刷新 Chrome 套接字 chrome://netinternals/#sockets
我还添加了 IPv6 格式。
这没有什么区别。所有被阻止的网站仍然可以通过 Chrome v55.0.2883.95 访问。
答案1
应用程序不是必需的来咨询/etc/hosts
。要获得所需的效果,请安装并配置dnsmasq
。请参阅下面dnsmasq.conf
与目标相关的片段。
# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
address=/local/0.0.0.0
address=/double-click.net/0.0.0.0
address=/google.com/0.0.0.0
address=/reddit.com/0.0.0.0
address=/www.reddit.com/0.0.0.0
address=/facebook.com/0.0.0.0
address=/www.facebook.com/0.0.0.0
然后进行/etc/resolv.conf
如下配置。
nameserver 127.0.0.1
另外,重定向到0.0.0.0
not 127.0.0.1
。速度快多了。 Unbound软件也能达到同样的效果。它们都提供了对 DNS 和 DHCP 的更多控制。