Это разрешилось.
Проблема заключалась в том, что сервер OpenVPN не смог отправить конфигурацию DNS, и хотя имя хоста конечной точки API не было разрешено.
Далее мы описываем основные шаги и проблемы, которые мы предприняли для решения этой проблемы.
<сильный>1. Проблема с DNS VPC
Независимо от вопроса проброса OpenVPN
DNS клиенту, мы хотели использовать VPC DNS вручную, я имею в виду установку его самостоятельно в конфигурационном файле /etc/resolv.conf
следующим образом:
nameserver <VPC DNS>
<default interface>
Мы попытались установить DNS, связанный с нашим VPC, который представлен полем IPv4 CIDR
, и давайте рассмотрим его как 10.0.0.0
. Попытка с этим DNS не сработала, так как мы назначаем недопустимый DNS. После небольшого исследования мы обнаружили, что DNS-сервер, предоставленный в среде VPC, является основой диапазона сети VPC плюс 2, поэтому это будет => 10.0.0.2
, или мы можем использовать общий 169.254.169.253
.
Просто напоминание
> (от 0 до 255 включительно), один из которых является сетевым адресом (.0), а другой — сетевым широковещательным адресом (.255).
Таким образом, если мы проверим, распознает ли наш клиент DNS, мы запустим:
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:~$
Мы также запускаем dig
для имени хоста конечной точки API, чтобы проверить возвращенные IP-адреса. В этом случае он должен вернуть 3 IP-адреса, по 1 для каждой подсети, которую мы связали с конечной точкой.
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:~$
<сильный>2. Перенаправление DNS на клиент OpenVPN
Для этого нам нужно добавить следующие строки в файл конфигурации сервера.
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 169.254.169.253"
push "dhcp-option DNS 172.*.*.2"
Первая строка необходима не только в случае проброса DNS, но и для перенаправления всего трафика, поступающего от агента, на сервер.
Строки с dhcp-option DNS
соответствуют DNS, которые мы хотим добавить к клиенту, 1 из них будет достаточно.
2.1 Проблемы
Мы столкнулись с некоторыми проблемами, когда клиент не мог обновиться сервером или самим клиентом. конфиг ДНС. файл /etc/resolv.conf
всегда перезаписывался значением по умолчанию:
nameserver 127.0.0.53
что не наш случай. после некоторой отладки мы обнаружили, что:
- У нас не была установлена библиотека
resolveconf
, так как она необходима для OpenVPN
при переадресации DNS. OpenVPN
использует два файла конфигурации, которые используют сценарий /sbin/resolveconf
для переопределения файла /etc/resolv.conf
при подключении или отключении от VPN, если это необходимо.
В конфиге клиента. файл
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
dnsmasq
также может переопределить /etc/resolv.conf
по умолчанию — Not a fixed case
В нашем случае мне нужно было отключить dnsmasq
при подключении к VPN, чтобы OpenVPN не мог перенаправлять DNS, так как /etc/resolv.conf
всегда перезаписывал его.
Рекомендуется перезапустить network-manager
, если в dnsmasq
вносятся изменения.
Действительное сообщение журнала
Tue Oct 22 17:17:16 2019 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 169.254.169.253,dhcp-option DNS 10.0.0.2,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
dhcp-option DNS 169.254.169.253
dhcp-option DNS 10.0.0.2
С уважением,
Ршад
person
Rshad
schedule
23.10.2019