排除 AWS 客户端与基于 Linux 的客户端的VPN连接故障 - AWS 客户端 VPN

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

排除 AWS 客户端与基于 Linux 的客户端的VPN连接故障

以下部分包含有关使用基于 Linux 客户端时可能遇到的日志记录和问题的信息。请确保您正在运行这些客户端的最新版本。

AWS 提供的客户端事件日志

AWS 提供的客户端将日志文件和配置文件存储在系统的以下位置:

/home/username/.config/AWSVPNClient/

AWS 提供的客户端守护程序进程将日志文件存储在系统的以下位置:

/var/log/aws-vpn-client/

例如,您可以检查以下日志文件以查找导致连接失败的向DNS上/向下脚本中的错误:

  • /var/log/aws-vpn-client/configure-dns-up.log

  • /var/log/aws-vpn-client/configure-dns-down.log

DNS查询转到默认域名服务器

问题

在某些情况下,建立VPN连接后,DNS查询仍将转到默认的系统域名服务器,而不是为客户端终端节点配置的域名服务器。VPN

原因

客户端与 systemd- resolved(一种在 Linux 系统上可用的服务)进行交互,后者是管理的中心部分。DNS它用于配置从客户端VPN端点推送的DNS服务器。之所以出现问题,是因为 systemd- resolved 没有为客户端端VPN点提供的DNS服务器设置最高优先级。相反,它会将服务器附加到在本地系统上配置的现有DNS服务器列表中。因此,原始DNS服务器可能仍具有最高优先级,因此可以用来解析DNS查询。

解决方案
  1. 在 Open VPN 配置文件的第一行添加以下指令,以确保所有DNS查询都发送到VPN隧道。

    dhcp-option DOMAIN-ROUTE .
  2. 使用 systemd-resolved 提供的存根解析程序。要确保这一点,请通过在系统上运行以下命令将符号链接 /etc/resolv.conf 链接到 /run/systemd/resolve/stub-resolv.conf

    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  3. (可选)如果您不希望 systemd 解析为代理DNS查询,而是希望将查询直接发送到真实DNS域名服务器,请改为使用符号链接到。/etc/resolv.conf /run/systemd/resolve/resolv.conf

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

    您可能需要执行此步骤以绕过系统解析的配置,例如用于DNS答案缓存、每接口DNS配置、DNSSec强制执行等。当您需要在连接时用私有记录覆盖公共DNS记录时,此选项特别有用VPN。例如,你的私有解析器可能有一个私有DNS解析器,里面有一个 www.example.com 的记录,该记录可以解析为私VPC有 IP。此选项可用于覆盖 www.example.com 的公共记录,该记录可解析为公有 IP。

打开VPN(命令行)

问题

由于DNS分辨率不起作用,连接无法正常运行。

原因

DNS服务器未在客户端VPN端点上配置,或者客户端软件不支持该服务器。

解决方案

使用以下步骤检查DNS服务器是否已配置且运行正常。

  1. 确保日志中存在DNS服务器条目。在以下示例中,DNS服务器192.168.0.2(在客户端VPN端点中配置)在最后一行返回。

    Mon Apr 15 21:26:55 2019 us=274574 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) WRRMon Apr 15 21:26:55 2019 us=276082 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 192.168.0.2,route-gateway 10.0.0.97,topology subnet,ping 1,ping-restart 20,auth-token,ifconfig 10.0.0.98 255.255.255.224,peer-id 0

    如果未指定DNS服务器,请要求您的客户端VPN管理员修改客户端VPN终端节点,并确保已为客户端VPN终端节点指定DNSVPCDNS服务器(例如服务器)。有关更多信息,请参阅《AWS Client VPN 管理员指南》中的客户端VPN终端节点

  2. 通过运行以下命令确保已安装 resolvconf 软件包。

    sudo apt list resolvconf

    输出应返回以下内容。

    Listing... Done resolvconf/bionic-updates,now 1.79ubuntu10.18.04.3 all [installed]

    如果未安装,请使用以下命令进行安装。

    sudo apt install resolvconf
  3. 在文本编辑器中打开客户端VPN配置文件(.ovpn 文件),然后添加以下几行。

    script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf

    检查日志以验证是否已调用 resolvconf 脚本。日志应包含类似于以下内容的行。

    Mon Apr 15 21:33:52 2019 us=795388 /etc/openvpn/update-resolv-conf tun0 1500 1552 10.0.0.98 255.255.255.224 init dhcp-option DNS 192.168.0.2

VPN通过网络管理器打开 (GUI)

问题

使用 Network Manager Open VPN 客户端时,连接失败并出现以下错误。

Apr 15 17:11:07 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep 5 2018 Apr 15 17:11:07 library versions: OpenSSL 1.1.0g 2 Nov 2017, LZO 2.08 Apr 15 17:11:07 RESOLVE: Cannot resolve host address: cvpn-endpoint-1234.prod.clientvpn.us-east-1.amazonaws.com:443 (Name or service not known) Apr 15 17:11:07 RESOLVE: Cannot resolve host Apr 15 17:11:07 Could not determine IPv4/IPv6 protocol
原因

未遵守 remote-random-hostname 标志,并且客户端无法使用 network-manager-gnome 软件包进行连接。

解决方案

请参阅《AWS Client VPN 管理员指南》中的 “无法解析客户端VPN端点DNS名称” 的解决方案。