我是 OSX 用户,我想禁止一些主机名,因为某些本地应用程序可能会用这些主机名做一些令人讨厌的事情。
pfctl
是 OSX 10.11 El Captain 上的默认防火墙。那么,如何使用 来阻止特定主机名呢pfctl
?
我知道修改hosts
文件可以通过将其解析为未知 IP 来阻止特定主机名。但是,在我的情况下,hosts 方法不起作用。所以,我想使用 pfctl 代替。
答案1
可以,但不需要使用 pfctl 禁止主机名。
您可以使用 /etc/hosts 来完成此操作。事实上,这就是我多年来一直这样做的方式。它比 pfctl 占用的资源更少,因为您不需要解析名称,也不需要检查流量。它还具有阻止已知名称的所有实例的优点,因为现在站点名称可以解析为多个 IP 地址。
$ dig A cnn.com
; <<>> DiG 9.8.3-P1 <<>> A cnn.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22656
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 2
;; QUESTION SECTION:
;cnn.com. IN A
;; ANSWER SECTION:
cnn.com. 242 IN A 157.166.226.26
cnn.com. 242 IN A 157.166.226.25
;; AUTHORITY SECTION:
cnn.com. 172707 IN NS ns3.timewarner.net.
cnn.com. 172707 IN NS ns2.p42.dynect.net.
cnn.com. 172707 IN NS ns1.timewarner.net.
cnn.com. 172707 IN NS ns1.p42.dynect.net.
;; ADDITIONAL SECTION:
ns1.timewarner.net. 172707 IN A 204.74.108.238
ns3.timewarner.net. 172707 IN A 199.7.68.238
;; Query time: 5 msec
;; SERVER: 192.168.201.1#53(192.168.201.1)
;; WHEN: Sun Nov 22 07:35:00 2015
;; MSG SIZE rcvd: 186
方法是编辑主机
sudo /etc/hosts
并用地址 0.0.0.0 填充它,后跟要阻止的站点的名称。人们过去使用 127.0.0.1,但是由于 Windows 兼容性问题,并且由于 0.0.0.0 信号使您甚至不必尝试打开连接,现在使用 0.0.0.0。
如果您担心的是恶意软件,除了添加您自己的恶意软件之外,您还可以使用此列表作为起点,这是众所周知的列表之一。
“使用主机文件阻止不需要的连接”
http://winhelp2002.mvps.org/hosts.htm
这是我在 /etc/hosts 中的一些条目的示例
0.0.0.0 youtu.be
0.0.0.0 allsrtfree.com
0.0.0.0 serve.adplxmd.com
0.0.0.0 www.subtitlseex.xyz
0.0.0.0 fukizi.com
0.0.0.0 www.themoviesarea.com
0.0.0.0 www.dream-marriage.com
0.0.0.0 system-protection.6offers.com
0.0.0.0 adstrx.com
0.0.0.0 mackeeperapp3.mackeeper.com
0.0.0.0 www.download-genius.com
0.0.0.0 cdn.myfreesoftwarehub.com
0.0.0.0 cdn.freefairs.com
0.0.0.0 piratetorrents.net
如果你还想用pf,看来你得和relayd一起使用,因为它不是封锁IP地址,而是封锁站点。
我找到了一张谈论它的幻灯片:
http://quigon.bsws.de/papers/2013/vbsdcon/mgp00043.html
作为脚注,如果您想要 OS/X 中良好的图形防火墙,Little Snitch 非常出色,并且还可以在应用程序级别进行阻止。