问题描述
假设一个网站没有像www.google.com
这样的域名,唯一的连接方法是使用像216.58.212.68
这样的IP地址。如果我在/etc/hosts
中添加看起来像0.0.0.0 216.58.212.68
的条目,它将阻止与该网站的连接吗?网络浏览器也会被阻止访问吗?
此外,这是否也适用于本地地址,例如192.168.0.1
?
最佳方法
否。hosts文件不会影响任何路由。它仅影响名称查找。由于216.58.212.68
是IP地址,因此系统不会在hosts表中查找它。
在此处阅读有关主机文件的更多信息:http://manpages.ubuntu.com/manpages/trusty/man5/hosts.5.html
如果要阻止从系统到IP地址的连接,可以采用以下两种方法:
-
使用
route
命令的黑洞流量:route add 216.58.212.68 gw 127.0.0.1 lo
-
使用
route
命令拒绝流量:route add -host 216.58.212.68 reject
-
使用
ip
命令的空路由:ip route add blackhole 216.58.212.68/32
现在,如果您要按名称阻止到系统的通信,则可以在您的主机文件中添加一个伪造的条目,将该名称指向回送地址:
127.0.0.1 badactor.evil.com
然后,只要您的系统设置为在DNS之前使用主机文件查找,所有试图从系统到达该主机的流量都将被伪造。尽管您可以使用类似Pi Hole的DNSMASQ服务器来阻止甚至DNS查找,但任何基于DNS的特定查找仍然可以使用。
确保已阅读route
和ip
命令的手册页,因此,如果需要,您将了解如何使这些命令在重新引导后保持不变。