假设一个网站没有类似 的域名www.google.com
,连接到该网站的唯一方法是使用类似 的 IP 地址216.58.212.68
。如果我在其中添加一个/etc/hosts
类似于 的条目0.0.0.0 216.58.212.68
,它会阻止与该网站的连接吗?网络浏览器也会被阻止访问它吗?
此外,这也适用于本地地址吗192.168.0.1
?
答案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 之前使用主机文件查找,任何试图从您的系统到达该主机的流量都将被伪造。任何基于特定 DNS 的查找仍然有效,尽管您可以使用 DNSMASQ 服务器,例如皮孔甚至阻止 DNS 查找。
请务必阅读route
和ip
命令的手册页,以便您了解如何在需要时使这些命令在重新启动后保持不变。