目录

拆解一个个人 4G SMS Gateway:Air780E、Docker 与飞牛OS实践

发表于
10 4.7~6.0 分钟 2094

本项目仅用于个人设备管理、海外号码维护和物联网实验场景,不涉及批量短信、验证码接收、营销推广等用途。

  1. 起初是发现手机sim卡槽不够用了。我寻思着有没有什么方案可以在我的飞牛上跑短信收发及定时保号

  2. 发现https://github.com/dushixiang/uart_sms_forwarder 这个方案,非常适合我,我刚好有一台n100的飞牛nas。基于 合宙Air780 XXX 系列设备的短信转发系统,支持接收短信并通过串口转发到上位机。该项目支持

    • 短信转发
    • 短信记录
    • 发送短信
    • 来电通知
    • 支持钉钉、企业微信、飞书、自定义 webhook、邮箱通知
    • 计划任务发送短信
  3. 实现效果如图所示

    image

  4. image

教程

air780硬件初始化

  1. 下载luatools烧录底层core固件 和 项目lua脚本(在github项目根目录就有)

image

  1. 如图所示,我用的是air780ehv,则选择这个固件,记得是luatos。版本都可

image

  1. 接着我们直接刷写一下底层固件先,先刷他个一遍,注意目录如图所示,下载的文件在这个目录下。​​

image

image

  1. 然后点项目管理测试,把脚本和对应的刚才刷入固件放进去,直接点击下载脚本即可。这里的lua脚本在github项目中

image

  1. 完成后如图所示,可以看到UART 初始化成功。那么剩下的只有成功跑docker了。

image

image

部署UART

修改配置文件(docker-compose and config)

直接拉取俩个文件,dcoker-compose.yml 和 config.yaml(config.example.yaml 改名一下)

其中要修改的部分

docker-compose修改

device,这个必须改

(不可照抄,可用ls /dev/serial/by-id 去查看。我这里是飞牛os) 看到airm2m建议直接全部映射,不要只映射AT,因为不太行,我试过。也不要直接映射ttyxxx,拔插后容易导致识别变动,建议以id为准。

    devices:
       - /dev/serial/by-id/usb-AirM2M_AirM2M_Compo_000000000001-if02:/dev/ttyUSB0
       - /dev/serial/by-id/usb-AirM2M_AirM2M_Compo_000000000001-if04:/dev/ttyUSB1
       - /dev/serial/by-id/usb-AirM2M_AirM2M_Compo_000000000001-if06:/dev/ttyUSB2

config修改

这里分为俩个部分,一个是32位随机字符串,我是直接用openssl rand -base64 32生成,

还有一个是bcrypt加密,注意我这里用的是2b版本+12位。(2y版本是临时修复,2a版本在php中有安全隐患)

 # JWT配置
  JWT:
    # 随机生成一个 32 字节的字符串,推荐使用 openssl rand -base64 32 生成
    Secret: "D9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3OOLgbk="
    ExpiresHours: 168 # 7天
  Users:
    # 使用 Bcrypt 加密,默认密码为 admin123,建议首次登录后修改密码,搜索 bcrypt在线加密网站 即可
    admin: "$2b$12$W2YxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXlkJS"

直接 docker compose up -d即可,如果是和我一样的飞牛,点点鼠标就行啦、

这是成功跑起来之后的日志,如果没有跑起来,可以进docker,终端看一下是否成功映射了设备,直接看有没有/dev/ttyUSB0 0可以换成1和2

image

思考

如此虽然可保号,但对于运营商而言,是可以看到设备imei被用于iot相关用途,特别是这个场景下,只进行保号,很容易被识别为短信网关,建议没事发俩条短信,带点内容,发给谁不重要,重要的是多发。风险来说不如长时间待机在iphone下。

常见问题

  1. 我跑起来链路断开

    1. 进docker终端。检查是否成功映射全部关于780的端口,不要只映射AT口
    2. 上述检查完毕可更换core版本重新刷写,某些版本不支持lua.main里面的内容
  2. estk,xesim等是否可使用

    1. 实测estk可使用,但切换esim不可
  3. 默认登录账号密码为admin admin123

  4. 为什么我短信发不出去

    1. 带区号比如+44 77xxxx 中间去掉空格 +4477xxxx +861888888
    2. 对面号or你号出问题了,换一个吧兄弟

其余问题和讨论皆可评论区留言