我需要为某个域的所有子域添加一条规则。我想象它应该是这样的:
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
。