Problem med utgående resolverändpunkt med AWS Client VPN

Bakgrund: Jag har AWS Client VPN utanför i en VPC som har anslutning till en fysisk plats via TGW och en S2S-tunnel.

Jag har problem med att lösa värdnamn för privata värdar på vårt fysiska kontor. Jag kan skicka trafik mellan AWS och kontoret utan problem men kan inte lösa värdnamn.

Nu ville jag använda AWS DNS-servrar i min VPC och vidarebefordra förfrågningar för specifika domäner till de on-prem DNS-servrarna. Jag förstår att jag kan göra detta med hjälp av en utgående resolverändpunkt och några vidarebefordringsregler. Jag konfigurerade detta men har fortfarande samma problem. När jag kör *nslookup device.example.com* misslyckas det och visar att det pekade mot AWS DNS-servern och **inte** den angivna on-prem servern.

nslookup device.example.com
DNS-forespöringen tidsgräns överskriden.
    timeout var 2 sekunder.
Server:  Okänd
Address:  <aws_dns_ip>

Dessutom fungerar inte heller att ställa in DNS-servrar för VPN-klientanslutningar till mina on-prem servrar - förfrågningarna tidsgränsar ut. Jag kan pinga dessa servrar utan problem och DNS-traffic verkar vara tillåtet överallt. Jag ser inte heller att denna trafik når min brandvägg. Det verkar som att det inte lämnar AWS?

nslookup device.example.com
DNS-forespöringen tidsgräns överskriden.
    timeout var 2 sekunder.
Server:  Okänd
Address:  <on_prem_dns_ip>

Jag förstår att det är något fel med min konfiguration men jag kan inte hitta var och det verkar som att jag gör allt enligt dokumentationen. Jag är också inte helt säker på hur AWS hanterar DNS-trafik.

Terraform-konfigurationen nedan (har tagit bort onödigt för tydlighetens skull):

 resource "aws_ec2_client_vpn_endpoint" "this" {
  ...
  dns_servers            = var.aws_dns_servers
  security_group_ids     = [aws_security_group.this.id]
 ...
}

resource "aws_vpc" "this" {
  ...
  enable_dns_support   = true
  enable_dns_hostnames = true
}

resource "aws_route53_resolver_endpoint" "this" {
  name               = "outbound_endpoint"
  direction          = "OUTBOUND"
  security_group_ids = [aws_security_group.this.id]


  ip_address { subnet_id = var.subnet_1 }
  ip_address { subnet_id = var.subnet_2 }
}

resource "aws_route53_resolver_rule" "this" {
  domain_name          = "example.com"
  name                 = "example"
  rule_type            = "FORWARD"
  resolver_endpoint_id = aws_route53_resolver_endpoint.this.id

  target_ip { ip = var.on_prem_1 }
  target_ip { ip = var.on_prem_2 }
}

resource "aws_route53_resolver_rule_association" "this" {
  resolver_rule_id = aws_route53_resolver_rule.this.id
  vpc_id           = aws_vpc.this.id
}

En one mergetag: subneterna som anges i resolverändpunkten är de i den VPC där Client VPN är utplacerad och trafiken från VPN-användaren till TGW går igenom.

Några rekommendationer eller tips på bra platser att titta på?

Har du verifierat att säkerhetsgruppen kopplad till klient-vpn ändpunkten tillåter UDP port 53 utgång? Anledningen jag frågar är för att du får timeout, vilket indikerar att det har problem att nå DNS-servern (möjligen blockering eller ingen rutt, vilket är osannolikt eftersom du säger att du kan pinga). Om dina resolve-regler var felkonfigurerade skulle du troligen se “SERVFAIL” eller något annat svar som inte är noerror.

När du associerar resolver-regler, måste du fråga den AmazonProvidedDNS-servern för att använda dem. Så dina klienter bör använda Amazon DNS-servern som sedan vidarebefordrar till onprem via utgående ändpunkter.

Använder du Windows DNS-servrar i din VPC?

Jag använder inte Windows DNS-servrar i min VPC, men jag använder dem på min kontorsplats. För klient-VPC:n definierade jag de två nedan AWS DNS-servrar:

<VPC_CIDR_plus_2>, 169.254.169.253

Ah, hade bara DNS TCP-roll och detta verkar vara det. Tack!