在 Ubuntu ARM 架构系统中安装并使用花生壳实现内网穿透

在 Ubuntu ARM 架构系统中安装并使用花生壳实现内网穿透的步骤如下,适用于树莓派、香橙派等 ARM 设备:

一、准备工作

  1. 确保 Ubuntu 系统已联网(建议使用 ping baidu.com 测试网络连通性)。
  2. 注册花生壳账号(官网注册),后续需登录使用。

二、安装花生壳客户端

花生壳提供了 ARM 架构的 Linux 客户端,可通过官方脚本或手动下载安装:

方法 1:通过官方一键安装脚本(推荐)
  1. 确认系统架构

  2. 打开终端,执行以下命令下载并运行安装脚本:

    bash 复制代码
    wget "https://dl.oray.com/hsk/linux/phddns_5.1.0_rapi_aarch64.deb" -O phddns_5.1.0_rapi_aarch64.deb

(注:若链接失效,可到 花生壳Linux版下载页 获取最新 ARM 版本的 deb 包链接)

  1. 安装 deb 包:

    bash 复制代码
    sudo dpkg -i phddns_5.1.0_rapi_aarch64.deb

    若提示依赖错误,执行以下命令修复:

    bash 复制代码
    sudo apt-get install -f
方法 2:手动下载安装(备用)
  1. 访问花生壳官网下载页面,选择 Linux 版本ARM 架构 的 deb 包,通过 FTP 或 U 盘传输到 Ubuntu 设备。
  2. 进入文件所在目录,执行安装命令(同上)。
安装完成

三、初始化花生壳并登录

  1. 安装完成后,启动花生壳服务:

    bash 复制代码
    sudo phddns start
  2. 初始化并获取登录信息:

    bash 复制代码
    sudo phddns status

    执行后会显示类似以下信息,记录 SN 码默认密码(首次登录用):

    复制代码
    花生壳服务运行中
    SN: xxxxxxxx
    远程管理地址: http://b.oray.com
    账号: 默认使用SN码登录,密码: admin
  3. 登录花生壳管理平台:

    • 在浏览器中访问 http://b.oray.com,使用上述 SN 码和默认密码登录。
    • 首次登录需修改默认密码,并绑定花生壳账号(若未绑定)。

四、配置内网穿透规则


  1. 登录后,在管理界面点击 "添加映射",根据需求配置穿透规则:

    • 应用类型:选择需穿透的服务(如 HTTP、SSH、自定义端口等)。
    • 映射名称:自定义名称(如"树莓派SSH")。
    • 内网主机 :填写 Ubuntu 设备的内网 IP(可通过 ifconfig 查看,如 192.168.1.100)。
    • 内网端口:需穿透的服务端口(如 SSH 默认 22,Web 服务默认 80)。
    • 外网端口:花生壳分配的端口(免费版为随机端口,付费版可固定)。
  2. 点击 "确认添加" ,映射规则生效后,即可通过花生壳提供的 "外网访问地址" 访问内网服务。

五、开机自启

1、先确认花生壳能否手动正常启动

这是关键前提!如果手动启动都失败,自启必然失败:

  1. 先停止所有残留进程:

    bash 复制代码
    sudo phddns stop
    sudo pkill -f phddns  # 强制结束可能的残留进程
  2. 手动启动并观察输出:

    bash 复制代码
    sudo phddns start
    • 若提示"启动成功",再用 sudo phddns status 确认服务是否运行(显示"运行中")。
    • 若启动失败,记录错误提示(如"权限不足""文件缺失"等),优先解决手动启动问题(参考之前的端口冲突、架构不匹配排查)。
2、修改服务配置,解决频繁重启问题

