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


29

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

主机文件不足。我使用多个域以及多个子域。我必须为每个组合添加一行。

我已经读过可以使用DNS转发器(例如DNSmasq)来完成这项工作(例如,如此处所述)。而且该软件已经安装在Ubuntu 12.10上。

问题是我看不到如何以及在哪里配置DNSmasq,即我应该在哪里放置此行:

address=/dev/127.0.0.1

1
您可能不想像.devGoogle那样使用它。我仍在研究他们将使用它的目的以及他们是否打算让普通人连接到它,或者只是打算与员工建立连接,但是如果是前者,则您可能不希望重定向所有访问权限,除非这纯粹是一个测试框,永远不会连接到外部主机。
trysis

Answers:


18

在Ubuntu 12.04和12.10中默认未安装完整的独立dnsmasq(DHCP和DNS服务器),但在Ubuntu Desktop 12.04和12.10中默认安装了名为dnsmasq-base的软件包。基于dnsmasq的程序包包含dnsmasq二进制文件,并由NetworkManager使用。

要执行您想要的操作,您将需要使用dnsmasq作为缓存DNS服务器。你需要:

  • 安装dnsmasq sudo apt-get安装dnsmasq
  • 更改您的网络设置,以便您的计算机将自身用作dns服务器。
  • 对配置文件进行更改:

/etc/dnsmasq.d/dev-tld使用以下内容创建:

local=/dev/

address=/dev/127.0.0.5

第一条命令说*.dev请求不能转发到您的真实DNS服务器。第二*.dev句话说解析到127.0.0.5哪个是本地主机。

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

谢谢!我知道目前存在的DNSMasq并不是真正的交易,这对我非常有帮助。在安装完完整的软件包并按照我描述的方式进行配置后,我才开始使用它。:)
Roel van Duijnhoven

1
对于最近的桌面安装,我希望使用其他答案。对于最新的桌面安装,您将以这种方式运行两个dnsmasq实例。您的答案在非NetworkManager设置,较旧的设置(不使用dnsmasq)甚至服务器安装中可能非常有用!
gertvdijk

是的,自Ubuntu 12.10起,其他答案是最好的。
BenjaminRH

21

在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. 享受真棒。

在此处输入图片说明


1
感谢AbrahamVanHelpsing提供了有关如何执行此操作的arch Wiki链接
jrg 2012年

遵循您的步骤后,仍然可以在执行ping操作后看到“未知主机”。我是否需要在其他地方配置/启用DNSMasq?还是以其他方式配置我的网络属性?谢谢!
Roel van Duijnhoven,2012年

有趣。对我来说很好。
jrg 2012年

啊,@ RoelvanDuijnhoven-您正在运行12.10还是12.04?在12.10上对我来说效果很好。
jrg 2012年

我正在运行12.10。但我确实需要提及的是,在这里提出问题之前,我曾尝试更改一些配置文件。这些更改可能会减轻您的解决方案。哈维尔·里维拉(Javier Rivera)的解决方案成功了!
Roel van Duijnhoven

1

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

1

刚安装了新的19.04,并且我无法正常运行的唯一方法是禁用systemd-resolvedNetworkManager使用dnsmasqDNS。NetworkManager已建成的支持dnsmasqdnsmasq-base包被默认安装。

我将多个域指向不同的VM,例如*.customerX.testto 192.168.33.10*.productY.testto 192.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
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.