Image

Photo by Wendy Tan on Unsplash

在 NanoPi Neo2 上安装 Pi-Hole

系统版本

本文基于友善之臂官方发布的 nanopi-neo2_sd_ubuntu-oled-xenial_4.14_arm64_20181011 映像。

如果使用 Armbian ,可以用 Armbian configuration utility 一键安装 Pi-Hole。

安装 Pi-Hole

启动后,附带 NanoHAT OLED 的 NanoPi Neo2 套件应该可以在 OLED 屏幕上看到设备当前 IP 地址,没有屏幕或未显示可以去路由器管理页面找到它。

通过 SSH 客户端登陆 Neo2

用户名: root
 
密码: fa

更新列表和升级:

sudo apt update && sudo apt upgrade -y

完成后下载 Pi-Hole 并安装:

cd /root

git clone --depth 1 https://github.com/pi-hole/pi-hole.git pi-hole #下载 pi hole

sudo bash pi-hole/automated\ install/basic-install.sh #运行安装脚本

等待安装完依赖包后会跳出安装界面提供一些可选项,一路回车使用默认选项即可,直到看到:

Installation Complete!

表示安装成功。

安装报错与解决

  • 安装过程中各种莫名其妙的错误最快的解决办法是:

重装一个全新的系统来安装 Pi-Hole,或使用更友好的 AdGuard Home。 XDDD

  • 安装过程中无故中断,安装不成功

打开安装脚本并编辑:

sudo nano pi-hole/automated\ install/basic-install.sh

将安装脚本内的 ste -e 行用 # 符注释掉,像下面一样:

# ste -e

注释掉这个参数可以使脚本显示安装过程中的错误,保存然后再次运行脚本:

sudo bash pi-hole/automated\ install/basic-install.sh

即可根据错误提示进行排查。

  • DNS 服务错误

检查 Pi-Hole 的运行状态:

pihole status

如果提示:

[✗] DNS service is NOT running

说明 DNS 服务未启动:

sudo systemctl status dnsmasq #查看 dnsmasq 服务状态
apt-get install net-tools #安装 net-tools
systemctl start dnsmasq #启动 dnsmasq
pihole enable #启动 pi hole
pihole status #再次查看 pi hole 运行状态

如果是重启后 DNSmasq 未自动启动,可以尝试:

update-rc.d dnsmasq defaults

新建一个启动脚本:

nano /etc/network/if-up.d/dnsmasq

将下面的内容复制到新建的脚本里保存:

#!/bin/sh
[ "$IFACE" != "lo" ] || exit 0
#/usr/sbin/invoke-rc.d dnsmasq restart
#systemctl start dnsmasq
systemctl start pihole-FTL
pihole-FTL

设置下权限:

chmod a+x /etc/network/if-up.d/dnsmasq

重启 Neo2 :

reboot -h now

重启完成后检查 DNSmasq 是否自动启动:

sudo systemctl status dnsmasq

没有看到和前面一样的报错即 OK。

  • Pi-Hole 未运行或更新去广告列表时报错

检查 Pi-Hole 的运行状态:

pihole status

如果提示:

[✗] FTL Engine not installed

有可能是 DNS 服务器在安装完成后被错误的设置,需要手动设置一下:

nano /etc/resolv.conf

将 127.0.0.1 或其它地址修改为 1.1.1.1,即:

nameserver 1.1.1.1

注意,如果未出现错误提示无需进行任何改动。

  • WebUI 错误

如果无法访问 http://You_NEO2_IP/ 前台页面或 http://You_NEO2_IP/admin 后台页面,首先查看 Pi-Hole 自带的网页服务器状态:

sudo systemctl status lighttpd

如果看到:

Active: failed

表示 lighttpd 网页服务器出错了,看看错误记录:

tail /var/log/lighttpd/error.log

找到具体的问题描述,比如 fastcgi 出错会显示:

(mod_fastcgi.c.1406)[ERROR]: spawning fcgi failed.

启用一下 fastcgi 解决:

sudo lighttpd-enable-mod fastcgi fastcgi-php

  • 忘记 pi hole 的后台密码

