Debian
(Raspian) DHCP 啟動競爭條件 - 啟動時出現大量服務故障(大約 5-10 秒沒有 DNS)
(編輯:這不僅僅適用於後綴;這正是我注意到/調試它的地方)
我已經安裝了 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 中找到了這個……
因此,這似乎是設計使然。“快速啟動”的預設設置是以隨機失敗為代價的。即使沒有安裝 postfix,在乾淨的 Raspian 安裝中,我的 syslog 也會在 DHCP 過程中包含來自各種腳本的大量 DNS 錯誤。
因此,解決方法是將其設置為“慢速”啟動,這會創建一個在啟動時等待網路的腳本。編輯:您可以
raspi-config
像這樣編寫呼叫腳本:sudo raspi-config nonint do_wait_for_network Slow
這解決了我注意到的 postfix 問題,還清除了通常在啟動時寫入 syslog 的大量與 DNS 相關的錯誤。
我認為作為預設行為,這太瘋狂了。我已經在 GitHub 上發布了回饋。