hosts 文件的高级规则

hosts 文件的高级规则

我需要为某个域的所有子域添加一条规则。我想象它应该是这样的:

127.0.0.1 *.example.com

如您所见,我需要将对 example.com 上任何子域的所有请求重定向到 localhost。好吧,我知道使用 hosts 文件无法做到这一点。在这种情况下我还能使用什么?

答案1

正如您所说,您不能在 中输入通配符/etc/hosts。它根本不起作用。

这实际上只剩下一个选择:手动修改实际 DNS。有几种方法可以做到这一点,但有两种方法是最好的选择……

可以在本地运行一个功能齐全的 DNS 服务器。如果您的互联网连接速度很慢,并且您希望网络上的所有设备都通过此服务器进行代理,或者您运行许多要覆盖的域,或者出于其他原因您想进入地狱的第一层,这可能是一个好主意……这不会花一周的时间,但确实需要学习一些东西。

或者你也可以overridednsmasq的设置。Ubuntunetwork-manager已经以 的形式运行一种 DNS 代理dnsmasq,您可以非常轻松地告诉它覆盖各种域。以下是我将*.thepcspy.com(我的域)路由到 的方式127.0.0.1

echo address=/thepcspy.com/127.0.0.1/ | sudo tee -a /etc/NetworkManager/dnsmasq.d/local
sudo service network-manager restart

然后测试:

$ nslookup thepcspy.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Name:   thepcspy.com
Address: 127.0.0.1

以及一个子域名:

$ nslookup testing.thepcspy.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   testing.thepcspy.com
Address: 109.74.193.118

要恢复这些更改,只需编辑(或删除)/etc/NetworkManager/dnsmasq.d/local并重新启动network-manager

相关内容