我使用静态密钥设置了 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
一定会成功的..