WireGuard/pfSense에 연결되면 DNS 쿼리가 거부됩니다.

WireGuard/pfSense에 연결되면 DNS 쿼리가 거부됩니다.

저는 현재 10년 넘게 OpenVPN과 함께 pfSense를 사용하고 있습니다. 또한 pfSense의 많은 서비스(DNS 확인자, DHCP, HA 프록시, SquidGuard, 방화벽 등)를 집중적으로 사용했습니다. 간단히 말해서, 저는 약간의 경험이 있습니다. 하지만 이제 OpenVPN을 WireGuard로 교체하기로 결정했습니다...

pfSense 측에 터널을 만들고 Windows 클라이언트를 구성했으며 성공적으로 연결되었습니다. pfSense 뒤에 있는 (거의) 모든 서버에 액세스할 수 있습니다. 그런데 DNS 동작에서 매우 이상한 점을 발견했습니다. 문제를 설명하려면 내 환경을 빠르게 설명해야 합니다. 그래서 나는 가지고있다:

  • 분할 DNS 설정(내부 DNS는 개인 주소로 확인되고 공용 DNS는 공개 주소로 확인됨)
  • 내부 DNS 서버는 두 개의 Zentyal 도메인 컨트롤러(pfSense 뒤의 네트워크에 있음)입니다. 이는 기본 도메인 "mydomain.com"에 대한 권한 있는 이름 서버입니다.
  • 이 두 가지는 다른 도메인에 대한 DNS 쿼리를 pfSense의 DNS Resolver로 전달하도록 구성됩니다. (저는 DNS Resolver가 Zentyal DNS보다 사용자 친화적이고 더 좋기 때문에 도메인을 몇 개 더 구성했습니다.)
  • 마지막으로 DNS Resolver는 확인되지 않은 도메인에 대한 쿼리를 외부 DNS로 전달합니다.
DNS request -> Zentyal DNS (172.16.0.1) -> pfSense DNS Resolver (172.16.1.1) -> External DNS

약간 이상한 설정이라는 점은 인정하지만 몇 년 동안 작동해 왔습니다.

nslookupOpenVPN을 사용하여 Windows 11 시스템을 연결하면 어떤 도메인(기본 도메인이든 다른 도메인이든)에 대해 문제 없이 연결할 수 있습니다 . 하지만 OpenVPN 연결을 끊고 WireGuard를 연결하면 쿼리만 가능합니다.메인도메인:

nslookup web.mydomain.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

Name:    web.mydomain.com
Address:  172.16.2.5

하지만 다른 도메인(DNS Resolver 또는 외부 DNS에서 처리)을 쿼리하면 "쿼리 거부" 오류가 발생합니다.

nslookup google.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

*** zentyal-1.mydomain.com can't find google.com: Query refused

OpenVPN을 사용하여 연결할 때와 매우 동일한 요청:

nslookup google.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

Non-authoritative answer:
Name:    google.com
Addresses:  2a00:1450:4001:80f::200e
          142.250.185.142

분명히 두 경우 모두 동일한 DNS 서버(zentyal-1)가 요청을 수신하고 동일한 서버가 응답합니다. 한 번은 "쿼리 거부됨"이고 한 번은 성공적인 응답입니다. WireGuard를 통해 연결하면 DNS Resolver가 Zentyal에 대한 응답을 거부하는 것 같습니다.

내 WireGuard 클라이언트 구성:

[Interface]
PrivateKey = XXXX=
Address = 172.16.26.2/24
DNS = 172.16.0.1

[Peer]
PublicKey = YYYYY=
AllowedIPs = 172.16.0.0/16
Endpoint = 1.2.3.4:51820

그리고 이것이 이상한 행동의 끝이 아닙니다. 명령 프롬프트에서만 "쿼리 거부" 문제가 발생합니다 nslookup. 브라우저는 이 문제로 인해 전혀 영향을 받지 않는 것으로 보입니다. ( nslookupgoogle.com을 얻을 수 없지만 Firefox는 문제 없이 열립니다.) 처음에는 일종의 DNS 누출이고 브라우저가 일부 로컬 DNS를 쿼리하고 있다고 생각했습니다. 그러나 놀랍게도 이는 사실이 아닌 것 같습니다. 브라우저가 개인 IP를 사용하여 DNS Resolver에서 처리하는 도메인에 대한 DNS 응답을 받고 있습니다.와야 했어요pfSense 뒤에서(DNS Resolver에서)...

허허허허허

어떤 아이디어가 있나요? 글이 길어서 죄송합니다... 감사합니다!

관련 정보