因为密码默认生成在安装界面一路回车没保存的话可以重设一个:

sudo pihole -a -p OOOXXX #这里 OOOXXX 即需重设的密码

  • 无法正常访问某些网页或服务

如需要使用谷歌统计或 Spotify ,可以将对应的业务域名加入白名单:

analytics.google.com
mobile-ap.spotify.com
apresolve.spotify.com
upgrade.scdn.co
market.spotify.com
spclient-wg.spotify.com

使用 Pi-Hole

  • 通过 Pi-Hole 的后台设置页面,多数设置无需使用 SSH ,地址如下:

统计页面

http://Your_NEO2_IP/

管理页面

http://Your_NEO2_IP/admin

  • 中文化 Pi-Hole

@Verkey 的 Pi-Hole 中文汉化版项目下载 admin 文件夹;

将 admin 文件夹用 SFTP 上传到 /var/www/html 路径;

覆盖 admin 文件夹;

刷新页面即可。

//中文汉化未适配新版本,可以自己用文本编辑器改改。

在 NanoPi Neo2 上安装 AdGuard Home

搞定了安装过程中各种报错的 Pi-Hole 后,在加装 DNSCrypt 服务时又成功把系统搞崩了~2333

于是抛弃 Pi-Hole 换成了 AdGuard Home,用起来爽度大增:自带中文化、安装方便且自带了各种需要的功能组件、甚至可以兼容 Adblock 规则!

系统版本

本文基于友善之臂官方发布的 nanopi-neo2_sd_ubuntu-oled-xenial_4.14_arm64_20181011 映像。

安装 AdGuard Home

顺利启动后,附带 NanoHAT OLED 的 NanoPi Neo2 套件应该可以在 OLED 屏幕上看到设备当前 IP 地址,没有屏幕或未显示可以去路由器管理页面找到它。

通过 SSH 客户端登陆 Neo2

用户名: root
 
密码: fa

更新列表和升级:

sudo apt update && sudo apt upgrade -y

更新完成后先安装依赖包:

apt-get install sudo nano bind9-host -y

下载 AdGuard Home:

wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_arm64.tar.gz

解压下载的包:

tar xvf AdGuardHome_linux_arm64.tar.gz

进入解压后生成的文件夹:

cd AdGuardHome

创建服务配置文件:

sudo nano /etc/systemd/system/adguard-home.service

输入下面的内容并保存:

[Unit]
Description=AdGuard Home
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/root/AdGuardHome
ExecStart=/root/AdGuardHome/AdGuardHome --host 0.0.0.0
Restart=always
[Install]
WantedBy=multi-user.target

设置 AdGuard Home 开机自启:

sudo systemctl enable adguard-home

启动 AdGuard Home:

sudo systemctl start adguard-home

进入网页端安装界面输入:

http://Your_Neo2_IP:3000/

进入网页端安装界面。

点击 「开始配置」 后:

  • 网页管理界面 里监听接口选 Neo2 IP 地址,端口可以保持默认的 80,也可以设置为 3000 等。
  • DNS 服务器 里监听接口选 Neo2 IP 地址,端口可以保持默认的 53,也可以设置为 5353 等。

下一步,身份认证:

建议设置一个用户名和密码,以免被访客查看到访问记录。

后面点击下一步直到出现 「打开仪表盘」,点击后,如网页管理界面端口改变则输入改变后的端口使用刚刚设置的用户名密码登陆。

如设置为 80 端口可直接在浏览器输入 IP 访问:

http://Your_Neo2_IP/

登陆后点击菜单栏的 「过滤器」 ,点 「添加过滤器」 添加新的 hosts源。

点击 「设置」 —— 「DNS settings」 ,在上游 DNS 服务器栏填入喜欢的 DNS 服务。

最后,点击菜单栏的 「Setup guide」 ,按照指南将各设备或路由器的 DNS 地址指向 NanoPi Neo2。

完成。

使用 AdGuard

一些常用命令:

启动 AdGuard 服务:

sudo systemctl start adguard-home

停止 AdGuard 服务:

sudo systemctl stop adguard-home

查看 AdGuard 服务:

sudo systemctl status adguard-home