我如何将 /dev/random 指向 /dev/urandom

我如何将 /dev/random 指向 /dev/urandom

我的服务器无法生成足够的熵来支持/dev/random。出现问题的特定软件无法配置使用/dev/urandom

我尝试移动/dev/random/dev/realrandom并符号链接/dev/random/dev/urandom,但lsof /dev/realrandom仍然显示正在使用它的进程。

“urandom” 是否与“random”具有相同的熵?,建议使用mknod /dev/random 1 9。重启后是否仍然有效?我应该以某种方式使用 udev 吗?

答案1

您需要做的就是创建类似/etc/udev/rules.d/70-disable-random-entropy-estimation.rules以下内容的内容:

# /etc/udev/rules.d/70-disable-random-entropy-estimation.rules
# Disables /dev/random entropy estimation (it's mostly snake oil anyway).
#
# udevd will warn that the kernel-provided name 'random' and NAME= 'eerandom'
# disagree.  You can ignore this warning.

# Use /dev/eerandom instead of /dev/random for the entropy-estimating RNG.
KERNEL=="random", NAME="eerandom"

# Remove any existing /dev/random, then create symlink /dev/random pointing to
# /dev/urandom
KERNEL=="urandom", PROGRAM+="/bin/rm -f /dev/random", SYMLINK+="random"

答案2

你应该考虑增加更多熵而不是损害您的系统。

答案3

我用过埃格德来解决这个问题。我敢打赌你正在用这个gpg。我需要从源代码编译 gpg 才能使其与 egd 一起工作,但一旦我这样做了,它就运行得很好。

另一个建议:在此注册账户并下载一堆随机数。我认为你可以用一个简单的 来添加熵cat file_with_random_numbers > /dev/random。该网站上还有一个名为qrand(需要编译 IIRC)的实用程序,它将从服务中下载并为你播种 /dev/random。

答案4

udev 的更高版本无法重命名内核设备节点,请参阅https://unix.stackexchange.com/a/120272。作为解决方法,您可以使用此规则(文件名可以是/etc/udev/rules.d/70-random-is-urandom.rules):

KERNEL=="random", RUN+="/bin/ln -sf /dev/urandom /dev/random"

使用比 可能更安全,KERNEL==random因为此版本不存在和设备节点KERNEL=urandom创建之间的任何竞争条件。要保留两个设备节点,请使用以下命令:randomurandom

KERNEL=="random", RUN+="/bin/mv /dev/random /dev/eerandom", RUN+="/bin/ln -s /dev/urandom /dev/random"

相关内容