若手动启动正常,但自启时频繁退出,说明systemd的启动条件或服务类型配置不当:

  1. 编辑服务文件:

    bash 复制代码
    sudo nano /etc/systemd/system/phddns.service
  2. 替换为以下配置(优化启动类型和依赖):

    ini 复制代码
    [Unit]
    Description=Oray Peanut Hull (phddns) Service
    After=network-online.target  # 等待网络完全就绪
    Wants=network-online.target  # 明确依赖网络服务
    
    [Service]
    Type=simple  # 改用simple类型(部分程序不支持forking)
    ExecStart=/usr/bin/phddns start --no-daemon  # 强制前台运行(适配simple类型)
    ExecStop=/usr/bin/phddns stop
    Restart=on-failure  # 仅在失败时重启,而非always
    RestartSec=10  # 重启间隔延长到10秒,避免触发限制
    TimeoutStartSec=30  # 启动超时设为30秒
    
    [Install]
    WantedBy=multi-user.target
    • 核心修改Type=simple 配合 --no-daemon 让花生壳在前台运行(避免systemd误判服务未启动),同时延长重启间隔。
  3. 保存退出,重新加载配置:

    bash 复制代码
    sudo systemctl daemon-reload
3、重置启动限制并测试
  1. 清除之前的失败记录:

    bash 复制代码
    sudo systemctl reset-failed phddns.service
  2. 手动启动服务并检查状态:

    bash 复制代码
    sudo systemctl start phddns.service
    sudo systemctl status phddns.service
    • 若显示 active (running),保持服务运行5分钟以上,确认不会自动退出(排除服务自身崩溃问题)。
4、验证自启(关键步骤)
  1. 若手动运行稳定,重启系统测试:

    bash 复制代码
    sudo reboot
  2. 重启后立即查看状态(观察启动过程):

    bash 复制代码
    sudo journalctl -u phddns.service -f  # 实时查看服务日志
    • 若日志显示"启动成功"且状态为active,则自启生效。
    • 若仍失败,日志会显示具体退出原因(如"网络超时""权限拒绝"),针对性解决:
      • 网络超时:在ExecStart前添加延迟,如 ExecStartPre=/bin/sleep 20(延迟20秒启动)。
      • 权限问题:在[Service]段添加 User=root(确保以root权限运行)。

通过以上步骤,可解决服务频繁退出导致的自启失败问题。核心是确保花生壳能稳定运行,再通过调整启动时机和服务类型适配systemd的管理逻辑。

六、常用操作命令

  • 启动服务:sudo phddns start
  • 停止服务:sudo phddns stop
  • 重启服务:sudo phddns restart
  • 查看状态(含 SN 和登录信息):sudo phddns status
  • 查看日志:tail -f /var/log/phddns.log

七、注意事项

  1. 若穿透失败,检查:

    • 内网服务是否正常运行(如 telnet 内网IP 内网端口 测试)。
    • 路由器是否开启了对应端口的转发(部分场景可能需要)。
    • 防火墙是否放行端口(如 sudo ufw allow 端口号)。
  2. 免费版花生壳有流量和映射数量限制,如需稳定使用,可考虑付费套餐。

  3. 若系统为 ARM64 架构(如 Ubuntu 20.04 ARM64),需下载对应架构的 deb 包(官网标注"arm64")。

通过以上步骤,即可在 Ubuntu ARM 设备上使用花生壳实现内网穿透。

相关推荐
想唱rap8 分钟前
MYSQL在ubuntu下的安装
linux·数据库·mysql·ubuntu
小小工匠32 分钟前
LLM - 从定制化 Agent 到 Universal Agent + Skills Library:下一代智能体架构实践
架构·定制化agent·universal agent·skill library
neoooo1 小时前
🍃Spring Boot 多模块项目中 Parent / BOM / Starter 的正确分工
java·后端·架构
菜鸟的迷茫1 小时前
为了防雪崩加了限流,结果入口先挂了
java·后端·架构
zhyf1191 小时前
零刻AI Max395(Ubuntu 24.04)AMD 显卡监控工具(amdgpu_top)部署手册
linux·运维·ubuntu
No芒柠Exception1 小时前
从开发到上线的CI/CD 完整流程
后端·面试·架构
切糕师学AI2 小时前
ARM 应用程序状态寄存器APSR的整数状态(NZCV)位
arm开发·寄存器·apsr
攀登的牵牛花2 小时前
前端向架构突围系列 - 框架设计(四):依赖倒置原则(DIP)
前端·架构
lizhongxuan2 小时前
Manus: 上下文工程的最佳实践
算法·架构
小酒星小杜2 小时前
在AI时代,技术人应该每天都要花两小时来构建一个自身的构建系统-Input篇
前端·程序员·架构