我尝试使用/etc/hosts
文件将某些网站重定向到本地主机。为此,我在终端中使用打开它,sudo nano /etc/hosts
然后修改文件并保存。最后一步,我使用刷新了 DNS 缓存sudo killall -HUP mDNSResponder
。
我的主机文件如下所示:
$ 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 somethig.com
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
这根本不起作用。我尝试过重启,但没有成功。我也做了很多研究,但没有在互联网上找到任何可行的答案。操作系统是否仍使用此文件,或者这永远不会真正起作用?
我正在使用 macOS 10.13。
答案1
我将主机和 IP 地址用制表符分隔,切换到它们之间只有一个空格对我来说是可行的:
127.0.0.1 www3.mytestsite.com
答案2
OSX日报针对 High Sierra 有不同的命令集 - 也许值得一试...
sudo killall -HUP mDNSResponder; sleep 2; echo macOS DNS Cache Reset | say
或者它是否很粘……
sudo killall -HUP mDNSResponder && echo macOS DNS Cache Reset
答案3
在我使用的 10.13.3 系统上适用。
% grep example /etc/hosts
127.0.0.1 example.com
% perl -MSocket -e 'printf "%vx\n", inet_aton "example.com"'
7f.0.0.1
% dns-sd -G v4 example.com
DATE: ---Tue 06 Mar 2018---
10:49:47.455 ...STARTING...
Timestamp A/R Flags if Hostname Address
TTL
10:49:47.457 Add 2 -1 example.com. 127.0.0.1
1
但是!某些应用程序(例如 Google Chrome)可能会向自己的 DNS 服务器(例如 )发出查询,或者如果应用程序仅发出 DNS 请求而不通过系统解析器,则8.8.8.8
它们可能很容易忽略该文件。/etc/hosts
% host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946