我用静态密钥设置了一个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)
我不是专家,但通过阅读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 邮件列表的脚本- 权威指南。
归档时间: |
|
查看次数: |
81359 次 |
最近记录: |