Частният DNS работи във VPC, но не през VPN
Частно име, което се разрешава в EC2, но не през VPN, е проблем на пътя на resolver-а. Прочетете формата на отказа, преди да редактирате записа на зоната.
Частно име се разрешава от EC2 инстанция, но не от лаптоп, свързан през VPN, а зоната изглежда правилна в конзолата. Инстинктът е да редактирате записа, което почти никога не е проблемът. Записът отговаря на някого; просто не отговаря на вашия лаптоп. Разликата между двата викащи е кой resolver питат и дали този resolver има поддържан път към DNS изгледа във VPC.
Започвам с доказването, че записът съществува, и прекарвам останалото време по пътя на заявката. Това са отделни системи и се провалят по различен начин.
Прочетете формата на отказа, преди да промените каквото и да е
Три изхода означават три различни неща, а една заявка ги различава: изпълнете dig за името срещу resolver-а, който клиентът наистина използва.
| What you see | What it usually means | First thing to check |
|---|---|---|
| SERVFAIL, or a timeout after several seconds | No path to the resolver, or the resolver cannot reach AWS | Route to the endpoint and the security policy on port 53 |
| NXDOMAIN from a resolver that did answer | The resolver replied, but the zone is not in its view | Zone association or the forwarding rule for that namespace |
| A public address for an internal name | Split DNS is not in effect for this client | Which resolver the client is configured to use |
Изтичането на време е твърдение за мрежата. NXDOMAIN е твърдение за DNS изгледа. Публичният отговор е твърдение за политиката. Редактиране на запис на зона, докато има изтичане на време, изхвърля единственото полезно доказателство по случая.
Защо адресът плюс две във VPC не е отдалечен resolver
Адресът CIDR плюс две е локална услуга за ресурсите във VPC. AWS документира, че препращането на заявки от локални мрежи или от DNS сървърите на друг VPC директно към този адрес не се поддържа и може да дава нестабилни резултати.
Това не означава, че експеримент никога не изглежда да работи. Означава, че поведението не е договор, който може да се сложи в скрипт за поддръжка. Поддържаната посока е входящ Resolver endpoint: двойка адреси във вашия VPC, достъпна от мрежата, която контролирате, която приема заявки, идващи отвън AWS.
Изградете пътя в реда, в който се проваля чисто
Трябва да съществуват три скока и всеки има свой начин да се провали.
VPN client -> approved DNS forwarder
forwarder -> forwarding rule for internal.example
forwarding rule -> Resolver inbound endpoint addressesПрепращачът се нуждае от маршрут към адресите на endpoint-а през VPN, а обратният път също трябва да работи. За класически DNS на порт 53 endpoint-ът отговаря през UDP и TCP, затова и двата протокола трябва да са разрешени и двата трябва да оцелеят при всяка проверка на състоянието по пътя.
След това проверете DNS изгледа отделно. Частна хоствана зона се вижда само от VPC-тата, с които е свързана, или чрез умишлено споразумение за споделяне. Достъпният endpoint сам по себе си не прави всяка частна зона разрешима в нейния контекст на разрешаване.
Изходящ endpoint обслужва противоположната посока и няма да отговори на заявка, идваща от вашия лаптоп.
Проверете от двата края
Питайте от клиента към препращача, после от препращача към endpoint-а. Ако клиентът се провали, докато препращачът успява, разликата е между тези два.
Ако и двата се провалят, погледнете политиката за сигурност на endpoint-а и изходния адрес, който той наистина вижда. Препращач зад NAT представя NAT адреса вместо VPN адреса на лаптопа и само тази разлика е достатъчна, за да отхвърли заявката. Ако и двата успеят, но приложението продължава да се проваля, възможно е приложението да използва друг resolver от този, който сте тествали.
Дръжте публичните и частните пространства от имена умишлено разделени. Split DNS е политика, която конфигурирате, а не страничен ефект от това, че едно търсене случайно връща данни.
Какво не бих направил
Не бих добавил NAT правило, което направи едно търсене да работи, и не бих го нарекъл дизайн.
Не бих насочил всеки отдалечен клиент към адреса плюс две само защото един тест веднъж върна запис. И не бих разширил политиката за сигурност на endpoint-а към целия VPN пул, когато достъп е нужен само на един препращач. Ако организацията вече поддържа одобрен препращач във VPC, прочетете първо този дизайн, защото вторият endpoint, който добавите, е този, който никой не документира.