OpenVPN无法解决HTTP / s请求-连接到授权VPN时无法到达AWS Private API Gateway的终端节点

时间:2019-10-21 12:25:27

标签: amazon-web-services aws-api-gateway endpoint openvpn

OpenVPN无法正确解析HTTP / s。

我创建了一个私有API网关,我想通过在execute-api端点中配置的私有DNS访问该私有DNS,该端点是在与API网关相同的VPC中创建的。

我可以从在同一VPC中创建的其他资源访问它。但是我希望我的客户也可以访问它,只连接到我的VPN OpenVPN server,但他们却不能。

但是OpenVPN server可以访问API,但是客户端不能访问。

我认为这里失败的原因是,OpenVPN Server无法像SSH连接那样正确重定向HTTP / s请求。

对于SSH连接,VPN运行良好。

这可能是由于缺少某些配置引起的。在OpenVPN服务器或客户端中。

有什么想法吗?

感谢任何帮助。

亲切的问候,

Rshad

1 个答案:

答案 0 :(得分:0)

问题解决了。

问题是OpenVPN服务器无法推送DNS配置,尽管API端点主机名未解析。

下面,我们描述解决此问题所遵循的基本步骤和问题。

1。 VPC DNS问题

不管将OpenVPN DNS转发到客户端的问题是什么,我们都希望手动使用VPC DNS,我的意思是自己在配置文件/etc/resolv.conf中进行如下设置:

nameserver <VPC DNS>
<default interface>

我们尝试设置与我们的VPC相关联的DNS,该DNS由字段IPv4 CIDR表示,我们将其视为10.0.0.0。由于我们分配了无效的DNS,因此无法尝试使用此DNS。经过更多调查,我们发现a VPC环境中提供的DNS服务器是VPC网络范围的基础加上2,因此,它将是=> 10.0.0.2,或者我们可以使用通用的{ {1}}。

只是提醒


>(包括0到255),其中一个是网络地址(.0),另一个是网络广播地址(.255)。

这样,如果我们检查客户端是否可以识别DNS,则运行:

169.254.169.253

我们还为API端点主机名运行vagrant@manager:~$ nslookup 172.*.*.2 2.0.31.172.in-addr.arpa name = ip-172-*-*-2.us-east-2.compute.internal. Authoritative answers can be found from: vagrant@manager:~$ ,以检查返回的IP。在这种情况下,它应该返回3个IP,对于与端点相关联的每个子网,该IP返回1。

dig

2。将DNS转发到OpenVPN客户端

为此,我们必须在服务器配置文件中添加以下几行。

vagrant@manager:~$ dig pwcc7wokgi.execute-api.us-east-2.amazonaws.com

; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> pwcc7wokgi.execute-api.us-east-2.amazonaws.com        
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17511
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:
;pwcc7wokgi.execute-api.us-east-2.amazonaws.com.        IN A

;; ANSWER SECTION:pwcc7wokgi.execute-api.us-east-2.amazonaws.com. 4 IN CNAME 
execute-api.us-east-2.amazonaws.com. 4 IN A     172.*.*.*
execute-api.us-east-2.amazonaws.com. 4 IN A     172.*.*.*
execute-api.us-east-2.amazonaws.com. 4 IN A     172.*.*.*

;; Query time: 116 msec;; SERVER: 169.254.169.253#53(169.254.169.253);; WHEN: Tue Oct 22 17:04:35 UTC 2019
;; MSG SIZE  rcvd: 137

vagrant@manager:~$

第一行不仅在DNS转发的情况下是必要的,而且还重定向来自代理的所有流量以通过服务器。

带有push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 169.254.169.253" push "dhcp-option DNS 172.*.*.2" 的行对应于我们要添加到客户端的DNS,其中1个就足够了。

2.1问题

当客户端无法通过服务器或客户端本身进行更新时,我们遇到了一些问题。 DNS配置。文件dhcp-option DNS始终被默认值覆盖:

/etc/resolv.conf

这不是我们的情况。经过一些调试后,我们发现:

  1. 我们没有安装nameserver 127.0.0.53 库,因为它在转发DNS时对resolveconf至关重要。 OpenVPN使用两个配置文件,该文件使用脚本{{ 1}}可以在连接VPN或从VPN断开连接时覆盖文件OpenVPN

在客户端配置中。文件

/sbin/resolveconf
  1. /etc/resolv.conf也可以使用默认值-script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf 覆盖dnsmasq 在我们的情况下,我需要在连接VPN时禁用/etc/resolv.conf,以便OpenVPN无法转发DNS,因为Not a fixed case总是会覆盖它。

  2. 如果对dnsmasq进行了更改,建议重新启动/etc/resolv.conf


有效日志消息

network-manager

亲切的问候,

Rshad