向日葵远控 Linux systemd 设置, 如何配置向日葵 systemd 服务, 向日葵远控 自动上线 失败 排查, systemd 与 rc.local 区别 远控, Linux 重启 向日葵 自启 方法, 向日葵远控 systemd 服务文件 示例, 无人值守 服务器 向日葵 自启, 向日葵 Linux 客户端 开机 自动运行
自启配置

向日葵远控Linux如何配置systemd守护进程实现自动上线?

向日葵官方团队
#systemd#自启#守护进程#Linux#远控

向日葵远控Linux配置systemd守护进程,实现开机自启、断网重连,无人值守稳定上线。

为什么必须用 systemd 守护向日葵

Linux 服务器往往放在 IDC 或边缘机柜,重启后若无人现场登录,向日葵未自启就等于“失联”。systemd 是主流发行版统一的服务治理框架,可让客户端在开机、断网、崩溃后自动拉起,并把日志统一送进 journal,方便集中审计。

相比 crontab、rc.local 等旧方案,systemd 支持依赖序、重启策略、资源限制,能把向日葵的 CPU、内存、文件句柄框在可控范围,避免“吃爆”嵌入式盒子或工控机。

为什么必须用 systemd 守护向日葵
为什么必须用 systemd 守护向日葵

前置条件与版本边界

截至当前的最新版本(v15.3.1 系列)官方仍提供 tar.gz 与 rpm 两种形态:tar.gz 解压即用,rpm 会顺便写旧式 init 脚本,但不会自动生成 systemd unit。以下步骤以 tar.gz 为例,适用 CentOS 7+/Rocky/Alma、Debian 9+、Ubuntu 16.04+ 等带 systemd 的系统。

若使用企业定制“信创 OS”且 systemd 版本低于 219,请把 RestartSec= 字段简化为 5s 以下,避免低版本不识别。

安装向日葵客户端(tar.gz 方式)

1. 下载与解压

wget https://down.oray.com/sunlogin/linux/sunlogin_remoteclient_linux.tar.gz
tar -xf sunlogin_remoteclient_linux.tar.gz -C /opt/
ln -s /opt/sunlogin_remoteclient /opt/sunlogin

2. 最小化权限

官方二进制已做 strip,体积约 38 MB;建议单独建用户,降低被提权风险:

groupadd -r sunlogin
useradd -r -g sunlogin -d /var/lib/sunlogin -s /sbin/nologin sunlogin
chown -R sunlogin:sunlogin /opt/sunlogin

手写 systemd unit 模板

/etc/systemd/system/sunlogin.service 新建文件,内容如下:

[Unit]
Description=Sunflower Remote Client
After=network-online.target
Wants=network-online.target

[Service] Type=simple User=sunlogin Group=sunlogin WorkingDirectory=/opt/sunlogin ExecStart=/opt/sunlogin/sunlogin_service --no-daemon --config=/var/lib/sunlogin/conf Restart=on-failure RestartSec=10s StartLimitInterval=60s StartLimitBurst=3

安全加固

NoNewPrivileges=true PrivateTmp=true ProtectSystem=strict ProtectHome=true ReadWritePaths=/var/lib/sunlogin /tmp

[Install] WantedBy=multi-user.target

参数解释:--no-daemon 让进程保持前台,systemd 才能捕获退出码;RestartSec 设 10s 可防止网络抖动导致的频繁重启。

加载与首次启动

systemctl daemon-reload
systemctl enable --now sunlogin.service
systemctl status sunlogin.service

若看到 Active: active (running) 且日志无“license expired”“login failed”等关键字,即表示守护成功。可重启整机验证:

reboot
# 重新登录后
systemctl is-active sunlogin.service  # 应输出 active

断网重连与失败恢复策略

经验性观察:IDC 夜间割接会导致网卡 up/down,向日葵原生有重连线程,但偶发进程僵死。systemd 的 Restart=on-failure 可覆盖退出码非 0 的场景;若需更激进,可改用 Restart=always,但要把 StartLimitBurst 降到 2,避免 CPU 空转。

