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

Siy*_*Ren 21 dns openvpn

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

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

dhcp-option DNS 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

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

push "dhcp-option DNS 8.8.8.8"
Run Code Online (Sandbox Code Playgroud)

两者都没有任何影响。

事实上,根据手册,

--dhcp-option 类型 [参数]

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

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

小智 9

在 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
Run Code Online (Sandbox Code Playgroud)


Flo*_*elf 5

我不是专家,但通过阅读man您的报价下方的页面:

--dhcp-option 类型 [参数]

...

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

foreign_option_{n} 下

foreign_option_{n}

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

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

--up cmd

在成功打开 TUN/TAP 设备后运行命令 cmd(pre--user UID 更改)。

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

例如Tunnelblick也通过利用这个脚本来做到这一点。

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