轉自:https://vue.moe/116.html
前言
許多使用過廉價入門主機的朋友可能遇到過,系統花了很長時間才能連到VPS主機,許多新手並不知道為什么主機的啟動速度如此緩慢。
本文將簡單介紹Linux系統的熵池系統,以及如何通過haveged與rng-tools提高系統熵池補充速度,從而避免系統阻塞。
Linux的熵
Entropy(熵,[shāng])在信息論中表示數據的混亂程度或者不確定性,混亂程度越高則數據更難被預測。
在信息論里,熵是對不確定性的度量,熵值越高則能傳遞多的信息,熵值越低能傳遞的信息越少。
對於使用者不需要考慮這么復雜的問題,我們需要知道的是Linux系統有兩套隨機數生成機制。
Linux系統的隨機數生成機制
/dev/random在Linux系統里被認為是真隨機數發生器,會持續收集系統的環境噪音,比如硬件設備的活動(鍵盤輸入、磁盤讀寫、內存錯誤等),這些活動被認為無法被預測,因此系統可以依靠這些隨機信號生成高隨機性的公鑰或一次性密碼本。如果/dev/random空了,系統會等到收集到足夠的熵才會繼續進行加密操作。
/dev/urandom在Linux系統里則被認為是偽隨機數發生器,與前者不同,即使空掉,Linux也會持續生成偽隨機數,所以不會被堵塞。
系統緩慢原因
由於openssl、tomcat等高加密要求的軟件需要/dev/random所生成的真隨機數來確保公匙不易於被猜測,與此同時由於Linux從2.4至2.6版本砍掉了大量的外來噪音來源,以及VPS由於是虛擬主機環境過於安靜而缺乏各種噪音,因此會出現隨機數生成速度過慢所產生的阻塞現象。
操作
本文建議大家在主機上安裝haveged和rng-tools從而大量生成熵值避免阻塞。
查看系統熵值
通過以下命令,我們可以查看系統熵值:
watch -n 1 cat /proc/sys/kernel/random/entropy_avail 782
可以看出這一台主機的熵池非常少,因此在啟動過程中可以明顯感覺到堵塞。我至少等待了20s來完成連接主機。
安裝增熵服務
我們先通過以下命令來安裝增熵服務:
# CentOS 7 yum install rng-tools haveged -y # Debian 9 apt install rng-tools haveged -y
Centos 可能無法安裝rng-tools,需要根據以下命令添加enpl源:
yum -y install epel-release
接着我們啟動服務並確保他們自啟
#haveged systemctl enable haveged systemctl restart haveged systemctl status haveged #rng-tools systemctl enable rng-tools systemctl status rng-tools
Centos可能無法啟動。可以通過以下命令啟動rng-tools:
echo 'EXTRAOPTIONS="--rng-device /dev/urandom"' >/etc/sysconfig/rngd service rngd restart chkconfig rngd on
測試系統熵值
接着我們再來測試熵值:
watch -n 1 cat /proc/sys/kernel/random/entropy_avail 3132
查看結果
我們可以看出,系統的熵值被迅速提高,從782迅速提升到了3132。阻塞的情況有了顯著緩解。
