本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排除 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查询。
解决方案
-
在 Open VPN 配置文件的第一行添加以下指令,以确保所有DNS查询都发送到VPN隧道。
dhcp-option DOMAIN-ROUTE .
-
使用 systemd-resolved 提供的存根解析程序。要确保这一点,请通过在系统上运行以下命令将符号链接
/etc/resolv.conf
链接到/run/systemd/resolve/stub-resolv.conf
。sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
-
(可选)如果您不希望 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服务器是否已配置且运行正常。
-
确保日志中存在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终端节点。
-
通过运行以下命令确保已安装
resolvconf
软件包。sudo apt list resolvconf
输出应返回以下内容。
Listing... Done resolvconf/bionic-updates,now 1.79ubuntu10.18.04.3 all [installed]
如果未安装,请使用以下命令进行安装。
sudo apt install resolvconf
-
在文本编辑器中打开客户端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名称” 的解决方案。