将完整的TLD(例如* .dev)路由到127.0.0.1
出于开发目的,我希望将.dev TLD的所有DNS请求转发到我自己的PC。
hosts文件不够用。 我使用多个域以及多个子域。 我必须为每个组合添加一行。
我已经读过像DNSmasq这样的DNS转发器可以用来完成这项工作(例如,如此处所述 )。 此软件也已安装在Ubuntu 12.10上。
问题是我没有看到我应该如何以及在哪里配置DNSmasq,即我应该把这行放在哪里:
address=/dev/127.0.0.1
默认情况下,Ubuntu 12.04和12.10中未安装完整的独立dnsmasq(DHCP和DNS服务器),但默认情况下在Ubuntu Desktop 12.04和12.10中安装了名为dnsmasq-base的软件包。 dnsmasq-base软件包包含dnsmasq二进制文件,由NetworkManager使用。
要做你想做的事,你需要使用dnsmasq作为缓存DNS服务器。 你需要:
- 安装dnsmasq sudo apt-get install dnsmasq
- 更改您的网络设置,以便您的计算机使用自己作为DNS服务器。
- 对配置文件进行更改:
使用以下内容创建/etc/dnsmasq.d/dev-tld
:
local=/dev/ address=/dev/127.0.0.5
第一个命令说*.dev
请求无法转发到您的真实DNS服务器。 第二个说*.dev
解析为127.0.0.5
,这是localhost。
- 重新启动dnsmasq服务(不是网络管理器)
在Ubuntu 12.10或更高版本中,您可以使用NetworkManager运行的dnsmasq执行此操作。
-
创建目录
mkdir /etc/NetworkManager/dnsmasq.d
如果它尚不存在)。sudo mkdir /etc/NetworkManager/dnsmasq.d
-
/etc/NetworkManager/dnsmasq.d/dev-tld
下行放入/etc/NetworkManager/dnsmasq.d/dev-tld
。address=/dev/127.0.0.1
-
(Ubuntu 12.10)重新启动NetworkManager。
sudo service network-manager restart
-
(Ubuntu> 13.04)重启Dnsmasq。
sudo service dnsmasq restart
-
享受真棒。
以下工作在Ubuntu 16.04中为我工作:
-
安装
dnsmasq
sudo apt-get -y install dnsmasq
-
编辑
dnsmasq.conf
文件:sudo nano /etc/dnsmasq.conf
-
添加命令:
address=/dev/127.0.0.1
对于外卡(*),您可以使用点(。)然后使用dnsmasq将
WHATEWER_YOU_PUT_HERE.yourmachine.yourdomain
解析为同一个ip。 例如,address=/.localhost.dev/127.0.0.1
-
重启dnsmasq服务:
sudo /etc/init.d/dnsmasq restart