OpenVPN 上的 DNS 解析不一致

OpenVPN 上的 DNS 解析不一致

这是我的 OpenVPN 服务器配置:

port 1194
proto udp

dev tun

ca ca.crt
cert server.crt
key server.key
dh dh4096.pem

topology subnet

server 10.224.127.0 255.255.255.0 # AKA 10.224.127.0/24

ifconfig-pool-persist ipp.txt

push "route 10.0.0.0 255.0.0.0"
push "dhcp-option DNS 10.0.9.102"
push "dhcp-option DNS 10.0.8.186"
push "dhcp-option DOMAIN dc1.lam.myname.net aws.myname.net myname.local"

keepalive 10 120

comp-lzo

max-clients 10

user nobody
group nobody

persist-key
persist-tun

status openvpn-status.log

verb 3

cipher AES-256-CBC
auth SHA256
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 TLS-DHE-RSA-WITH-AES-256-CBC-SHA256 TLS-DHE-RSA-WITH-AES-128-GCM-SHA256 TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 TLS-DHE-RSA-WITH-AES-256-CBC-SHA TLS-DHE-RSA-WITH_AES-128-CBC-SHA

client-cert-not-required
username-as-common-name
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login

我基本上想做以下事情:

  • 使用我们的内部 DNS 服务器进行名称解析。
  • 分配范围内的客户端 IP 地址10.224.127.0/24
  • 仅路由通过10.0.0.0/8VPN 链路的流量。
  • 使用一些搜索域进行 DNS 查找。
  • 通用强化和良好的加密。
  • 使用 PAM 登录。

因此,它“基本上”可以工作,但有一些注意事项。VPN 服务器上线后,DNS 解析只能工作几秒钟,然后停止工作。无论 DNS 是否正常工作,我都可以很好地路由 TCP 数据包。

为什么 DNS 仅在连接的前几秒内有效?我做错了什么?

我计划使用的客户端是 Linux 和 OSX。我如何才能将 DNS 解析推送给它们?

答案1

由于 OpenVPN 的 DNS 推送选项仅适用于 Windows,因此我假设这是您的 VPN 客户端运行的操作系统。

这可能是因为(正如@HåkanLindqvist 提到的)某些软件修改了您的 DNS 设置。这是安全相关软件(如防病毒软件)的常见功能,因为虚假 DNS 服务器可用于网络钓鱼攻击。您必须自己找到该应用程序,如果可能,请从 OpenVPN 运行一个脚本,该脚本将在连接时禁用 DNS 保护功能。

此外,如果您使用 PAM,则需要提供来自用户空间的凭据,因此 OpenVPN 无法作为 Windows 服务运行。您是否仅运行 OpenVPN GUI 或命令行?您是否以提升的权限启动它?

如果你想在 UNIX 客户端下使用服务器提供的 DNS 地址,你需要在连接时从 OpenVPN 运行一个脚本,该脚本读取 OpenVPN 环境并将收到的值放入/etc/resolv.conf。请查看手册以供参考。另一个选项是安装域名系统在客户端本地提供--server /LOCAL_DOMAIN/LOCAL_DNS_IP选项,这些选项将仅为所选域中的主机提供通过 VPN 隧道的名称解析。

相关内容