질문:

질문:

질문:

우분투 17.10 실행

저는 지금 약 일주일 동안 이 문제를 해결하려고 노력해 왔으며(헤헤) 수많은 Google 검색과 약 20번의 다른 시도에도 불구하고 dnsmasq가 주기적으로 다음과 같은 공격으로 CPU를 약 1분 동안 급증시키는 것을 막을 수 없습니다. :

  • systemd-resolved
  • systemd-journald
  • dnsmasq

모니터링이 journalctl -f발생할 때마다 다음과 같은 내용이 표시됩니다.

최대 동시 DNS 쿼리 수에 도달했습니다(150).

다음과 같이 특정 도메인에 대한 광란적인 요청 루프(일반적으로 우분투 연결 확인)가 동반되거나 선행됩니다.

query[A] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.1.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[A] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[AAAA] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[AAAA] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[A] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[AAAA] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53

그게 나를 바꾸었다는 걸 알았어/etc/resolv.conf사용하면 nameserver 127.0.0.53스파이크가 거의 즉시 소멸됩니다.

그런데 네트워크 관리자가 이 파일을 정기적으로 업데이트하기 때문에 한 시간에 한 번씩 해줘야 합니다.


구성:

/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.1
search fios-router.home

/etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

/etc/dnsmasq.conf

// All default except this at the very end for my wildcard DNS
address=/asmar.d/127.0.0.1

/run/dnsmasq/resolv.conf

nameserver 127.0.0.53

/run/resolvconf/인터페이스:

lo.dnsmasq:

nameserver 127.0.0.1

systemd-resolved:

nameserver 127.0.0.53

/etc/resolvconf/인터페이스 순서:

# interface-order(5)
lo.inet6
lo.inet
lo.@(dnsmasq|pdnsd)
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?(_+([0-9]))*
p+([0-9])p+([0-9])?(_+([0-9]))*
@(br|eth)*([^.]).inet6
@(br|eth)*([^.]).ip6.@(dhclient|dhcpcd|pump|udhcpc)
@(br|eth)*([^.]).inet
@(br|eth)*([^.]).@(dhclient|dhcpcd|pump|udhcpc)
@(br|eth)*
@(ath|wifi|wlan)*([^.]).inet6
@(ath|wifi|wlan)*([^.]).ip6.@(dhclient|dhcpcd|pump|udhcpc)
@(ath|wifi|wlan)*([^.]).inet
@(ath|wifi|wlan)*([^.]).@(dhclient|dhcpcd|pump|udhcpc)
@(ath|wifi|wlan)*
ppp*
*

systemd-resolve --status:

