DNSPup 网络检测节点部署指南:Linux、Windows 与 NAS 安装及故障排查

13 次浏览1 条回复

摘要
DNSPup 节点 Agent 用于执行经过平台调度的 Ping、TCPing、DNS、HTTP(S) 和路由检测任务。节点是否稳定,不仅取决于 Agent 是否处于运行状态,还与系统架构、ICMP 权限、时间同步、出口网络、配置文件权限和后台鉴权有关。
本文给出 Linux、Windows 和 NAS 环境下的标准部署方法,并建立一套从“服务运行”到“后台上线”的完整排查流程。文中的目录为推荐结构;如果使用 DNSPup 控制台生成的一键安装命令,应以实际服务配置为准。
安全提示:节点令牌等同于设备凭证,不要将真实 Token、agent.json 或完整日志发布到论坛、工单和代码仓库。

一、部署前的环境检查
节点应具备稳定的公网访问能力,并允许以下出站流量:
HTTPS 443:连接 DNSPup 调度服务及上报结果;
ICMP:执行 Ping 和部分路由检测;
TCP:执行目标端口连通性检测;
UDP/TCP 53:执行 DNS 查询;
路由探测所需的 ICMP、UDP 或 TCP 响应。
Linux 或 NAS 首先确认处理器架构:
uname -m
对应关系:
系统输出 安装包
x86_64、amd64 netprobe-agent-linux-amd64
aarch64、arm64 netprobe-agent-linux-arm64
Windows 64 位 netprobe-agent-windows-amd64.exe

不要将 AMD64 程序安装到 ARM64 NAS。出现 Exec format error 时,首先检查架构,而不是反复修改权限。
二、Linux 标准安装
推荐目录结构:
/opt/dnspup/netprobe-agent
/etc/dnspup/agent.json
/var/lib/dnspup/
/var/log/dnspup/
将控制台下载的 Agent 和配置文件上传至服务器后执行:
set -e

install -d -m 755 /opt/dnspup
install -d -m 700 /etc/dnspup
install -d -m 750 /var/lib/dnspup
install -d -m 750 /var/log/dnspup

install -m 755 ./netprobe-agent-linux-amd64
/opt/dnspup/netprobe-agent

install -m 600 ./agent.json
/etc/dnspup/agent.json
ARM64 设备只需将安装包替换为:
install -m 755 ./netprobe-agent-linux-arm64
/opt/dnspup/netprobe-agent
建议先计算文件校验值并与官方发布页对照:
sha256sum /opt/dnspup/netprobe-agent
不要使用来源不明、被其他站点重新打包或无法验证校验值的 Agent。
三、配置独立运行用户与 ICMP 权限
Agent 不需要长期以完整的 root 权限运行。可以创建专用系统用户:
useradd
--system
--home-dir /var/lib/dnspup
--shell /usr/sbin/nologin
dnspup 2>/dev/null || true

chown -R dnspup:dnspup
/var/lib/dnspup
/var/log/dnspup

chown root:dnspup /etc/dnspup/agent.json
chmod 640 /etc/dnspup/agent.json
普通用户执行 ICMP 探测通常需要 CAP_NET_RAW:
apt-get update
apt-get install -y libcap2-bin

setcap cap_net_raw+ep /opt/dnspup/netprobe-agent
getcap /opt/dnspup/netprobe-agent
正确结果应类似:
/opt/dnspup/netprobe-agent cap_net_raw=ep
如果不配置该权限,可能出现一种典型现象:服务器命令行以 root 执行 Ping 正常,但 DNSPup 后台显示节点 Ping 全部超时。
四、创建 systemd 服务
创建 /etc/systemd/system/netprobe-agent.service:
[Unit]
Description=DNSPup NetProbe Agent
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=dnspup
Group=dnspup
WorkingDirectory=/var/lib/dnspup
ExecStart=/opt/dnspup/netprobe-agent --config /etc/dnspup/agent.json
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
加载并启动:
systemctl daemon-reload
systemctl enable --now netprobe-agent

systemctl status netprobe-agent --no-pager
确认开机启动状态:
systemctl is-enabled netprobe-agent
systemctl is-active netprobe-agent
预期输出:
enabled
active
Restart=always 可以在 Agent 异常退出后自动重启,但无法解决 Token 无效、网络不通或二进制架构错误。自动重启是恢复机制,不是故障诊断的替代品。
五、Windows 标准安装
使用管理员身份打开 PowerShell,准备目录:
$base = 'C:\ProgramData\dnspup'

New-Item -ItemType Directory -Path $base -Force |
Out-Null

Copy-Item '.\netprobe-agent-windows-amd64.exe'
"$base\netprobe-agent.exe" `
-Force

Copy-Item '.\agent.json'
"$base\agent.json" -Force 如果服务尚未创建: $service = Get-Service
-Name 'NetProbeAgent' `
-ErrorAction SilentlyContinue

