Debian

(Raspian) DHCP 啟動競爭條件 - 啟動時出現大量服務故障(大約 5-10 秒沒有 DNS)

  • January 11, 2022

(編輯:這不僅僅適用於後綴;這正是我注意到/調試它的地方)

我已經安裝了 postfix,但是當它啟動並創建它的 chroot 時,它會得到一個空副本,/etc/resolv.conf這意味著它無法解析任何域。

我在各種網路腳本中添加了一些日誌記錄,以查看 resolve.conf 何時被擦除/重新填充以及 postfix 何時啟動……

這是啟動時的日誌:

Sun Mar 27 19:12:30 UTC 2016
 EXECUTE: root + /sbin/resolvconf2 -d eth0 -f

Sun 27 Mar 19:12:31 UTC 2016
 Postfix startup script

Sun Mar 27 19:12:37 UTC 2016
 EXECUTE: root + /sbin/resolvconf2 -a eth0

請注意,在呼叫 resolvconf 以擦除配置然後重新填充它之間有 7 秒的時間。在此期間,/etc/resolv.conf 實際上是空的。postfix(和許多其他服務)在這些呼叫之間啟動。

在清除/重新創建 resolvconf 之間的巨大差距中啟動服務似乎很奇怪。

這是安裝了 Postfix 且沒有其他更改的 Raspbian 的全新安裝。

編輯:查看系統日誌,實際上有很多事情由於在 dhcpcd 開始和結束之間沒有 DNS 而失敗。其他服務試圖同時啟動似乎有缺陷?

好的,在浪費了很多時間之後,我在 raspi-conf 中找到了這個……

raspi-conf

因此,這似乎是設計使然。“快速啟動”的預設設置是以隨機失敗為代價的。即使沒有安裝 postfix,在乾淨的 Raspian 安裝中,我的 syslog 也會在 DHCP 過程中包含來自各種腳本的大量 DNS 錯誤。

因此,解決方法是將其設置為“慢速”啟動,這會創建一個在啟動時等待網路的腳本。編輯:您可以raspi-config像這樣編寫呼叫腳本:

sudo raspi-config nonint do_wait_for_network Slow

這解決了我注意到的 postfix 問題,還清除了通常在啟動時寫入 syslog 的大量與 DNS 相關的錯誤。

我認為作為預設行為,這太瘋狂了。我已經在 GitHub 上發布了回饋

引用自:https://unix.stackexchange.com/questions/272459