Global
         DNS Servers: 127.0.0.1
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 5 (br-b1f5461ac410)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 4 (docker0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 3 (wlp62s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 2 (enp61s0)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 8.8.8.8
                      8.8.4.4
                      ::1

질문:

와일드카드 도메인 이름을 계속 사용하면서 이 문제를 해결하려면 어떻게 해야 합니까?

임의로 선택할 수 있는: Google DNS를 사용할 때 이를 달성하는 방법은 무엇입니까?

동시 DNS 쿼리를 늘리는 것을 제안하지 마십시오. 그건 해결책이 아닙니다.


해결되었습니다!

해결책을 찾아낸 TelcoM의 DNS 크래시 코스(승인된 답변)를 참조하세요.

이 답변에서 얻은 지식을 시험해 보면서 후속 조치 및 최종 솔루션을 확인하세요.

답변1

dnsmasq127.0.0.1에 프로세스가 있고 systemd-resolved127.0.0.53에 프로세스가 서로 쿼리를 주고받으면서 루프가 발생하는 것 같습니다 . 기본적으로 정보가 없는 이름에 대해 실제 DNS 서버를 찾기 때문에 독립 실행 형도 dnsmasq루프가 가능할 수 있습니다 ./etc/resolv.conf

DNS 구성에는 여러 계층이 있을 수 있습니다.

  • 첫째, DHCP 또는 유사한 수단을 통해 ISP로부터 DNS 서버 정보를 얻을 수 있습니다.
  • 그런 다음 NetworkManager정보를 무시하고 사용하도록 구성 할 수 있지만 dnsmasq현재는 이 방식으로 구성되어 있지 않습니다.
  • 대신 도구를 NetworkManager사용하여 resolvconf실제 업데이트를 구성 /etc/resolv.conf하고 DHCP에서 수신한 모든 DNS 서비스를 재정의하고 런타임 시 127.0.0.1을 사용하는 dnsmasq내장 구성을 포함할 수 있습니다 .resolvconfdnsmasq
  • systemd-resolved에는 내장된 구성도 포함될 수 있지만 resolvconf분명히 재정의됩니다 dnsmasq.

나는 아직도 127.0.1.1과 127.0.0.53이 어디서 왔는지 이해하지 못합니다. dnsmasqUbuntu의 기본 구성에 언급되어 있습니까?

설명에서 언급한 대로 /etc/resolv.conf이 명령을 실행하면 systemd-resolved구성에 대한 자세한 정보를 볼 수 있습니다.

systemd-resolve --status

/run/resolvconf/interface/또한 도구가 다양한 소스에서 얻은 모든 DNS 서버 정보를 수집하는 디렉토리의 내용을 확인하십시오 . 각 소스를 확인하는 순서 는 루프백 주소가 발견되거나 실제 3개의 DNS 서버가 나열될 때까지 결정 resolvconf됩니다 ./etc/resolvconf/interface-order/etc/resolv.conf

와일드카드 도메인을 설정할 예정이므로 dnsmasq이를 유지하고 싶을 것입니다 127.0.0.1. 하지만 해당 파일을 사용하지 않고 다른 곳에서 사용해야 하는 DNS 서버를 가져오도록 /etc/resolv.conf구성해야 합니다 .dnsmasq

/run/NetworkManager/resolv.confDHCP를 통해 ISP로부터 얻은 DNS 서버를 포함하는 경우 dnsmasq해당 구성에 다음 행을 추가하여 쉽게 사용할 수 있습니다.

resolv-file=/run/NetworkManager/resolv.conf

이는 dnsmasq아직 알지 못하는 DNS 정보를 어디서 얻을 수 있는지 알려줍니다. 따라서 Google DNS를 사용하려면 dnsmasq구성 할 수 있습니다.

resolv-file=/etc/google-dns-resolv.conf

그리고 Google DNS의 DNS 구성 라인을 일반적인 형식으로 입력합니다 /etc/google-dns-resolv.conf.

답변2

dnsmasq 구성을 사용하여 dnsmasq systemd-resolve 경쟁을 수정했습니다.

  1. dnssec 기능과 루트 서버가 있으므로 systemd-resolve(127.0.0.53)를 외부 DNS로 사용합니다.
  2. dnsmasq를 정적으로 구성된 루프백에 바인딩하면 됩니다. dhcp가 필요한 경우 더 많은 인터페이스를 추가할 수 있습니다.

/etc/dnsmasq.d/myconfig

#PES 20180808 dnsmasq and systemd-resolve conflict.
# dont use /etc/resolv.conf, go direct to systemd-resolve, only bind to lo
no-resolv
bind-interfaces
interface=lo
server=127.0.0.53

답변3

우분투 18.04에서

1 - /etc/google-dns-resolv.conf 생성

nameserver 8.8.8.8
nameserver 8.8.4.4

2 - /etc/dnsmasq.d/my_dnsmaq.conf 구성 파일 생성

resolv-file=/etc/google-dns-resolv.conf

3 - /etc/default/dnsmasq 하단에 삽입

IGNORE_RESOLVCONF=yes

4 - 마지막으로 dnsmasq 서비스를 다시 시작합니다.

sudo service dnsmasq restart


나는 사용했다조니의 대답위의 dnsmasq 구성 파일을 올바르게 읽으려면 내 답변에서 3단계가 누락되었습니다. 감사해요

답변4

다양한 솔루션을 시도하는 동안 처음에는 이것을 문제의 일부로 기록했습니다. 명확성을 위해 이 질문에서 이 답변으로 잘라내거나 붙여넣었지만 이 답변은 제공된 통찰력 없이는 독립되지 않습니다.통신회사답변.

해결책:

다음을 기반으로 변경했습니다.통신회사아래에 제안 사항이 있습니다.

/etc/google-dns-resolv.conf콘텐츠 만들기 :

nameserver 8.8.8.8
nameserver 8.8.4.4

resolv-file=/etc/google-dns-resolv.conf에 추가 하다/etc/dnsmasq.conf

변경하고 실행한 후에도 sudo service dnsmasq restartCPU는 여전히 급증하고 있지만 이제는 rsyslogd공격자가 됩니다. 1분쯤 지나자 가라앉았으나 더 127.0.1.1이상 볼 수가 없었다 journalctl -f.

고쳐 쓰다:약 10분 후에 CPU가 다시 급증합니다.

여기에 이미지 설명을 입력하세요.

업데이트 #2:감사해요통신회사여기 DNS에 대한 아주 작은 충돌 코스가 있습니다. 저는 그 기원에 대해 회의적이었고 127.0.0.53그것을 파고들었고(그의 답변에 대한 내 의견 참조) 그것이 다음에서 유래했다는 것을 알게 되었습니다./run/dnsmasq/resolv.conf, 내용이 포함되어 있습니다 nameserver 127.0.0.53. 이제 nameserver 127.0.0.1출력되는 IP 주소 는 ) journalctl -f뿐입니다 .127.0.0.1

[해결됨] 업데이트 #3:사용127.0.0.1/run/dnsmasq/resolv.conf정말 바보같아. 내 DNS 확인이 완전히 중단되었습니다(처음에는 캐시된 DNS에만 액세스했기 때문에 작동하는 것처럼 보였습니다). Google 이름 서버( 8.8.8.8& 8.8.4.4) 사용으로 전환한 후 DNS 확인이 다시 제대로 작동하고 와일드카드 도메인이 계속 작동하며 CPU 스파이크가 발생하지 않았습니다. 일반적인 일상 활동을 수행하면서 약 한 시간 후에 성능이 어떻게 나타나는지 확인하고 이에 따라 다시 업데이트하겠습니다.해결됨!

업데이트 #4:이제 다음 단계를 수행하면 문제가 해결될 수 있을 것 같습니다.업데이트 #3. 감사해요통신회사나를 올바른 방향으로 이끄는 모든 훌륭한 세부 사항에 감사드립니다. 현상금은 15시간 이내에 지급됩니다.

관련 정보