if (-not $service) {
New-Service -Name 'NetProbeAgent'
-DisplayName 'DNSPup NetProbe Agent' -BinaryPathName '"C:\ProgramData\dnspup\netprobe-agent.exe" --config "C:\ProgramData\dnspup\agent.json"'
-StartupType Automatic
}
设置自动启动和失败恢复:
Set-Service -Name 'NetProbeAgent'
-StartupType Automatic

sc.exe failure NetProbeAgent reset= 86400
actions= restart/5000/restart/15000/restart/60000

sc.exe failureflag NetProbeAgent 1

Start-Service NetProbeAgent
验证:
Get-CimInstance Win32_Service -Filter "Name='NetProbeAgent'" | Select-Object
Name,
State,
StartMode,
StartName,
PathName
正常情况下应显示:
State : Running
StartMode : Auto
Windows Defender 防火墙通常不会阻止普通出站连接。如果部署了第三方安全软件,应确认没有限制 Agent 的 HTTPS、ICMP、DNS 和 TCP 出站访问。
六、NAS 和飞牛 fnOS 部署注意事项
NAS 本质上仍需先区分 AMD64 与 ARM64。飞牛 fnOS、Debian 系 NAS 和部分国产 NAS 通常可以使用对应的 Linux 二进制,但应注意:
Agent 必须存放在持久化目录,不能放在重启后清空的 /tmp;
配置文件权限应限制为管理员或 Agent 用户可读;
不要与高负载转码、挖矿、PCDN 或大量下载任务共用资源;
为 Agent 保留稳定的 DNS、CPU 时间和出站带宽;
不要为 Agent 额外开放公网入站端口;
NAS 休眠、磁盘休眠和网络节能策略可能导致节点间歇掉线;
系统升级后需要检查服务、自启动和二进制权限是否仍然存在。
如果通过容器运行,需要为容器添加 NET_RAW 能力,否则 Ping 任务可能失败:
cap_add:

  • NET_RAW
    restart: unless-stopped
    容器镜像、挂载路径和启动参数应以 DNSPup 官方发布内容为准,不要使用未经验证的第三方镜像名称。
    七、节点安装后的四层验证
    节点上线不能只看“进程存在”,应依次验证四个层面。
    第一层:进程是否运行
    Linux:
    systemctl status netprobe-agent --no-pager
    ps -ef | grep '[n]etprobe-agent'
    Windows:
    Get-Service NetProbeAgent
    Get-Process netprobe-agent `
    -ErrorAction SilentlyContinue
    第二层:能否连接调度服务器
    Linux:
    getent hosts agent.dnspup.com
    curl -I --connect-timeout 5 https://agent.dnspup.com
    Windows:
    Resolve-DnsName agent.dnspup.com

Test-NetConnection agent.dnspup.com
-Port 443
HTTP 返回 401、403 或 404 不一定是故障。只要 DNS、TCP 和 TLS 可以建立,通常说明网络链路可达。
第三层:是否收到任务并成功上报
Linux:
journalctl -fu netprobe-agent
Windows:
Get-Content 'C:\ProgramData\dnspup\agent.log'
-Tail 100 `
-Wait
保持日志窗口打开,然后从 DNSPup 页面发起一次 Ping 和 TCPing。日志中应能看到任务接收、执行和结果上报过程。
第四层:后台是否识别为在线
如果服务运行正常但后台仍然离线,重点检查:
Token 是否复制完整;
Token 是否已被重新生成或撤销;
node_id 是否与控制台一致;
多台设备是否重复使用同一个节点身份;
系统时间是否准确;
调度服务器地址是否配置错误;
Agent 版本是否与平台协议兼容。
八、服务运行但后台离线的排查方法
Linux执行:
SERVICE=netprobe-agent
PID="$(systemctl show "$SERVICE" -p MainPID --value)"
BIN="$(readlink -f "/proc/$PID/exe")"

echo "=== 服务 ==="
systemctl show "$SERVICE"
-p ActiveState
-p SubState
-p User
-p MainPID
-p ExecStart

echo "=== 进程 ==="
ps -ww -p "$PID"
-o pid,user,group,stat,etime,%cpu,%mem,cmd

echo "=== 程序 ==="
echo "$BIN"
"$BIN" --version 2>&1 || true

echo "=== 网络 ==="
getent hosts agent.dnspup.com
curl -I --connect-timeout 5
https://agent.dnspup.com 2>&1 |
head -n 20

echo "=== 时间 ==="
timedatectl status

echo "=== 日志 ==="
journalctl -u "$SERVICE"
--since '-60 minutes'
--no-pager |
tail -n 200 |
sed -E
's/np_[A-Za-z0-9_-]+/[TOKEN REDACTED]/g'
系统时间偏差过大可能导致 TLS、签名或鉴权失败。应启用时间同步:
timedatectl set-ntp true
timedatectl status
九、Ping 超时但 TCPing 正常
这种情况存在两种主要可能。
第一种是目标禁止 ICMP。类似一家公司关闭了门铃,但业务入口仍然开放。此时系统 Ping 和平台 Ping 都可能失败,而 TCPing 80、443 或其他业务端口正常。
第二种是 Agent 缺少 ICMP 权限。表现为系统使用 root Ping 正常,但平台结果始终超时。
验证:
ping -c 5 -W 1 223.5.5.5
nc -vz -w 3 223.5.5.5 53
getcap /opt/dnspup/netprobe-agent
如果系统 Ping 正常而 getcap 没有输出:
setcap cap_net_raw+ep
/opt/dnspup/netprobe-agent

