OpenVPN cannot resolve the host

Bhost 介绍了一款 OpenVPN 安装神器,它使得建立和维护 OpenVPN 服务器的工作量大大减少。我在一台服务器试用后,觉得很满意,又把它装在另一台服务器上。可是没多久,其中一台的 OpenVPN 不工作了,具体症状是:能建立 OpenVPN 连接,但客户端无法解析域名,也就无法访问 Internet。虽然可以在客户端手动添加路由就可以让客户端联网,但我总想找到是什么原因让好端端的 OpenVPN 坏掉——印象中我没有修改 OpenVPN 任何设置,它就莫名其妙坏了。

可我找不出原因,只好把 OpenVPN 删除,又重新装了一遍,这下 OpenVPN 恢复正常。可是另一台的 OpenVPN 立马又坏了,症状相同。

我就纳闷了,难道两台服务器有关联,只能有一台正常工作?!躺上床把当天的操作过程细想了一下,突然想到我在安装一台服务器的 OpenVPN 时,会习惯性地清理一遍另一台服务器的 OpenVPN 失效用户,用的也是 OpenVPN 安装神奇内置的 Revoke existing user cert 选单。难道是 Revoke existing user cert 有问题造成了 OpenVPN 不工作?我专门就此测试了一下,似乎又不是这个原因。但严格地说,我也不是完全没有改动过 OpenVPN 服务器配置,尽管用的都是 OpenVPN 安装神器来维护,可能是 OpenVPN 安装神器的脚本有 bug。

【2016 年 1 月 18 日更新】之前将 OpenVPN 突然不能解析的原因归咎于 openvpn_install.sh 进行了一些添加删除用户的操作,今天看来不是很恰当。今天在 Windows 8.1 客户端与两台不同地域的 OpenVPN 服务器进行了多次连接测试,结果如下:

  • Windows 标准用户,利用 OpenVPN GUI 调用存放在 config 目录下的 ovpn 配置文件,连接任何一台服务器都有问题:能完成连接,但无法解析域名。
  • Windows 标准用户,右击 ovpn 文件,选单 Start OpenVPN on this config file,连接一台服务器无问题,连接另一台有问题:能完成连接,但无法解析域名。
  • Windows 管理员,利用 OpenVPN GUI 调用存放在 config 目录下的 ovpn 配置文件,连接任何一台服务器都无问题。虽然连接过程中有很多行显示“write UDPv4: No Route to Host (WSAEHOSTUNREACH) (code=10065) ”,但不影响最终成功连接。
  • Windows 管理员,右击 ovpn 文件,选单 Start OpenVPN on this config file,连接任何一台服务器都有问题:连接后能解析域名,但 IP 仍为原 IP——连了跟没连一样。

上述四种情况下都会有“write UDPv4: No Route to Host (WSAEHOSTUNREACH) (code=10065) ”出现。我曾尝试以此为线索解决无法解析域名的问题,有人说“changing the MTU value of the bridge interface to 1492”,可以在 Linux 下解决解析问题,但在 Windows 下仍无法解析。我觉得即使在 Linux 下能行,也是瞎猫碰到了死老鼠,真正原因未必是 MTU。

不管怎么说,Windows 下,即使你用管理员权限把 ovpn 放入了 config,OpenVPN 连接仍需要管理员权限。如果你不小心用普通用户连接成功,那是运气,换一台机子未必能复制这种运气。OpenVPN 对管理员权限的严重依赖也是我不喜欢的,在这种状况不改善之前,我不想过多使用 OpenVPN。

Leave a comment

Your email address will not be published. Required fields are marked *