出于开发目的,我希望所有对 .dev TLD 的 DNS 请求都转发到我自己的电脑。
hosts 文件不够用。我使用多个域名和多个子域名。我必须为每个组合添加一行。
我读到过像 DNSmasq 这样的 DNS 转发器可以用来完成这项工作(例如如这里所述)。另外,该软件已经安装在Ubuntu 12.10上。
问题是我不知道如何以及在何处配置 DNSmasq,即我应该将此行放在哪里:
address=/dev/127.0.0.1
答案1
在 Ubuntu 12.10 或更高版本中,您可以使用 NetworkManager 运行的 dnsmasq 执行此操作。
mkdir /etc/NetworkManager/dnsmasq.d
如果目录不存在,则创建该目录。sudo mkdir /etc/NetworkManager/dnsmasq.d
将以下行放入
/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
享受这美妙的体验。
答案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.5
localhost。
- 重新启动 dnsmasq 服务(不是网络管理器)
答案3
刚刚安装了全新的 19.04,让我让它工作的唯一方法是禁用它systemd-resolved
,而NetworkManager
使用dnsmasq
DNS。NetworkManager
已内置支持dnsmasq
并且dnsmasq-base
默认安装包。
我将多个域指向不同的虚拟机,例如*.customerX.test
到192.168.33.10
和*.productY.test
到192.168.33.20
等等。我不会*.dev
再使用其他域,而是使用保留顶级域名。
解决方案
禁用
systemd-resolved
sudo systemctl disable systemd-resolved.service sudo systemctl stop systemd-resolved.service sudo rm /etc/resolv.conf
编辑
/etc/NetworkManager/NetworkManager.conf
以dnsmasq
用于 DNS。[main] dns=dnsmasq
将
dnsmasq
配置放入/etc/NetworkManager/dnsmasq.d/test-tld.conf
address=/test/127.0.0.1 address=/customerX.test/192.168.33.10
最后重新启动
NetworkManager
,这将生成新的/etc/resolv.conf
sudo systemctl restart network-manager.service
答案4
以下操作在 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