如何在 OpenVPN 上使用 dnsmasq 自定义主机名?

如何在 OpenVPN 上使用 dnsmasq 自定义主机名?

我正在尝试设置 dnsmasq,以便我可以在 OpenVPN 服务器上创建自定义主机名。这样当机器连接时,主机名将指向位于 OpenVPN 主机或网络上的资源。

例如服务器上的 /etc/hosts 文件如下所示:

db.private.resource 10.8.0.1
app.private.resource 10.8.0.1

让客户端使用隧道进行 DNS 查找非常简单。在 server.conf 文件中,我有:

push "dhcp-option DNS 10.8.0.1"

在客户端配置中我有:

dhcp-option DNS 10.8.0.1

我可以通过运行以下命令来验证客户端在连接时是否使用 OpenVPN 作为其 DNS:

# dnsmasq --no-daemon -q

在命令行上,从客户端执行 ping 操作以验证客户端确实通过隧道向 OpenVPN 服务器发送 DNS 查找请求,以及 OpenVPN 服务器确实在处理这些请求。

问题是,当我尝试 pingdb.private.resource我定义的主机时,我得到:

dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN

来自 dnsmasq 的输出。无论出于什么原因,它似乎都没有返回我在 /etc/hosts 中定义的值。令我惊讶的是,即使我使用添加的地址参数运行 dnsmasq,我仍然会得到上述结果。

# dnsmasq --no-daemon -q --address=/db.private.resource/10.8.0.1/

dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN

从这个结果来看,有什么地方看上去不对吗?

答案1

首先安装 dnsmasq: sudo apt-get update; sudo apt-get install dnsmasq

服务器

在服务器上,将此行添加到/etc/dnsmasq.conf

...
expand-hosts #Uses /etc/hosts on this machine for resolution
bind-interfaces #will bind on all available interfaces, including the openvpn one
listen-address=10.8.0.1 # i noticed recently that i also need to add this line, because by default it will only listen on 10.9.0.1 which isnt pushed to my clients
...

然后,使用您的主机名编辑/etc/hosts文件。最后,运行sudo /etc/init.d/dnsmasq restart

如果您由于某种原因不想编辑/etc/hosts,您可以在 创建一个新文件/etc/dnsmasq.conf.d/addresses.conf,并用您的地址填充它:

address=/umomma.com/69.69.69.69
address=/oo.umomma.com/69.69.69.60
address=/ooooo.umomma.com/69.69.69.62
address=/ooooooooo.umomma.com/69.69.69.65

对于第二种方法,您还需要进行sudo /etc/init.d/dnsmasq restart追赶。

客户

OpenVPN 服务器通常会自行分配 IP 地址10.8.0.110.9.0.1。因此,在客户端上,我们要确保首先查询这些名称服务器。

目前,至少我/etc/resolv.conf在客户端上编辑了,我将内容添加nameserver 10.8.0.1到文件的第一行。因此,在客户端上,我的完整 resolve.conf 如下所示:

nameserver 10.8.0.1
nameserver 8.8.8.8
nameserver 8.8.8.8
nameserver 127.0.1.1

为了使这些更改在重启时生效,请在 处进行相同的更改/etc/resolvconf/resolv.conf.d/head

sudo /etc/init.d/dnsmasq restart在服务器上添加任何主机时记得运行

相关内容