根据我所读到的所有内容,它应该在 中/etc
,但事实并非如此。我确实在一些旧帖子中读到,人们可以简单地创建一个,因为它是一个文本文件。(抱歉,我再也找不到该帖子了。)我不确定我是否应该尝试这样做,即创建文件,或安装dhcpcd
或其他操作。此时此刻,我宁愿问,也不愿独自继续。
背景是我试图安装hostsblock
,这导致我安装dnsmasq
,这导致我安装dhcpcd
,然后到这里。dnsmask Arch Wiki 页面(下面的链接)表示该dhcpcd.conf
文件用于通过将行附加到该文件来/etc/resolv.conf
防止覆盖。dhcpd
nohook resolv.conf
我知道已dnsmasq
安装,因为journalctl -u dnsmasq.service
报告以下内容(输出的最后一行):
Started dnsmasq - A lightweight DHCP and caching DNS server.
dhcpcd
未安装。我不知道是否可以尝试安装它而不破坏任何东西,如果我犯了错误(见下文)如何撤消我已采取的步骤。dnsmasq
手册页没有提到dhcpcd
。
到目前为止我所做的一切,从~/path/hostsblock/hostsblock-master/
:运行sudo sh install.sh
开始安装“hostsblock”。
- 将“nobody dnsmask”添加到 hostblock 组?
Y
添加
(username) ALL = (hostsblock) NOPASSWD: q/hostsblock,q/hostsblock-urlcheck
至 sudoers:Y
我应该启用和/或启动 hostsblock 服务吗?
- 仅启用
- 仅限开始
- 启动并启用
不执行任何操作(默认)
2
这也许是一个错误:
Job for hostsblock.service failed because the control process exited with error code. See "systemctl status hostsblock.service" and "journalctl -xe" for details. -e hostsblock is now installed. Check out the configuration file under /hostsblock.conf. By default, hostsblock does not directly write to /etc/hosts or manipulate your dnsmasq daemon. To make it do so, see the instructions included in /hostsblock.conf.
因此,正如上面的建议,我这样做了:
systemctl status hostsblock.service
没有明显的灾难,所以我继续前行。
从~/path/hostsblock-master/
我做了以下事情:
sudo install -Dm755 src/hostsblock.sh /usr/bin/hostsblock
sudo install -Dm644 conf/hostsblock.conf /var/lib/hostsblock/hostsblock.conf
sudo install -Dm644 conf/black.list /var/lib/hostsblock/black.list
sudo install -Dm644 conf/white.list /var/lib/hostsblock/white.list
sudo install -Dm644 conf/hosts.head /var/lib/hostsblock/hosts.head
sudo install -Dm644 systemd/hostsblock.service /usr/lib/systemd/system/hostsblock.service
sudo install -Dm644 systemd/hostsblock.timer /usr/lib/systemd/system/hostsblock.timer
那是我的错误。那是“For Any Others (The Hard Way)”的一部分,我已经在 Hostsblock README.md 文件中完成了“For Other Linux Distros (The Easy Way)”。这应该不是问题,因为我检查了 install.sh 脚本,发现里面有相同的行,但"$DESTDIR"
替换了/usr/bin
、"$HOMEDIR"
替换/var/lib
和。"$systemd_dir"
/var/lib/hostsblock
然后我就这么做了
sudo systemctl enable --now hostsblock.timer
此时 README.md 内容如下:
hostsblock
要与 一起使用dnsmasq
,请配置dnsmasq
为 DNS 缓存守护程序。请参阅您的发行版手册。对于 ArchLinux,请阅读以下内容:维基部分。
我还进行了编辑/etc/dnsmasq.conf
以添加以下内容:listen-address=127.0.0.1
。
然后我去编辑/etc/resolv.conf
以添加该行nameserver 127.0.0.1
,但它已经在那里了。
所以我在这里...抱歉,我没想到我的帖子会这么长。
我的机器位于路由器后面,但仅此而已。它不是服务器,只是一台装有 Xubuntu 16.04 的台式机。局域网上没有其他东西,甚至连打印机都没有。
具体来说,目前,我正在尝试根据 Hostblock README.md 文档“将‘dnsmasq’配置为 DNS 缓存守护程序”。经过大量研究,我最终找到了两个我正在关注的来源,并在继续研究的同时对它们进行比较:
- 这Arch Linux 维基页
- 本地 DNS 缓存可加快浏览速度-(博客,旧)
- 这就是我开始做的事情,也是我希望实现的事情:Hostsblock README.md
第一个是 Arch 的,所以我不确定它是否适用于 Xubuntu,第二个是旧的。当然还有 dhcpcd 手册页,但除了确认 dhcpcd.conf 应该在 /etc/ 中之外,它没有任何帮助。它不在我的计算机上。有一个 /etc/dhcp 目录,但其中没有“dhcpcd.conf”。
提前感谢您的任何建议或评论。
PS(见评论2)安装“dhcpcd”后,我完成了hostsblock README.md中的步骤:
添加了以下几行
hostsblock.conf
:postprocess() { sudo systemctl reload dnsmasq.service }
在文件中添加以下行
sudoers
:hostsblock ALL = (根)NOPASSWD:/usr/bin/cphostsblock ALL = (root) NOPASSWD: /usr/bin/systemctl reload dnsmasq.service
将以下行添加到
hostsblock.conf
:some-user ALL = (hostsblock) NOPASSWD: /usr/bin/hostsblock,/usr/bin/hostsblock-urlcheck
将以下行添加到
dnsmasq.conf
:addn-hosts=/var/lib/hostsblock/hosts.block
“dnsmasq” 显然还需要以下行
dhclient.conf
(参见下面的注释),以强制“dhclient”在查看其他地方之前查看 127.0.0.1:
prepend domain-name-servers 127.0.0.1;
注意:dhclient.conf
在/etc/dhcp
我的系统中。一些网络文档指出,在其他 Linux 发行版中也可以找到它/etc
(Arch)和/etc/dhcp3
(服务器,较旧)。
根据文档将“dnsmasq”添加到“hostsblock”组
hostsblock.conf
(示例 1:“systemd 下的 dnsmasq”):$ sudo gpasswd -a dnsmasq hostsblock
答案1
dhcpcd.conf
没有出现在原来的位置,因为“dhcpcd”从未安装过,即我没有安装它,而且它也不包含在我的 Xubuntu 16.04 安装中,当我写这个问题时我对此并不确定。
我猜我应该在开始安装“hostsblock”和“dnsmasq”之前安装它。如果我这样做了,问题就不会发生。我只是事先不知道这一点,在我的研究中也没有看到它,而且由于缺乏经验,我可能太谨慎了。现在我知道“dhcpcd”和“dnsmasq”都已安装,我认为配置正确。
不幸的是,在我确认“hostsblock”能够按预期运行之前,我的旅程尚未结束,但我希望尽可能具体地提出我的问题,并且不包含太多内容。