如何在openvpn中定义DNS服务器?

如何在openvpn中定义DNS服务器?

我使用静态密钥设置了 openvpn 服务器(由于国家网关处的 DPI,证书模式不可用),但连接后无法成功自动更改 DNS。我在互联网和 SE 上搜索,每个人都建议使用dhcp-option.

我尝试将此行添加到client.ovpn

dhcp-option DNS 8.8.8.8

没有效果。我尝试在服务器配置中添加这一行

push "dhcp-option DNS 8.8.8.8"

两者都没有任何效果。

事实上,根据说明书,

--dhcp-选项类型 [参数]

设置扩展 TAP-Win32 TCP/IP 属性,必须与 --ip-win32 动态或 --ip-win32 自适应一起使用。

但我的客户端是Mac机,服务器是Linux。有什么解决办法吗?

答案1

在 Linux 系统上,您需要运行外部脚本

这是文档: https://wiki.archlinux.org/index.php/OpenVPN#DNS

脚本位于这里或更新的 Linux 版本这里您可以通过在 openvpn 客户端配置中添加以下内容来调用它们:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

答案2

我不是专家,但通过阅读man您引用下面的页面:

--dhcp-选项类型 [参数]

...

请注意,如果--dhcp-option 通过 --push 推送到非 Windows 客户端,该选项将在调用 up 脚本之前保存在客户端环境中,名称为“foreign_option_{n}”。

及以下外国选项_{n}:

外国选项_{n}

通过 --push 推送到本身不支持它的客户端的选项,例如--非 Windows 系统上的 dhcp-option,将被记录到此环境变量序列之前 to --up 脚本执行

因此,建立连接后,命令行openvpn客户端不会自动修改 OSX 计算机上的 DNS 设置。但由于 DNS 选项保存到客户端环境中,您可以指定一个脚本,使用以下选项将推送的服务器附加到系统当前的 DNS 配置--up

--向上命令

成功打开 TUN/TAP 设备后运行命令 cmd(用户 UID 更改前)。

cmd 由脚本(或可执行程序)的路径组成,后面可以选择跟随参数。路径和参数可以是单引号或双引号和/或使用反斜杠转义,并且应该用一个或多个空格分隔。

例如隧道布里克也通过利用这个来做到这一点脚本

另一个解决方案可能是发布到 openvpn 邮件列表的脚本OS X 客户端的 DNS - 权威指南

答案3

我在 Linux 操作系统(服务器和客户端)上遇到了同样的问题,我解决了在丢失的服务器上安装 dnsmasq 的问题

所以我的步骤:

apt-get install dnsmasq

在服务器.conf中

push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"

我可以通过服务器IP连接和浏览域,与NetWorkManager连接并将DNS设置为自动

答案4

将此命令添加到您的客户端conf文件中。

# put actual dns name here
dhcp-option DNS 10.11.12.13 

一定会成功的..

相关内容