验证方法:人工制造断网

ip link set eth0 down
sleep 30
ip link set eth0 up

观察 journalctl -u sunlogin -f,若在 30s 内出现“reconnecting... OK”,则无需调整;若出现“process exit 1”并被 systemd 重新拉起,也算符合预期。

日志轮转与审计

向日葵默认把日志写在 /var/lib/sunlogin/log/,但文件名带日期,不会自动压缩。可借用 systemd 的统一收集,再外送 rsyslog:

echo 'ForwardToSyslog=yes' >> /etc/systemd/journald.conf
systemctl restart systemd-journald

然后在 /etc/logrotate.d/sunlogin 追加:

/var/lib/sunlogin/log/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    copytruncate
}
日志轮转与审计
日志轮转与审计

与防火墙的协同

向日葵走 TCP 443 + UDP 30000 以上随机端口。若服务器启用 firewalld,可在 service 段追加:

ExecStartPre=/usr/bin/firewall-cmd --permanent --add-port=443/tcp
ExecStartPre=/usr/bin/firewall-cmd --permanent --add-port=30000-40000/udp
ExecStartPre=/usr/bin/firewall-cmd --reload

注意:如果本机还有 Nginx 监听 443,会端口冲突;此时应改用“仅出站 443”模式,或在向日葵控制台把端口改成 8443。

不适用场景与取舍

  • 容器内运行:systemd 需要宿主机 PID 1,若把向日葵塞 Docker,请改用 --restart unless-stopped,而不是本教程。
  • 只读根文件系统:IoT 网关常把 / 挂载为 ro,ProtectSystem=strict 会导致写配置失败,需额外挂载可写数据卷。
  • 多实例场景:一台主机要跑多开客户端,必须复制 unit 文件为 [email protected],用模板实例化,否则端口与 PID 冲突。

常见故障速查表

现象journalctl 关键词处置
服务无限重启StartLimitBurst调大 RestartSec,检查网络
报 permission deniedProtectSystem追加 ReadWritePaths
无法获取本机码license expired登录向日葵控制台续期

FAQ(结构化数据)

Q1:systemd 日志太大怎么办?

A:在 /etc/systemd/journald.conf 设置 SystemMaxUse=200M,重启 systemd-journald 即可。

Q2:能否用非 root 用户执行 systemctl?

A:可以,把用户加入 systemd-journal 组,并使用 --user 模式,但向日葵需要绑定低端口时需 root,建议仍用系统级 unit。

Q3:升级客户端后要重新配置吗?

A:官方 tar.gz 升级只需停服务、替换二进制、重新加载 daemon,无需改 unit;若路径变则需更新 ExecStart。

最佳实践 8 条清单

  1. 永远用专用用户运行,禁用 shell。
  2. unit 文件纳入 Git,变更走 MR,回滚只需 systemctl revert
  3. RestartSec≥10s,StartLimitBurst≤3,防止雪崩。
  4. 日志同时进 journal 与 rsyslog,保留 7 天压缩。
  5. 防火墙端口最小化,只开 443 + 30000-40000/udp。
  6. 每台机器写 Ansible 角色,批量推送 unit,避免手敲。
  7. 监控用 node_exporter + systemd_exporter,采集 sunlogin.service.active 指标。
  8. 每月重启一次,验证星链节点密钥是否过期。

收尾:下一步行动

按本文模板,10 分钟内即可把向日葵纳入 systemd 看护,实现“断电—来电—自动上线”无人值守。建议立即在测试机重演断网、重启两场景,确认 journal 无报错后,再推广到生产。若日后官方推出 rpm 自带 unit,请对比本文参数,决定是否迁移,以保留最小权限与日志集中化优势。

相关关键词:

向日葵远控 Linux systemd 设置如何配置向日葵 systemd 服务向日葵远控 自动上线 失败 排查systemd 与 rc.local 区别 远控Linux 重启 向日葵 自启 方法向日葵远控 systemd 服务文件 示例无人值守 服务器 向日葵 自启向日葵 Linux 客户端 开机 自动运行

相关文章