AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1032476
Accepted
orestis
orestis
Asked: 2018-05-06 09:06:56 +0800 CST2018-05-06 09:06:56 +0800 CST 2018-05-06 09:06:56 +0800 CST

连接到 OpenVPN 时 Ubuntu 18.04 没有 DNS 解析

  • 772

当我通过 Gnome Network-manager 连接到 VPN 网络时,我失去了 DNS 解析,实际上,我无法访问 VPN 网络内部或外部的资源。

当我使用 Ubuntu 16.04 并使用 VPN 时,“ /etc/resolv.conf/”文件将包含我连接的 (VPN) 网络的 DNS 服务器。现在它总是包含以下条目:

nameserver 127.0.0.53
search myprovider.com

据我了解127.0.0.53,是system-resolved.

我怀疑这是一个错误,因为 VPN 在 Ubuntu 16.04 上运行良好。当我使用 VPN 服务时,有什么方法可以设置我的网络的 DNS 服务器?

更新:

我尝试使用帖子末尾附加的配置文件连接到 OpenVPN 网络,但出现以下错误:

 Authenticate/Decrypt packet error: cipher final failed

我已经验证服务器使用 lzo 压缩并且我也启用了它。连接保持活跃,但我无法导航到 VPN 内部或外部的任何页面。

在下面列出的配置文件中,我已经包含了回复中发布的解决方案

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre
dns openvpn systemd-resolved
  • 7 7 个回答
  • 160498 Views

7 个回答

  • Voted
  1. Qlimax
    2018-05-15T10:09:43+08:002018-05-15T10:09:43+08:00

    问题

    该文件/etc/resolv.conf不会被/etc/openvpn/update-resolv-conf脚本更新,因为resolvconf默认情况下未安装在 ubuntu 18.04 上。

    事实上,该脚本的第一行之一检查/sbin/resolvconf可执行文件:

    [ -x /sbin/resolvconf ] || exit 0
    

    安装 resolvconf viaapt-get不是解决方案,因为/etc/openvpn/update-resolv-conf脚本会/etc/resolv.conf使用推送的 DNS 条目更新文件,但 tun 设备似乎忽略了它。

    解决方案

    1. Ubuntu 18.04 使用systemd-resolved,所以你所要做的就是为systemd-resolvedvia安装 openvpn 帮助脚本

      sudo apt install openvpn-systemd-resolved
      

      或使用这些 GitHub 说明

    2. 更新您的config.ovpn文件添加以下行:

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      

      /etc/openvpn/update-resolv-conf那而不是在conf中上下添加。

    3. 为防止 DNS 泄漏,您应该将此行添加到config.ovpn文件末尾(根据此 systemd 问题注释):

      dhcp-option DOMAIN-ROUTE .
      
    • 122
  2. Best Answer
    Andy Turfer
    2018-05-16T14:23:43+08:002018-05-16T14:23:43+08:00

    我在这篇博文中找到了解决方案。虽然提到了两种解决方案,但我更喜欢使用第二种解决方案,因为这意味着我的 DNS 是由 OpenVPN 服务器设置的(第一种解决方案意味着无论我是否连接到 OpenVPN 服务器,我都使用相同的 DNS 服务器)。

    简而言之:

    • sudo mkdir -p /etc/openvpn/scripts
    • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
    • sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved

    然后通过将 up/down 脚本更改为:编辑您的 OpenVPN 客户端文件(例如 client.ovpn):

    script-security 2
    # up /etc/openvpn/update-resolv-conf
    # down /etc/openvpn/update-resolv-conf
    up /etc/openvpn/scripts/update-systemd-resolved
    down /etc/openvpn/scripts/update-systemd-resolved
    

    (我已经注释掉了原来的向上/向下设置)。

    • 49
  3. Max
    2018-09-16T11:32:04+08:002018-09-16T11:32:04+08:00

    实际上,这个问题有一个更简单的解决方案。问题在于 DNS 流量以及 Ubuntu 18 如何管理它。默认情况下,IP 转发被禁用,这是 OpenVPN 提供正确网络所需要的。您所要做的就是运行以下命令:

    sudo nano /etc/sysctl.conf
    

    打开此文件后,查找包含net.ipv4.ip_forward. 如果此行已注释,请删除该行前面的 # 符号(如果未注释,则您有另一个问题)。保存文件,然后重新启动您的 OpenVPN 服务器实例。

    此修复不需要在升级到 Ubuntu 18 后对客户端或 OpenVPN 代码进行任何修改。经过测试并确认可以正常工作。

    但是,这显然需要您可以管理服务器。不幸的是,对于许多刚刚使用 18.04 连接到由其他人管理的 OpenVPN 服务器的人来说,存在这个错误......

    • 7
  4. vskubriev
    2018-09-14T06:38:19+08:002018-09-14T06:38:19+08:00

    于 2018 年 9 月 13 日在 Ubuntu 18.04 上测试

    还有另一个有用的命令可以通过命令行设置您需要的内容。您可以使用命令行和 GUI 控制您的 VPN 连接。

    sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --
    

    ifname --默认情况下是必需的,但不影响任何内容

    sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1
    sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com
    sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes
    

    never-default不应使用远程网关作为默认路由

    还有更感兴趣的最后润色:

    nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'
    

    之后,您可以使用 GUI 控制 vpn 或使用以下命令:

    sudo nmcli --ask connection up la.vpn.contoso.com
    sudo nmcli connection down la.vpn.contoso.com
    
    • 4
  5. Michael Opdenacker
    2018-05-11T06:48:11+08:002018-05-11T06:48:11+08:00

    我也受到影响。就我而言,我正在使用带有内部名称服务器(位于 VPN 内部)的 OpenVPN。这一直有效到 Ubuntu 17.10(带有hosts: files dnsin /etc/nsswitch.conf)。

    /etc/resolv.conf由 openvpn 脚本正确更新(通过调用/etc/openvpn/update-resolv-confopenvpn 客户端配置文件)。

    但是,VPN 内部主机的名称解析不再起作用(或者至少偶尔...我猜本地 DNS 缓存正在挑选名称,但经过了相当长的时间)。

    似乎有帮助,甚至解决问题(尽管现在说还为时过早)是安装以下软件包:

    sudo apt install openvpn-systemd-resolved
    
    • 1
  6. Walf
    2020-08-06T17:54:09+08:002020-08-06T17:54:09+08:00

    如果您的系统正在使用 NetworkManager,那么您可能只需要更改连接的 DNS 优先级,按照这个答案:

    nmcli -p connection modify VPN_CONNECTION_NAME ipv4.dns-priority -1
    

    就我而言,DNS 正在更新,但由于现有的 DNS 服务器具有优先权而被忽略。您可能需要 root/ sudo。如果这不起作用,请尝试ipv6.dns-priority.

    • 1
  7. Tomislav Nakic-Alfirevic
    2021-10-18T02:34:51+08:002021-10-18T02:34:51+08:00

    所提出的面向 CLI(非 NetworkManager)的解决方案都不适合我(我什至没有up和down行myconfig.ovpn)。

    但是,我发现 NetworkManager VPN 似乎又可以工作了(一两年前它还没有工作,这就是我当时切换到 openvpn CLI 的原因)。我没有以任何方式调整它:只是尝试使用适当的凭据激活它。

    • 0

相关问题

  • 将服务器从 DHCP 切换到静态 IP

  • “.local”有什么作用?

  • 如何在学校网络上配置域名[关闭]

  • 更改DNS IP的正确方法是什么?

  • 如何清除 DNS 缓存?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve