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


17

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

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

dhcp-option DNS 8.8.8.8

没有效果。我试图在服务器配置文件中添加此行

push "dhcp-option DNS 8.8.8.8"

都没有任何作用。

实际上,根据手册,

--dhcp选项类型[parm]

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

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


1
您应该提及您在OSX机器上使用的客户端。
FloHimself

2
@FloHimself:标准命令行实用程序openvpn
任思远

Answers:



5

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

--dhcp选项类型[parm]

...

请注意,如果通过--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设备(更改--UID之前)后,运行cmd命令。

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

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

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


iPhone呢?如果没有越狱,我想象没有bash或任何命令来自动更改DNS。
任思远

@SiyuanRen如果没有越狱,您可能不会在iPhone上使用命令行openvpn客户端...
FloHimself 2015年

官方的openvpn应用程序仅加载并运行一个文本配置文件。没有更多功能。
任思远

@SiyuanRen好吧,官方的openvpn应用程序不是此处讨论的命令行应用程序。
FloHimself,2015年

感觉就像是骇客。当我连接PPTP或L2TP时,“网络”首选项中有一个专用接口,其中只有IP和DNS。OpenVPN需要我更改其他接口的DNS设置吗?
任思远

4

我在Linux OS(服务器和客户端)上都遇到了相同的问题,并且解决了在缺少的服务器上安装dnsmasq的问题

所以我的步骤:

apt-get install dnsmasq

在server.conf中

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

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


-1

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

# put actual dns name here
dhcp-option DNS 10.11.12.13 

它肯定会工作..

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.