将完整的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执行此操作。

  1. 创建目录mkdir /etc/NetworkManager/dnsmasq.d如果它尚不存在)。

     sudo mkdir /etc/NetworkManager/dnsmasq.d 
  2. /etc/NetworkManager/dnsmasq.d/dev-tld下行放入/etc/NetworkManager/dnsmasq.d/dev-tld

     address=/dev/127.0.0.1 
  3. (Ubuntu 12.10)重新启动NetworkManager。

     sudo service network-manager restart 
  4. (Ubuntu> 13.04)重启Dnsmasq。

     sudo service dnsmasq restart 
  5. 享受真棒。

在此处输入图像描述

以下工作在Ubuntu 16.04中为我工作:

  1. 安装dnsmasq

     sudo apt-get -y install dnsmasq 
  2. 编辑dnsmasq.conf文件:

     sudo nano /etc/dnsmasq.conf 
  3. 添加命令:

     address=/dev/127.0.0.1 

    对于外卡(*),您可以使用点(。)然后使用dnsmasq将WHATEWER_YOU_PUT_HERE.yourmachine.yourdomain解析为同一个ip。 例如, address=/.localhost.dev/127.0.0.1

  4. 重启dnsmasq服务:

     sudo /etc/init.d/dnsmasq restart