Это решено.
Проблема заключалась в том, что серверу OpenVPN не удалось отправить конфигурацию DNS, и хотя имя хоста конечной точки API не было разрешено.
Ниже мы опишемосновные шаги и проблемы, которым мы следовали, чтобы решить эту проблему.
1. Проблема DNS VPC
Независимо от проблемы переадресации DNS OpenVPN
клиенту, мы хотели использовать DNS VPC вручную, я имею в виду настройку его самостоятельно в файле конфигурации /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 Проблемы
Мы столкнулись с некоторыми проблемами, когда клиент не мог обновляться сервером или самим клиентом. конфиг DNS. Файл /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
С уважением,
Rshad