
干售后这些年被问得最多的问题之一就是智能售货机明明装好了、货道也测通了结果一到客户现场就联不上网。尤其像 InBOX710 这种长期放在无人值守点位的嵌入式工控机它不像手机没网了还提示个提示框很多时候设备表面上跑着云端却显示离线补货员到现场才发现交易记录根本没传上去。这篇文章就是把我这些年跟售货机联网问题死磕的经验整理一遍围绕 InBOX710 在不同网络环境下的接入方案、配置步骤和排查思路展开覆盖有线网络、WiFi、4G/5G 这三种最常见的现场接入方式。适合正在做售货机落地部署、远程运维或者被现场网络环境搞得焦头烂额的朋友。先声明一下下面所有命令和配置示例默认 InBOX710 上跑的是 Ubuntu 20.04 或 Debian 系 Linux。如果厂家给你预装的是定制系统命令可能略有不同但排查思路完全通用。1. 先把 InBOX710 的联网逻辑理清楚1.1 一台售货机到底要连哪些网很多人以为售货机联网就是把网线插上、能上微信就行实际完全不是这么回事。一台正常运营的智能售货机业务流量至少分成三路第一路是交易数据顾客扫码付款后主控把货道出货结果上报给运营平台这笔数据必须可靠送达丢了就是钱的问题第二路是支付回调微信、支付宝的支付结果通知会从公网打到你配置的服务器地址虽然现在主流方案是设备主动轮询或走支付平台的云消息但网络不能断是所有前提第三路是运维数据包括温控、故障代码、库存余量、远程升级包这些数据频率不高但对连接的稳定性要求很苛刻。InBOX710 在这里扮演的角色不是普通 PC而是 7x24 小时持续运行的边缘网关。它一边通过串口、USB、以太网口跟售货机主控通信一边把业务数据转换成网络请求发到云端。所以它的网络配置是否合理直接决定了一台售货机能不能正常营业。1.2 InBOX710 常见网络接口和能力InBOX710 这类嵌入式工控机网络硬件一般标配两个千兆以太网口部分型号带 WiFi 模块和 mini-PCIe 接口可以插 4G/5G 模组。在我接触过的项目里双网口通常这么分工一个口接运营平台外网一个口接售货机主控的本地局域网或者一个接支付设备、一个接摄像头。多网口带来的好处是业务可以隔离坏处就是默认路由、DNS、网卡优先级一旦配错设备就会间歇性抽风。硬件能力看明白了再去看软件。InBOX710 出厂一般预装 Linux 系统网络管理方式可能是 netplan、NetworkManager 或者 systemd-networkd。不管哪一种最终都要落到 IP 地址、子网掩码、网关、DNS 这四件套上。后面所有排查本质上都是在查这四件套有没有配对。1.3 联网失败的分层排查思路现场排查最忌讳一上来就改配置。我习惯按照网络分层去定位问题顺序是物理链路、数据链路、网络层、传输层、应用层。物理链路最简单网线没插紧、水晶头氧化、WiFi 信号弱这些问题先用眼睛和工具排除掉。数据链路层主要看交换机端口是否开启、是否做了 VLAN 隔离、DHCP 能不能正常分配地址。网络层看 IP、子网、网关、路由表这个层是最容易出问题的。传输层看端口通不通比如云端服务器端口有没有被防火墙拦。应用层看 DNS 解析、TLS 证书、时间同步很多离线的假象其实是时间错误导致证书校验失败。把这五层在脑子里过一遍再去看设备发的什么错就不会像无头苍蝇一样乱试。2. 不同现场环境下的接入方案选型2.1 商铺、便利店和家庭式点位WiFi 最省事但别裸奔小商铺、便利店、写字楼茶水间这类场景绝大多数没有预留网口给售货机拉网线又太麻烦WiFi 就成了首选。InBOX710 自带 WiFi 模块的话连上商户的路由器就能用。但这里必须提醒一句商户 WiFi 不是为你一台机器服务的路由器重启、密码更换、信号干扰、访客网络隔离任何一个变化都能让售货机一夜之间变成离线户。所以选型时要考虑清楚几点优先接入商户的办公网络还是访客网络访客网络往往有隔离设备之间不能互通如果云端平台需要从公网访问设备做调试访客网络会很费劲。更重要的是要让商户网管把售货机的 MAC 地址加入 DHCP 白名单或者分配固定 IP不然后面 IP 冲突够你喝一壶。WiFi 方案适合点位数量少、网络环境相对可控的场景不适合大规模部署。2.2 商场、写字楼有线 DHCP 加 MAC 登记是标准操作商场和写字楼的弱电间基本都有交换机也愿意给商户或设备分网络口。对 InBOX710 来说有线接入是稳定性最好的方案优先级远高于 WiFi。现场实施时我一般要求弱电工程师把售货机的网口接到楼层交换机上然后在交换机或者核心路由器里给设备 MAC 绑定固定 IP。这样做最大的好处是避免 DHCP 地址变化。这类环境的坑也很典型有些商场会做端口隔离比如一个端口只允许一个 MAC 通过你后面想把开发笔记本临时插到同一根网线上调试会发现完全不通还有些商场会做 VLAN 划分网络管理员口头上说“通了”实际上给你划到了一个访问不了外网的 VLAN。所以即使是有线环境签约前也要确认清楚是否能访问公网、是否需要配置静态 IP、有没有白名单限制。2.3 校园、园区和政企大楼认证网络要提前沟通校园、大型园区、政企大楼这类网络环境是售货机联网的“重灾区”。原因是这类网络普遍存在认证机制常见的有 Portal 认证、802.1X 认证、MAC 白名单、IP 绑定。InBOX710 是无头设备没法像手机一样每次弹个网页让你输账号密码所以必须提前跟网络管理员确认走什么认证方式。如果网络支持 MAC 白名单把 InBOX710 的 MAC 地址报给管理员让设备在无感知的情况下接入这是最省心的。如果必须用 802.1X 认证就需要在系统里配置 wpa_supplicant把账号密码写进配置文件这个我后面细讲。最怕的是 Portal 认证无人设备很难自动完成网页认证碰到这种网络我建议直接放弃接入改用 4G/5G 走单独的一条链路否则后续维护成本高到怀疑人生。2.4 户外、移动和临时点位4G/5G 蜂窝网络兜底自动售货机经常出现在露天公园、建筑工地、展会现场这些地方根本没有网络接口WiFi 信号也不现实4G/5G 模块就成了唯一选择。InBOX710 插上物联网 SIM 卡通过蜂窝网络直接连到云端不依赖现场的任何网络设施部署速度最快。蜂窝网络方案也有自己的难题SIM 卡锁定运营商、物联网卡需要配置专用 APN、信号强弱受天线位置影响、流量套餐用尽后设备会欠费停机。这些细节我在第五部分展开。选型上如果业务允许我最推荐“有线为主、4G 备用”的双链路方案两条链路同时存在业务走有线无线做心跳探测和故障接管这个方案能让离线率降到极低。3. 有线网络环境配置从网线插上到稳定在线3.1 先确认网卡和 DHCP 状态接到一个网络不通的现场我第一件事不是改配置而是先看系统认没认到网卡。在 InBOX710 的终端里执行ip link ip aip link能列出所有网卡的状态。如果看到eth0后面跟着DOWN说明网线没插好或者对端交换机端口没有 up如果看到UP但没有 IP 地址可能网卡没启用 DHCP也可能上层没有分配地址。接着执行ip route show这条命令看默认路由。有线环境上网不通最常见的原因就是没有默认路由或者默认路由走错了网卡。再看 DNS执行cat /etc/resolv.conf如果里面什么都没有或者指向了一个不可达的内网地址大概率是网络管理员没给 DHCP 下发 DNS或者动态配置被覆盖了。3.2 用 netplan 配置 DHCP 和静态 IPUbuntu 20.04 默认的网络配置工具是 netplan配置文件在/etc/netplan/下面一般是.yaml结尾。先用ls /etc/netplan/找到实际文件再执行sudo vim /etc/netplan/01-netcfg.yaml动态获取 IP 的配置长这样network: version: 2 ethernets: eth0: dhcp4: true dhcp4-overrides: use-dns: true optional: true这里dhcp4-overrides.use-dns设为true意思是允许 DHCP 服务器下发的 DNS 覆盖本地配置。在很多商场网络里如果 DHCP 下发了一个内网 DNS但你业务要访问公网域名这个选项反而会坏事。遇到这种情况把它改成false然后手工指定公共 DNS。静态 IP 的配置更常见network: version: 2 ethernets: eth0: dhcp4: false addresses: - 192.168.10.88/24 routes: - to: default via: 192.168.10.1 nameservers: addresses: - 223.5.5.5 - 114.114.114.114注意addresses里的地址必须带子网掩码长度/24就对应255.255.255.0。网关地址一定要和 IP 在同一网段否则 apply 之后默认路由根本不会生效。DNS 我习惯用国内公共 DNS223.5.5.5是阿里 DNS114.114.114.114是 114DNS都比运营商默认 DNS 稳定。配置改完不要直接netplan apply先执行sudo netplan generategenerate只负责把 YAML 转成后端配置文件语法有问题会直接报错不会影响当前网络。确认没有报错之后再执行sudo netplan apply。这个习惯能避免一个常见事故改错了配置apply 的瞬间 SSH 断开而你人不在设备旁边。3.3 双网卡环境下的路由优先级设置InBOX710 如果同时接了外网和售货机主控局域网必须处理好默认路由的优先级。Linux 系统里每个网卡如果都通过 DHCP 获取到网关系统会按路由 metric 值选一条作为默认路由。没有显式指定的情况下谁先启动谁就是默认路由这就有可能导致访问外网的数据包走了接主控的那张网卡直接发到主控的局域网里去了。解决方法是给网卡指定 metric。netplan 里可以这样写network: version: 2 ethernets: eth0: dhcp4: true dhcp4-overrides: route-metric: 100 eth1: dhcp4: true dhcp4-overrides: route-metric: 200metric 越小优先级越高这样所有默认流量都会优先走 eth0。如果业务要求某些网段必须走 eth1还需要加策略路由这个有点复杂一般售货机场景用不到但你要是避免不了最简单的方案是给 eth1 的配置里只写静态 IP不写默认网关。3.4 加一个简单的网络自检脚本有线网络虽然稳定但交换机重启、网线被误拔这些事仍然防不胜防。我的习惯是在 InBOX710 里放一个自检脚本每分钟执行一次发现默认网关 ping 不通就自动重启 networkd 服务并把日志写到文件里。#!/bin/bash GW$(ip route | awk /default/ {print $3; exit}) if [ -z $GW ]; then echo $(date) no default route, restart networkd /var/log/net_check.log sudo systemctl restart systemd-networkd exit 1 fi if ! ping -c 2 -W 2 $GW /dev/null 21; then echo $(date) gateway $GW unreachable /var/log/net_check.log sudo systemctl restart systemd-networkd fi这个脚本不解决所有问题但对于网关临时抽风非常有效。把脚本放到/usr/local/bin/配合 cron 执行能明显减少现场“离线后不恢复”的工单。4. WiFi 网络环境配置信号、认证与漫游4.1 用 nmcli 快速连接 WiFiInBOX710 如果装了 NetworkManager用nmcli命令连接 WiFi 是最快的。先执行nmcli dev wifi rescan nmcli dev wifi list列表里能看到周围的 SSID、信号强度和加密方式。连接普通 WPA2 网络nmcli dev wifi connect YourSSID password YourPassword这条命令会自动生成一个连接配置文件默认autoconnect是开的只要系统重启或者 WiFi 断开重连它都会自动恢复。如果你要连接的 WiFi 是隐藏 SSID加一个hidden yes参数nmcli dev wifi connect YourSSID password YourPassword hidden yes这里有个容易踩的坑InBOX710 默认可能开启了 WiFi 省电模式无线网卡为了省电会周期性休眠休眠期间数据包全部丢失表现就是设备偶尔离线、偶尔在线。关掉省电模式iwconfig wlan0 power off如果你的系统里没有 iwconfig用 NetworkManager 的配置也一样nmcli connection modify YourSSID 802-11-wireless.powersave 24.2 企业认证 WiFi 的配置方式校园、政企大楼常见的 WPA2-Enterprise WiFi不能像家庭 WiFi 那样只填密码。这类网络需要 802.1X 认证InBOX710 要连上去最可靠的方式是用 wpa_supplicant。写一个/etc/wpa_supplicant/wpa_supplicant.confctrl_interface/var/run/wpa_supplicant ap_scan1 network{ ssidCampusWiFi key_mgmtWPA-EAP eapPEAP identityyour_username passwordyour_password phase2authMSCHAPV2 }然后停掉 NetworkManager 对这张网卡的管理改用 wpa_supplicant 连接。这个配置过程比较绕而且不同网络的 EAP 方式可能不同有的用 TLS、有的用 TTLS需要跟网络管理员确认。如果对方也讲不清楚是什么认证方式我劝你直接放弃改用白名单或 4G。多数校园网管理员其实不愿意为了一台售货机开 802.1X 账号他们更愿意做 MAC 白名单。所以去现场之前先问清楚有没有 MAC 白名单通道有的话把 InBOX710 的 MAC 地址报过去比折腾 wpa_supplicant 省事一百倍。4.3 WiFi 信号差和漫游掉线WiFi 方案翻车十有八九是信号问题。售货机外壳通常是金属框架WiFi 天线如果被压在货道旁边信号衰减非常严重。我的建议是天线延长线必须拉出来固定在机器外部或顶部避免被金属遮挡。还有一个常被忽略的问题2.4G 和 5G 频段的选择。5G 带宽大、干扰少但穿墙能力弱2.4G 穿墙好但蓝牙、微波炉、隔壁 WiFi 都在这个频段干扰很重。对售货机这种低带宽、高稳定性要求的业务我一般优先用 2.4G前提是现场信道不要太拥挤。如果你用手机能看到几十个 WiFi 信号最好用 WiFi 分析仪选一个空闲信道再让网络管理员把 AP 固定到那个信道。漫游掉线也很烦人。售货机放在商场通道里顾客走来走去不会影响它但它连接的 AP 可能在商场不同区域之间做了负载均衡或漫游切换切换的瞬间 IP 可能发生变化。对 InBOX710 来说IP 一变化长连接断掉重连期间的交易数据就会延迟上报。解决思路是避免设备在多个 AP 之间跳来跳去让网络管理员把售货机连接的那个 SSID 绑定到距离最近的 AP 上或者直接给设备分配固定 IP。5. 蜂窝网络环境配置4G/5G 模块与数据链路5.1 先确认 4G/5G 模块有没有被识别InBOX710 插上 4G/5G 模块后系统不一定自动识别。先看设备节点lsusb ls /dev/ttyUSB* ip link如果能看到 USB 设备并且出现了wwan0或者usb0这类虚拟网卡接口说明模块驱动已经加载。如果只有 USB 设备但没有网卡接口大概率是模块内部没有切换到 ECM/RNDIS 模式需要发 AT 指令或者装驱动。有些模块会出现在/dev/ttyUSB0、/dev/ttyUSB1这通常是 AT 指令口。我可以先用串口工具连上去发一条AT模块返回OK说明通信正常。反过来说如果你连AT都没反应先去查模块供电和 SIM 卡座别急着折腾系统。5.2 APN 配置是关键物联网卡和普通手机卡不一样绝大多数物联网卡必须使用专用 APN 才能上网。APN 是接入点名称相当于运营商网络里的一个通道标识配置错了模块显示已注册网络但就是 ping 不通外网。APN 信息一般由 SIM 卡供应商提供比如“cmnbiot”“cmiot”之类的不同套餐、不同项目可能完全不同。最好的办法是让卡商直接给你一张表写明 APN、拨号号码、用户名和密码。拿到之后如果是用 ModemManager 管理模块可以执行mmcli -m 0 --create-bearerapnyour_apn,ip-typeipv4 mmcli -m 0 --connect-bearer1如果厂家预装了自己的拨号脚本就去找/etc/ppp/peers/或/etc/network/interfaces.d/下的配置把 APN 填进去。注意APN 填写错误最常见的症状是“信号满格但上不了网”排查的时候别一门心思扎在信号上。5.3 有线为主、蜂窝备用的双链路路由策略在重要点位我的标准做法是 InBOX710 同时接有线和 4G两条链路都配好但默认路由优先级不同。有线走主链路4G 走备用链路。这样即使现场网线被拔了4G 能立刻接管网络云端不会判定设备长时间离线。具体实现可以这样理解给 eth0 的默认路由设置较小的 metric比如 50给 4G 网卡的默认路由设置较大的 metric比如 200。当 eth0 链路正常时所有数据都走有线。eth0 挂了系统会自动走 metric 更大的 4G 路由。但光靠内核路由的 metric 机制不够可靠我遇到过 eth0 链路显示 up、但实际网络不通的情况。这种时候需要监控脚本主动检测一旦发现默认网关连续丢包就去改路由表ip route replace default via 192.168.1.1 dev eth0 metric 50 ip route replace default via 10.64.64.64 dev wwan0 metric 200能的话在应用层面也做一层兜底让售货机客户端检测到云平台连不上时主动触发一次网络切换。5.4 SIM 卡和弱网问题处理蜂窝网络场景里SIM 卡的问题五花八门卡没激活、套餐流量用完、机卡绑定被换机锁卡、卡片松动接触不良。很多卡商为了防止 SIM 卡被挪作他用会做机卡绑定也就是 SIM 卡只能在一台设备上使用。碰到售后需要换一台 InBOX710 的情况必须拿着新设备的识别码去卡商处解绑不然插上去是死活上不了网的。弱网环境也要注意4G/5G 信号在售货机内部可能被金属外壳屏蔽。解决办法是把天线延长到机器外部并且尽量远离电源线和电机驱动线避免干扰。安装时不要图省事天线直接贴在铁皮上否则信号强度可能从满格直接掉到两格。6. 远程运维与网络稳定性系统工程6.1 设备主动上行的远程管理通道售货机分散在城市各个角落指望每台机器都有公网 IP 不现实。InBOX710 的远程管理最好采用“设备主动上行”的模式让设备开机后主动向云端管理平台建立长连接云平台下发指令也是通过这条连接来完成。实现上无非是 HTTPS 轮询、MQTT、WebSocket 这几类。MQTT 在物联网设备里用得最多InBOX710 上跑一个 MQTT 客户端连接云端 Broker保持心跳云端就能实时感知设备在线状态。这里有个安全细节要注意连接地址尽量用域名而不是 IP因为云端迁移时可以改 DNS 指向不用逐台设备去改配置。防火墙方面只需要保证设备能访问云端服务器的 443 或 8883 这类端口即可不需要在设备侧开放任何入站端口也不需要给设备配端口映射。这一点在企业网络里特别重要很多政企客户不允许内网设备开放公网入站端口主动上行的模式几乎不会遇到政策阻力。6.2 NTP 校时为什么会成为联网“假故障”远程运维时最坑的一个问题设备明明在线但所有 HTTPS 请求都失败日志里全是证书错误。这种情况八成是系统时间不对。InBOX710 如果长期断电重启后系统时间可能停留在出厂日期。而 HTTPS 连接的 TLS 证书校验非常严格证书有效期是从某个时间到某个时间如果设备系统时间不在有效期内证书校验直接失败表现就是“上不了网”。这个和网络本身半毛钱关系都没有但你从网络配置查三天都查不出来。解决方法是在网络配置好的第一时间确认时间同步timedatectl set-ntp true timedatectl set-timezone Asia/Shanghai如果客户内网不能访问公网 NTP 服务器就让管理员提供一个内网时间服务器然后手动配置systemd-timesyncdsudo vim /etc/systemd/timesyncd.conf[Time] NTPntp.internal.example.com FallbackNTPntp.aliyun.com改完重启服务sudo systemctl restart systemd-timesyncd经验之谈每次现场开局配完 IP 之后我做的第二件事就是校时校完时再看业务连通性能避开大量“假故障”。6.3 硬件看门狗、应用看门狗与自动恢复售货机这种无人值守设备断网后如果没人去现场必须能自己恢复。除了前面提到的网络自检脚本系统层面还要有看门狗机制。InBOX710 主板如果带硬件看门狗可以在系统里写一个程序周期性喂狗一旦系统死机或者网络服务卡死看门狗会自动重启整机。如果没有硬件看门狗用 systemd 也能实现软件层面的保活。比如给网络检测脚本做成一个 systemd 服务配置Restartalways[Unit] DescriptionNetwork health check Afternetwork-online.target [Service] Typesimple ExecStart/usr/local/bin/net_check.sh Restartalways RestartSec30 [Install] WantedBymulti-user.target再把 InBOX710 上的关键业务进程也用 systemd 托管配置好Restarton-failure这样即使链路恢复后业务进程没起来系统也能自动拉起来不用人工干预。7. 常见问题排查速查与避坑笔记7.1 我常用的五步定位法现场拿到一台 InBOX710 说“连不上网”我会按下面五步走每一步都想清楚再动手第一步看物理链路。有线就查网口灯无线就查信号强度4G 就查天线和 SIM 卡。物理层不过后面全白搭。第二步看 IP 地址。执行ip a确认网卡有没有拿到 IPIP 是不是被冲突了。很多商场网络管理员会手动分配一堆静态 IP你随便填一个很可能跟别人撞车。第三步看默认网关和路由。执行ip route show确认默认路由存在并且指向正确的网关。双网卡环境尤其要确认路由优先级。第四步ping 网关和公网地址。先ping 网关通了再ping 223.5.5.5都不通就是路由或防火墙问题网关通但公网不通就是上层出口问题。第五步解析域名并实际请求。执行dig www.baidu.com看 DNS 正不正常再curl -I https://api.example.com看业务地址通不通。到这一步基本能定位出是 DNS、证书、时间还是业务服务器的问题。7.2 典型问题速查表故障现象常见原因处理办法网口灯亮但 ping 不通网关IP 冲突、交换机 VLAN 隔离、网线接触不良先arping查冲突再让网管查交换机端口DHCP 一直拿不到 IP上层 DHCP 关闭、MAC 被拉黑、网线连错端口改用静态 IP或联系网管检查端口和地址池WiFi 能连上但上不了网Portal 未认证、DNS 被劫持、网络隔离完成认证改用白名单检查 DNS 设置4G 信号满格但网络不通APN 配错、SIM 卡欠费或停机、机卡绑定向卡商确认 APN检查卡状态重新插拔HTTPS 请求全部失败系统时间不对、证书链不完整校时更新 CA 证书设备频繁离线、自动恢复双网卡路由混乱、WiFi 省电、看门狗设置错误检查 metric关闭省电重新配置服务这些故障我都是一次一次踩出来的每个都有过“排查两小时原因一句话”的经历。7.3 几条落地实践心得第一去现场前先让客户填一张网络环境信息表内容包括是否 DHCP、是否静态 IP、是否需要 MAC 登记、是否有 Portal 认证、能否访问公网、DNS 地址是多少。信息越全现场耗时越短。第二InBOX710 的配置改完以后一定要备份配置文件。我习惯把所有点位建一个目录按“设备序列号-日期”存一份 netplan 配置、一份拨号配置、一份巡检记录后面再去现场或者远程排障直接对照历史配置能省很多时间。第三重要点位不要贪便宜只用单条网络链路。售货机是运营设备每离线一分钟都是损失一条 4G 备用链路每个月多花不了多少钱但能帮你挡住“商场弱电间施工挖断网线”这种完全不可控的事故。第四所有现场知识不要只放在自己脑子里能写进运维文档就写进文档能固化到脚本就固化到脚本。我见过太多设备第一次去是好的第二次去发现时间又偏了、DNS 又被改回去了原因就是现场没有标准化的自恢复机制。最后再分享一个小技巧每次开局配完网络后在 InBOX710 上跑一次curl -v https://api.example.com不是看返回结果而是看 TLS 握手日志。只要能看到SSL connection using TLS...就说明物理链路、IP、路由、DNS、系统时间、证书这串链路全部通了。以后所有网点开局的“最后一哆嗦”都用这一个命令来验收心里最踏实。