我有一个指定两个 DNS 名称服务器的设置。一个是本地的,另一个是外部的。本地的是pihole,它本身经过 url 过滤后将请求转发到外部。外部设置是为了防止pihole设备软件或硬件出现故障。
内部响应时间约为20 ms,外部响应时间约为2 ms 。尽管pihole被列为外部名称服务器之前的名称服务器,但dnsmasq默认情况下会测试计时响应并使用更快的名称服务器。
然而, dnsmasq确实提供了一个参数strict-order
,该参数应按照严格的列出顺序使用名称服务器,因此在这种情况下,仅当 pihole “失败”时才应使用外部名称服务器。
在实践中,使用该参数strict-order
并不会像希望的那样工作,并且外部名称服务器仍然获胜。dnsmasq手册页没有详细介绍“失败”的定义。
我正在寻找可能解决此问题的其他参数设置。
作为最后的手段,我将使用外部程序来检测pihole工作顺序,并相应地操作dnsmasq名称服务器设置。但这不是首选解决方案。
我有一个应用程序,它要求生产者将文件名发送给消费者,并让生产者在发送最后一个文件名并到达文件末尾时向消费者指示。
为简单起见,在以下示例中, 使用和演示生产者,而使用 演示消费者。我试图推断“此处文件”方法但没有成功,用于向生产者包装器(如果存在此类东西)指示要查找的内容作为文件结尾的指示。如果它工作应该从输出中过滤。echo
printf
cat
<<EOF
cat
EOF
例 1)
输入
{
echo "Hello World!"
printf '\x04'
echo "EOF"
} <<EOF |\
cat
Run Code Online (Sandbox Code Playgroud)
输出
bash: warning: here-document at line 146 delimited by end-of-file (wanted `EOF')
Hello World!
EOF
Run Code Online (Sandbox Code Playgroud)
例 2)
输入
{
echo "Hello World!"
printf '\x04'
echo "EOF"
} |\
cat <<EOF
Run Code Online (Sandbox Code Playgroud)
输出
bash: warning: here-document at line 153 delimited by …
Run Code Online (Sandbox Code Playgroud) 我的系统(Linux 4.13.0-38-generic,16.04.1-Ubuntu,Intel® Celeron(R) CPU G3930 @ 2.90GHz × 2,主磁盘是 SSD)上的“熵创建”速度是不切实际的慢很多每秒小于 1 位。
注意:我用这个命令判断熵产生的速率:
watch -n1 cat /proc/sys/kernel/random/entropy_avail
Run Code Online (Sandbox Code Playgroud)
另一方面,底层 Linux CSPRNG 正在以每秒 187 Mb 的良好速度生成数据:
$ dd if=/dev/urandom of=/dev/null bs=1M count=1024 iflag=fullblock
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.74347 s, 187 MB/s
Run Code Online (Sandbox Code Playgroud)
我安装了rng-tools
. 它正在/dev/hwrng
按预期工作和阅读:
% systemctl status rng-tools
? rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; bad; vendor preset: enabled)
Active: active (running) since Sat 2018-04-28 13:17:17 PDT; 33s ago
Docs: man:systemd-sysv-generator(8)
Process: …
Run Code Online (Sandbox Code Playgroud)