测试markdown

84 次浏览1 条回复

安全提示:节点令牌等同于设备凭证,不要将真实 Token、agent.json 或完整日志发布到论坛、工单和代码仓库。

一、部署前的环境检查

节点应具备稳定的公网访问能力,并允许以下出站流量:

  • HTTPS 443:连接 DNSPup 调度服务及上报结果;

  • ICMP:执行 Ping 和部分路由检测;

  • TCP:执行目标端口连通性检测;

  • UDP/TCP 53:执行 DNS 查询;

  • 路由探测所需的 ICMP、UDP 或 TCP 响应。

Linux 或 NAS 首先确认处理器架构:

uname -m

对应关系:

系统输出

安装包

x86_64amd64

netprobe-agent-linux-amd64

aarch64arm64

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</code></pre><p></p><p> </p><p>如果服务尚未创建:</p><p> </p><pre><code>$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 返回 401403404 不一定是故障。只要 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="SERVICE" -p MainPID --value)"
BIN="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 连接

通过实际任务检查执行和上报

“服务正在运行”只证明进程存在,不代表节点已经能够正确接收、执行和上报任务。专业的节点验收必须同时验证进程、网络、权限、日志和后台状态。

工具地址:dnspup - 在线 Ping、网站测速、DNS 与 IP 纯净度检测

现也有一键命令安装包,可省去复杂的配置,具体去工具地址了解。

ScreenShot_2026-07-31_205535_421.png655.2 KB · image/png · 不可下载

图片附件在,正文这次没过:整段 HTML 被塞进了 Markdown,代码块里的 <p>、反斜杠和 PowerShell 反引号都被重新解析了,命令已经变形。别直接贴编辑器导出的 HTML,改成纯 Markdown,或者用富文本编辑器直接粘贴;修正后再回帖复测。