将完整 TLD(例如 *.dev)路由至 127.0.0.1

将完整 TLD(例如 *.dev)路由至 127.0.0.1

出于开发目的,我希望所有对 .dev TLD 的 DNS 请求都转发到我自己的电脑。

hosts 文件不够用。我使用多个域名和多个子域名。我必须为每个组合添加一行。

我读到过像 DNSmasq 这样的 DNS 转发器可以用来完成这项工作(例如如这里所述)。另外,该软件已经安装在Ubuntu 12.10上。

问题是我不知道如何以及在何处配置 DNSmasq,即我应该将此行放在哪里:

address=/dev/127.0.0.1

答案1

在 Ubuntu 12.10 或更高版本中,您可以使用 NetworkManager 运行的 dnsmasq 执行此操作。

  1. mkdir /etc/NetworkManager/dnsmasq.d如果目录不存在,则创建该目录。

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. 将以下行放入/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. 享受这美妙的体验。

在此处输入图片描述

答案2

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.5localhost。

  • 重新启动 dnsmasq 服务(不是网络管理器)

答案3

刚刚安装了全新的 19.04,让我让它工作的唯一方法是禁用它systemd-resolved,而NetworkManager使用dnsmasqDNS。NetworkManager已内置支持dnsmasq并且dnsmasq-base默认安装包。

我将多个域指向不同的虚拟机,例如*.customerX.test192.168.33.10*.productY.test192.168.33.20等等。我不会*.dev再使用其他域,而是使用保留顶级域名

解决方案

  1. 禁用systemd-resolved

     sudo systemctl disable systemd-resolved.service
     sudo systemctl stop systemd-resolved.service
     sudo rm /etc/resolv.conf
    
  2. 编辑/etc/NetworkManager/NetworkManager.confdnsmasq用于 DNS。

     [main]
     dns=dnsmasq
    
  3. dnsmasq配置放入/etc/NetworkManager/dnsmasq.d/test-tld.conf

     address=/test/127.0.0.1
     address=/customerX.test/192.168.33.10
    
  4. 最后重新启动NetworkManager,这将生成新的/etc/resolv.conf

     sudo systemctl restart network-manager.service
    

答案4

以下操作在 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
    

相关内容