aws-vpc-dns-investigation · v1.0.0 · 2026-08-11 · sha256 a47f45c6a2f2b044
aws-vpc-dns-investigation v1.0.0A
Immutable. This exact content never changes and is served at /api/v1/blob/a47f45c6a2f2b044.
--- name: aws-vpc-dns-investigation description: Use this skill when a name is not resolving as expected inside a VPC, or before applying a DNS control-plane change. Activate on symptoms such as NXDOMAIN or SERVFAIL from an EC2 instance, a hostname resolving to a public address when a private endpoint was expected, an AWS service endpoint that stopped resolving after a VPC endpoint or Route 53 change, an application reaching the wrong IP, resolution that works from one instance but not another, IPv6 or dualstack resolution differences, a suspected on-premises forwarding or hybrid DNS problem, or a request to check whether enabling private DNS, adding a Resolver rule, associating a private hosted zone, attaching DNS Firewall, or associating a Route 53 Profile would break anything. It drives the aws-vpc-dns-diagnostics MCP server to observe live resolution from inside the subnet and to simulate a proposed change before it is applied. metadata: author: ddericco version: "1.0.0" aws-devops-agent-skills.agent-types: "Chat tasks, Incident RCA" aws-devops-agent-skills.aws-services: "Amazon VPC, Amazon Route 53, Amazon EC2, AWS Systems Manager" aws-devops-agent-skills.technical-domains: "Networking" --- # Investigate VPC DNS Resolution Use the tools on the connected `aws-vpc-dns-diagnostics` MCP server. Start by calling `list_sops`, then `get_sop` with slug `Z-general-triage` to load the triage decision tree, and follow the runbook it returns. The runbooks are the authoritative procedure; this skill decides when to engage and in what order. ## Establish preconditions before interpreting any result Call `dns_probe_context` first. A resolution result means nothing until you know whether the VPC resolver is even answering. `enableDnsSupport` gates the entire VPC resolver. When it is false, neither the `.2` address nor the IPv6 resolver answers at all, and every downstream symptom is explained by that one attribute. The same call returns the instance's address family and the VPC DHCP option set's `domain-name-servers`, which is the resolver the VPC intends the instance to use. Load `A-resolver-disabled-precondition` when the attribute is false. ## Observe what actually resolves For a live symptom, call `dns_probe_compare` with the failing name. It runs an allowlisted probe set inside the instance through SSM and returns each resolver's answer alongside the resolver's own identity from `hostname.bind`, so you learn which resolver answered rather than assuming. The VPC DHCP resolver is added automatically, so a custom or hybrid resolver is compared against the VPC resolver without you looking it up first. Compare the instance's actual `/etc/resolv.conf` against the DHCP option set from `dns_probe_context`. A mismatch means the instance is not using the resolver the VPC hands out, which is a different root cause from a misconfigured rule. Judge answers by name category, not by whether resolvers agree. Two resolvers returning the same wrong answer is still a failure, and a divergence can be correct. Load `A-name-category-classification` before concluding. ## Validate a change before it is applied When the request is whether a change is safe, call `dns_simulate_effective_config` to get the VPC's effective configuration, which is the union of directly attached resources and anything inherited through an associated Route 53 Profile, with each construct tagged by its source. Then call `dns_simulate_change` with the proposed change to get a per-name impact report. This is symbolic and read-only; it predicts breakage without touching the control plane. Never recommend applying one of these changes without simulating it first. A broad FORWARD rule, enabling private DNS on an interface endpoint, or a Profile association can silently redirect names that currently resolve correctly. ## Load the matching pattern runbook When a signature appears in the output, retrieve the runbook for it with `get_sop` rather than reasoning from first principles. Available patterns include custom or hybrid resolver divergence, FORWARD versus private hosted zone precedence collisions, address-family divergence, VPC endpoint shadow NXDOMAIN, broad FORWARD sweep, DNS Firewall blocks, the `privateDnsEnabled` and `PrivateDnsPreference` flag-AND mismatch, and Route 53 Profile propagation timing. Call `list_sops` for the current catalogue and exact slugs. ## Report honestly All tools are read-only observation and simulation. Do not modify, delete, or create DNS resources as part of this skill; produce the diagnosis and the recommended change, and leave application to the operator. Cross-account constructs shared with the target account may be enumerable but opaque, and the tools mark them as such. Report an opaque construct as unknown rather than treating it as absent. Load `C-cross-account-opaque-constructs` and `C-limitations-and-boundaries` and state the boundaries to the operator instead of inferring past them. Requires the aws-vpc-dns-diagnostics MCP server to be registered in the Agent Space with its tools allowlisted. The server is in this repository at `mcp/aws-vpc-dns-diagnostics-mcp/`. Mode A tools additionally require the target instance to be reachable through SSM. If the server is not registered or SSM is unreachable, report that as the blocker rather than guessing at the resolution path.