質問:
Ubuntu 17.10実行
私は今約1週間この問題を解決しようとしています(ヘヘ)、多くのGoogle検索と約20回の他の試みにもかかわらず、dnsmasqが定期的に次の攻撃でCPUを約1分間急増させるのを防ぐことはできません。 :
systemd-resolved
systemd-journald
dnsmasq
監視がjournalctl -f
発生するたびに、次の内容が表示されます。
最大同時DNSクエリ数に達しました(150)。
次のように、特定のドメインに対する明白な要求ループ(通常はUbuntu接続の確認)が伴うか先行します。
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
スパイクはほぼすぐに消滅します。
ところが、ネットワーク管理者がこのファイルを定期的に更新するので、1時間に1回ずつやってください。
構成:
/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
dnsmasq
127.0.0.1にプロセスがあり、systemd-resolved
127.0.0.53にプロセスが互いにクエリを送受信するときにループが発生しているようです。デフォルトでは、情報のない名前に対して実際のDNSサーバーを見つけるため、スタンドアロンもループ可能になるdnsmasq
可能性があります。/etc/resolv.conf
DNS構成には複数の階層があります。
- 第1に、DHCP又は同様の手段によってISPからDNSサーバ情報を得ることができる。
- その後、
NetworkManager
情報を無視して使用するように構成できますが、dnsmasq
現在はこのように構成されていません。 - 代わりに、ツールを
NetworkManager
使用してresolvconf
実際の更新を/etc/resolv.conf
構成し、DHCPから受信したすべてのDNSサービスをオーバーライドし、実行時に127.0.0.1を使用する組み込みdnsmasq
構成を含めることができます。resolvconf
dnsmasq
- systemd-resolvedには組み込み構成も含めることができますが、
resolvconf
明らかに上書きされますdnsmasq
。
私はまだ127.0.1.1と127.0.0.53がどこから来たのか理解していません。dnsmasq
Ubuntuの基本構成に記載されていますか?
説明で説明されているように/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.conf
DHCP を介して 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 競合を修正しました。
- dnssec機能とルートサーバーがあるため、systemd-resolve(127.0.0.53)を外部DNSとして使用します。
- 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
Ubuntu 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 restart
CPUはまだ急増していますが、今は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スパイクが発生しませんでした。通常の日常業務を実施しながら、約1時間後にパフォーマンスがどのように表示されるかを確認し、それに応じて再度更新します。解決済み!アップデート#4:これで、次の手順を実行すると問題が解決する可能性があります。アップデート#3。ありがとう通信会社私を正しい方向に導くすべての素晴らしい詳細に感謝します。賞金は15時間以内に支払われます。