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
答案 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}}。
只是提醒
这样,如果我们检查客户端是否可以识别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
这不是我们的情况。经过一些调试后,我们发现:
nameserver 127.0.0.53
库,因为它在转发DNS时对resolveconf
至关重要。 OpenVPN
使用两个配置文件,该文件使用脚本{{ 1}}可以在连接VPN或从VPN断开连接时覆盖文件OpenVPN
。在客户端配置中。文件
/sbin/resolveconf
/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
总是会覆盖它。
如果对dnsmasq
进行了更改,建议重新启动/etc/resolv.conf
。
有效日志消息
network-manager
亲切的问候,
Rshad