systemctl restart netprobe-agent
再次确认:
getcap /opt/dnspup/netprobe-agent
journalctl -u netprobe-agent -n 100 --no-pager
十、TCPing、HTTP 和 DNS 任务全部失败
如果所有任务都失败,应从公共网络能力开始检查:
ping -c 5 223.5.5.5
nc -vz -w 3 223.5.5.5 53
curl -I --connect-timeout 5 https://dnspup.com
安装 DNS 工具后测试:
apt-get install -y dnsutils

dig @223.5.5.5 dnspup.com A
+time=2
+tries=1

dig +tcp @223.5.5.5 dnspup.com A
+time=2
+tries=1
判断方式:
Ping、TCP 和 HTTPS 全部失败:检查云安全组、主机防火墙和出口网络;
Ping 失败、TCP 正常:可能限制 ICMP;
TCP 53 正常、UDP DNS 失败:可能限制 UDP;
公网测试正常、Agent 任务失败:检查 Agent 权限、版本和任务日志;
Agent 执行成功、上报失败:检查 Token、443 连接和服务器时间。
十一、节点间歇掉线
间歇掉线通常不是单一原因,应检查以下指标:
uptime
free -h
df -h
ip -s link
dmesg -T | tail -n 100
journalctl -u netprobe-agent --since '-6 hours'
重点关注:
系统是否发生 OOM;
可用内存是否长期不足;
磁盘是否已满;
网卡是否出现 errors 或 dropped;
DNS 是否间歇解析失败;
NAT 会话是否频繁重置;
Agent 是否不断崩溃并被 systemd 拉起;
VPS 是否受到宿主机高负载影响;
NAS 是否进入休眠状态。
只有约 512 MB 内存且没有 Swap 的小型 VPS,可以配置少量 Swap 以降低突发 OOM 风险,但 Swap 不能代替足够的物理内存。
十二、前台手动运行排查
服务日志信息不足时,可以停止服务并在前台运行:
systemctl stop netprobe-agent

/opt/dnspup/netprobe-agent
--config /etc/dnspup/agent.json
前台模式便于观察初始化、鉴权和任务错误。排查完成后按 Ctrl+C 退出,并恢复服务:
systemctl start netprobe-agent
systemctl status netprobe-agent --no-pager
不要让 systemd 服务和手动进程同时运行,否则同一节点可能建立重复连接并产生异常状态。
Windows:
Stop-Service NetProbeAgent

& 'C:\ProgramData\dnspup\netprobe-agent.exe' `
--config 'C:\ProgramData\dnspup\agent.json'
排查完成后关闭前台程序:
Start-Service NetProbeAgent
十三、安全更新与回滚
更新前备份配置,但不要将备份上传到公共仓库:
cp -a
/etc/dnspup/agent.json
/etc/dnspup/agent.json.backup
更新流程:
systemctl stop netprobe-agent

install -m 755
./netprobe-agent-linux-amd64
/opt/dnspup/netprobe-agent

setcap cap_net_raw+ep
/opt/dnspup/netprobe-agent

systemctl start netprobe-agent
systemctl status netprobe-agent --no-pager
更新后必须重新执行 setcap,因为替换二进制文件通常会清除原有文件能力。
如果新版启动失败,可恢复旧二进制并重启,而不要删除配置或重新生成节点身份。
十四、日志脱敏
提交日志前至少隐藏 Token:
Linux:
journalctl -u netprobe-agent
-n 200
--no-pager |
sed -E
's/np_[A-Za-z0-9_-]+/[TOKEN REDACTED]/g'
Windows:
(Get-Content 'C:\ProgramData\dnspup\agent.log'
-Tail 200) -replace
'np_[A-Za-z0-9_-]+',
'[TOKEN REDACTED]'
同时检查日志中是否包含节点密钥、完整配置、私网地址或其他凭证。
十五、节点运行规范
为了保证检测质量,节点不建议与以下业务共用:
长时间满负载的视频转码;
PCDN、大流量上传或下载;
长期占满 CPU、内存或磁盘 IO 的任务;
频繁改变出口地址的代理服务;
可能触发运营商限速的高并发业务;
无法保证持续在线的临时设备。
节点应保持稳定、低负载、时间准确,并确保每台设备使用独立的节点身份。不要在多台服务器上复制同一份配置,否则可能出现重复登录、相互顶替或后台状态反复变化。
总结
DNSPup 节点部署可以概括为五个关键环节:
选择正确架构

保护节点配置和 Token

配置服务与 ICMP 权限

验证调度服务器 443 连接

通过实际任务检查执行和上报
“服务正在运行”只证明进程存在,不代表节点已经能够正确接收、执行和上报任务。专业的节点验收必须同时验证进程、网络、权限、日志和后台状态。
工具地址:https://dnspup.com