2014年12月16日 星期二

How to Increase VM's Entropy (熵) For Generate Random Number

圖片來源:popphysics


話說今天利用Vagrant +virtualbox 在建立 KDC +LDAP 的開發環境,結果在Create KDC Database 時發現奇怪的問題...

在執行kdb5_util create -s 的時候,畫面就停在Loading random data就不動了....

看CPU和Mem也沒有異常的吃緊?Google 一下發現原來是在虛擬環境下 Linux 的Random不給力啊

[1] krb5_newrealm hangs on fresh install
[2] virtualbox - poor entropy performance




原因是這樣:

一般來說 Linux 是靠 pseudo random number generator (PRNG) 這個特殊的裝置 (如 /dev/random and /dev/urandom) ,而這些Device是靠著 hardware interrupts (keyboard, mouse, disk/network I/O) 去產生亂數值。 而問題就在這邊,在虛擬環境會implement的device 本來就比實體機少,所以能產生的Entropy也就更少。

檢查方法:

cat /proc/sys/kernel/random/entropy_avail


通常至少要1024以上才對,結果virtualbox 只有145.....

上網找了幾種解法:

[1] Increasing Entropy in VM for Kerberos
[2] Linux (CentOS 7) - Increasing Available Entropy using Software Tools
[3] How to Setup Additional Entropy for Cloud Servers Using Haveged
[4] More entropy with haveged

最簡單的方法就是安裝Haveged (HArdware Volatile Entropy Gathering and Expansion) 這個套件


yum install -y haveged
systemctl enable haveged.service


這時候再執行cat /proc/sys/kernel/random/entropy_avail會發現entropy會緩慢上升
但是只要重開機一下,瞬間就會從1xx-->3xxx

接下來就可以繼續安裝KDC了...Orz...




張貼留言