我已经在私有网络上设置了一个 OpenVPN 服务器,以及一个 DNS 服务器来解析私有 DNS 地址。
在 OpenVPN 服务器上,我在客户端 DNS 配置中设置了私有 DNS 地址。我有三个客户端,分别运行 Android、Ubuntu 和 Raspbian。
Android 和 Ubuntu 客户端似乎使用私有服务器;至少我可以解析私人名称。但是,这在 Raspbian 客户端上不起作用:无法解析私有地址,并nslookup
返回来自客户端 LAN 上的 DNS 服务器的响应,而不是 VPN 的远程端。
当我在交互模式下运行 nslookup 并显式设置服务器时,查询被解析,这告诉我 DNS 查询可以通过 VPN 而不会被阻止。问题似乎是客户端正在查询错误的 DNS 服务器。
这是 Raspbian 客户端的配置:
client
remote 'vpn.example.org'
ca 'ca.pem'
cert 'cert.pem'
key 'key.pem'
cipher AES-128-CBC
dev tun
proto udp
verify-x509-name 'vpn.example.org'
tls-auth 'hmackey.pem' 1
auth SHA256
nobind
auth-nocache
script-security 2
persist-key
persist-tun
其他两个客户端是使用 GUI 工具配置的,因此我无法提供可靠的配置文件(他们提供 exp
我是否需要在客户端设置任何内容才能让客户端使用 VPN 上的 DNS 服务器?
根据serverfault 上的这个答案,一些 Linux 版本需要在客户端配置中增加两行,以便在 VPN 启动或关闭时更新解析器配置:
此外,内部 DNS 服务器需要配置为接受来自 VPN 的递归查询。默认情况下,某些服务器(例如 BIND9)只允许来自 DNS 服务器自己子网的查询。
通过这两个更改,我现在可以解析私有名称。