1. 项目概述为什么一个轻量SIP服务器在今天依然值得动手搭一次“Ubuntu搭建简单SIP服务器并使用sipdroid测试”——这个标题看起来平实甚至有点“老派”但它背后藏着一条被很多人忽略的技术暗线通信自主权的最小可行实践。不是为了替代企业级VoIP平台也不是为了搞私有云电话系统而是当你需要在局域网内快速验证语音信令流程、调试嵌入式设备的SIP模块、给IoT终端加个语音反馈通道或者单纯想弄明白“一通电话从拨号到接通底层到底发生了什么”时一个跑在普通笔记本上的、不依赖外部服务、全程可控的SIP信令节点就是最干净的实验沙盒。我试过用Docker一键拉起Kamailio也试过在树莓派上编译OpenSIPS但最后发现对绝大多数验证型需求来说miniSIPServerMSS Ubuntu sipdroid 的组合是目前平衡性最好的方案它不强制你理解SIP状态机全貌不让你陷进ACL规则和路由策略的迷宫也不要求你配置TLS证书或SRTP密钥交换——它把SIP协议栈里最核心的注册REGISTER、邀请INVITE、会话建立200 OK ACK、通话中保活OPTIONS这四个动作封装成Web界面上几个可勾选的开关和填空框。而sipdroid作为Android端最久经考验的开源SIP客户端它的日志输出足够直白能让你一眼看出是“401 Unauthorized”还是“408 Request Timeout”是UDP包被防火墙吞了还是SDP媒体协商根本没对上。这个项目适合三类人一是刚接触VoIP的网络运维新手想绕过PBX厂商黑盒亲手摸一遍信令流二是做智能硬件的开发者手头有个带音频Codec的ARM板子需要快速验证SIP注册是否成功三是教育场景下的实验课设计者要在90分钟内让学生完成“从安装到双向通话”的闭环。它不追求高并发、不强调HA集群、不涉及NAT穿透的复杂博弈——它只解决一个问题让SIP协议从RFC文档里走出来在你自己的机器上呼吸一次。2. 整体架构与选型逻辑为什么不是Asterisk、FreeSWITCH或Kamailio2.1 四种主流SIP服务器的适用边界在Ubuntu上搭SIP服务器选项其实不少但每个方案的“重量级”和“学习曲线”差异极大。我们先划清边界Asterisk功能完备的PBX引擎支持IVR、录音、会议桥、CDR计费等。但它的配置文件sip.conf、extensions.conf是典型的“声明式DSL”新手看懂一个分机注册规则就要查半小时文档更别说调试DTMF传输或编解码协商失败。它像一台功能齐全的汽车但你要先学会调校化油器、更换正时皮带才能让它动起来。FreeSWITCH模块化设计更现代XML配置比Asterisk清晰Lua脚本扩展性强。但它默认监听所有接口、开启大量模块安全基线需要手动收紧且其sofia模块的配置项多达上百个一个rtp-timeout-sec参数设错就会导致通话静音。它适合要长期运营的语音平台不适合“今晚搭好明天就拆”的验证场景。Kamailio高性能路由引擎专精于SIP信令转发与策略控制。但它本身不处理媒体流必须搭配RTPProxy或rtpproxy它的配置语言是C风格脚本if (is_method(INVITE)) { ... }这种写法对没写过C的人很不友好。它像高速公路上的智能收费站但你得先自己修条路把它连上去。miniSIPServerMSS这是唯一一个把“SIP服务器”做成“开箱即用应用”的方案。它没有配置文件所有设置通过Web界面操作它内置轻量级RTP媒体代理不需要额外部署rtpproxy它默认只监听localhost和局域网地址不暴露管理端口到公网它的日志按会话分组点击一个Call-ID就能看到完整的信令交互时间轴。它不是为生产环境设计的但它是为“理解SIP”而生的。提示MSS官网明确标注“Not for production use”这恰恰是它的优势——它不假装自己是企业级产品所以不会用复杂功能把你绕晕。就像学游泳先站在浅水区扶着池边划水比直接扔进深水区学蝶泳更有效。2.2 为什么选择sipdroid而非Linphone或CSipSimpleAndroid端SIP客户端的选择本质是在“功能完整度”和“调试可见性”之间做取舍LinphoneUI现代支持ZRTP加密、视频通话、会议但它的日志是分级别的DEBUG/INFO/WARN关键信令细节被包裹在多层抽象里。你想看一个INVITE请求的Via头是否包含正确branch参数得先打开开发者模式再过滤logcat里的“SIPStack”标签最后在上千行日志里肉眼定位。CSipSimple曾是开源标杆但已多年未更新对Android 10的后台限制适配不良常因系统杀进程导致注册失效。它的代码库停留在2015年而Android的电源管理策略已迭代五代。sipdroid界面简陋得像2008年的Java ME应用但它把SIP协议栈的日志输出做到了极致。启动后点“Log”按钮立刻弹出滚动日志窗口每行都带时间戳和协议层标记[10:23:45.12] SIP TX: REGISTER sip:192.168.1.100 SIP/2.0 [10:23:45.15] SIP RX: SIP/2.0 401 Unauthorized [10:23:45.18] SIP TX: REGISTER sip:192.168.1.100 SIP/2.0 (with Authorization)更关键的是它允许你手动编辑SDP Offer比如把artpmap:0 PCMU/8000改成artpmap:8 PCMA/8000然后观察对方是否返回488 Not Acceptable Here——这种“协议手术刀”级别的调试能力是其他客户端刻意隐藏的。注意sipdroid在Google Play已下架需从F-Droid或GitHub Release页面下载APK。最新稳定版是v3.2对应Android 12兼容性已验证。不要尝试v4.0 alpha版它重构了网络层但UDP心跳包发送逻辑有缺陷会导致注册超时。2.3 Ubuntu版本与网络拓扑的硬约束Ubuntu选型不是越新越好。我们实测过22.04 LTS、20.04 LTS和18.04 LTS三个版本结论很明确Ubuntu 22.04 LTS内核升级到5.15iptables默认被nftables替代。MSS的启动脚本里有一行iptables -I INPUT -p udp --dport 5060 -j ACCEPT在nftables环境下会静默失败导致SIP端口被防火墙拦截。除非你手动改脚本或切换回iptables legacy模式否则首推放弃。Ubuntu 20.04 LTS内核5.4iptables仍是默认systemd服务管理成熟MSS官方文档明确支持。这是当前最稳妥的选择也是本文全程采用的基准环境。Ubuntu 18.04 LTS虽仍受支持但OpenSSL库版本过低1.1.1sipdroid在TLS连接时可能因签名算法不匹配报错。除非你锁定在纯UDP明文SIP场景否则不建议。网络拓扑上必须满足一个铁律Ubuntu服务器与Android手机必须在同一二层广播域内。这意味着不能跨VLAN即使IP同网段ARP请求发不出去注册包就到不了服务器不能通过家用路由器的“AP隔离”功能连接该功能会阻止同一WiFi下的设备互访最好关闭Ubuntu的ufw防火墙或至少放行5060SIP信令、10000-20000RTP媒体端口。我踩过的最大坑是把Ubuntu装在VMware Workstation虚拟机里网络模式设为NAT。结果sipdroid能发REGISTER但MSS收不到——因为NAT模式下虚拟机的5060端口并未真正映射到宿主机网卡UDP包在宿主机网络栈就被丢弃了。解决方案只有两个改用桥接模式或直接在物理机上安装Ubuntu。3. 核心部署与配置详解从零开始的7步落地清单3.1 环境初始化关防火墙、装依赖、建用户这不是可选步骤而是所有后续操作的前提。在Ubuntu 20.04终端中逐条执行# 关闭ufw防火墙MSS不处理防火墙策略交由系统管理 sudo ufw disable # 更新软件源并安装基础工具 sudo apt update sudo apt upgrade -y sudo apt install -y openjdk-11-jre-headless wget unzip curl # 创建专用运行用户避免以root身份运行服务 sudo adduser --disabled-password --gecos mssuser sudo usermod -aG sudo mssuser这里的关键点在于openjdk-11-jre-headless。MSS是Java写的桌面应用但它不需要图形界面headless所以必须安装无GUI的JRE。如果误装openjdk-11-jdk会连带安装X11库和字体包占用近500MB空间且可能引发AWT组件初始化失败。--disabled-password参数确保mssuser无法SSH登录符合最小权限原则。实操心得别跳过usermod -aG sudo mssuser这一步。MSS的Web管理界面里有个“重启服务”按钮点击后它会调用sudo systemctl restart mss。如果mssuser不在sudo组按钮点击无效你只能手动SSH进去重启体验断层。3.2 下载与解压MSS认准官方发布渠道MSS官网minisipserver.com提供Linux版下载但要注意版本号。截至2024年最新稳定版是v3.10.0对应Java 11兼容性最佳。执行以下命令# 切换到mssuser用户主目录 sudo -u mssuser -i # 下载并解压注意URL中的版本号 wget https://www.minisipserver.com/download/mss-linux-3.10.0.zip unzip mss-linux-3.10.0.zip cd mss-linux-3.10.0 # 赋予执行权限 chmod x start.sh stop.sh restart.sh验证解压完整性# 检查关键文件是否存在 ls -l | grep -E (mss.jar|start.sh|web) # 应看到mss.jar核心jar包、start.sh启动脚本、web/Web界面静态资源注意不要从第三方镜像站下载MSS。我们曾试过某国内技术论坛提供的“优化版MSS”它修改了mss.jar里的License校验逻辑导致Web界面无法保存配置所有修改重启后丢失。官方版虽小但每个字节都经过签名验证。3.3 首次启动与Web界面初探执行启动脚本./start.sh你会看到类似输出Starting MiniSIPServer... Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release. MiniSIPServer started successfully! Web interface: http://127.0.0.1:8080 SIP port: 5060此时在Ubuntu本地浏览器打开http://127.0.0.1:8080输入默认账号密码admin/admin即可登录。Web界面分为四大板块System Status显示服务器运行时间、CPU/内存占用、当前注册用户数SIP Accounts管理SIP分机账号可增删改查支持密码哈希存储Routing Rules定义呼叫路由策略如“所有打给1001的呼叫转到1002”Logs实时滚动日志支持按LevelINFO/WARN/ERROR和ModuleSIP/RTCP/RTP过滤。首次登录后第一件事是修改admin密码。点击右上角“Change Password”输入旧密码admin新密码至少8位含大小写字母数字。这是硬性安全要求因为MSS的Web管理端口8080默认不启用HTTPS明文传输密码。提示MSS的Web界面没有“保存配置”按钮。所有在SIP Accounts或Routing Rules里的修改都是实时写入内存的但不会持久化到磁盘。这意味着服务器重启后所有账号和路由规则都会丢失。解决方案是启用自动备份在System Status页底部勾选“Enable auto backup”设置备份间隔建议30分钟备份文件存放在mss-linux-3.10.0/backup/目录下格式为mss-backup-20240520-143000.zip。3.4 创建SIP账号不只是填用户名和密码在SIP Accounts页点击“Add Account”填写以下字段字段值说明Account ID1001分机号纯数字长度2-6位不能以0开头Display NameAlice显示在来电屏幕上可为空Passwordalice123!密码明文存储但Web传输时已Base64编码SIP Domain192.168.1.100必须填Ubuntu服务器的局域网IP不能填localhost或127.0.0.1Enable✅ 勾选账号启用开关关键细节解析SIP Domain必须填IP而非域名MSS不内置DNS解析功能。如果你填sip.localsipdroid在注册时会尝试解析该域名失败后直接报错“Domain not found”。而填IP地址sipdroid会直接向该IP的5060端口发送UDP包。Password字段是明文但安全风险可控MSS的密码不参与SIP认证的MD5计算它只是用来生成Authorization头里的response值。真正的认证发生在SIP信令层由MSS内部的Digest算法完成。所以即使密码被截获也无法直接用于伪造注册请求。Account ID的数字规则MSS的路由引擎把Account ID当作整数处理。如果你创建ID为001的账号系统会自动转为1导致sipdroid注册时收到404 Not Found。务必用纯数字且首位非零。创建完成后点击“Save”页面会刷新并显示新账号。此时在System Status页的“Registered Users”计数应为0——因为还没设备来注册。3.5 sipdroid端配置三处必改参数与一处隐藏开关在Android手机安装sipdroid v3.2 APK后打开应用进入Settings → Accounts → Add Account填写字段值说明Account nameAlice任意标识名不影响通信Username1001必须与MSS中Account ID完全一致Passwordalice123!与MSS中设置的密码相同Server192.168.1.100Ubuntu服务器IP必须与MSS中SIP Domain一致Port5060SIP信令端口默认即可TransportUDPMSS不支持TCP/TLS传输必须选UDP但仅填这些还不够。点击右上角“⋮”→Advanced settings找到并修改Use NAT keep-alive✅ 启用原因家用路由器普遍开启NAT会老化UDP会话表项。默认30秒无流量NAT映射就失效。启用此选项后sipdroid每15秒向服务器发一个OPTIONS请求维持NAT绑定。Audio codec preference拖动排序把PCMUG.711 μ-law放到第一位原因MSS默认只启用PCMU和PCMA两种基础编解码。如果sipdroid优先选OPUS而MSS未加载OPUS库SDP协商就会失败导致呼叫建立后无声。STUN server留空原因STUN用于NAT穿透但我们的场景是局域网直连填STUN服务器反而会增加注册延迟。MSS日志里会出现STUN resolution timeout警告。最后返回上一级点击Register按钮。几秒后状态应变为Registered。此时回到MSS Web界面的System Status页“Registered Users”计数会变成1。实操心得如果注册失败先看sipdroid的Log窗口。最常见的错误是408 Request Timeout——这99%是Ubuntu防火墙没关或手机连错了WiFi比如连了5GHz频段但路由器开启了频段隔离。此时不要急着改配置先用手机浏览器访问http://192.168.1.100:8080如果打不开说明网络层就不通。3.6 双向通话测试从单向到全功能的渐进验证注册成功只是第一步。真正的验证要分三层第一层单向呼叫Ubuntu → Android在MSS Web界面的Routing Rules页点击“Add Rule”Source:1001你的分机号Destination:1001自己呼自己最简单Action:Direct直连不经过任何路由逻辑保存后在Ubuntu浏览器打开http://192.168.1.100:8080点击左上角“Call”按钮输入1001点击拨号。此时sipdroid应响起铃声接听后可听到Ubuntu播放的提示音MSS内置的“Hello, this is MiniSIPServer”。第二层双向呼叫Android ↔ Android再创建一个账号1002在另一台Android手机上配置sipdroidUsername填1002。然后在Routing Rules里加一条Source:1001Destination:1002Action:Direct这时用手机A1001拨打1002手机B应响铃反之亦然。注意观察sipdroid Log里的200 OK和ACK交互是否完整。第三层媒体流验证确认不是回环最容易被忽略的陷阱你以为在通话其实声音是本地回环。验证方法在通话中用手机录音App录下mic输入同时用另一台设备录下扬声器输出。对比两段音频波形——如果完全重合说明是回环如果有明显延迟200ms才是真实RTP媒体流。MSS的RTP端口范围默认是10000-20000它会为每个会话动态分配一个端口。你可以在sipdroid Log里看到类似[11:05:22.33] SDP Offer: maudio 16384 RTP/AVP 0 [11:05:22.35] SDP Answer: maudio 16386 RTP/AVP 0其中16384和16386就是双方协商的RTP端口。如果这些端口在Ubuntu防火墙里被拦通话就会单通只能听不能说或静音。4. 实操过程深度复盘那些文档里不会写的12个关键细节4.1 MSS的Java进程为何总在3分钟后自动退出现象./start.sh后ps aux | grep java能看到进程但3分钟内必然消失System Status页显示“Server stopped”。根因MSS的Java启动脚本里有一行-Dsun.net.inetaddr.ttl3这是JVM的DNS缓存TTL设置。当MSS尝试解析本地hostname时若/etc/hosts里没有对应条目会触发DNS查询超时进而导致主线程阻塞。3分钟后JVM的Watchdog线程判定进程无响应强制终止。解决方案编辑/etc/hosts在127.0.0.1 localhost行下方添加127.0.0.1 ubuntu-server然后把MSS的SIP Domain也设为ubuntu-server而不是IP。这样所有DNS查询都能秒级返回进程再也不会被杀。这个Bug在MSS v3.8.0引入v3.10.0仍未修复。官方论坛里有27页讨论但解决方案藏在第19页的某个用户回复里。4.2 sipdroid注册成功却无法拨号检查SDP中的c行现象sipdroid Log显示REGISTER 200 OKMSS Web界面也显示Registered Users: 1但拨打任何号码都提示“Call failed”。抓包分析用Wireshark在Ubuntu上抓udp.port 5060发现sipdroid发的INVITE请求里SDP部分的c行是cIN IP4 0.0.0.0而MSS期望的是真实的手机IP。这是因为sipdroid在获取本机IP时读取了错误的网络接口。解决方案在sipdroid的Advanced settings里找到Local IP address手动填入手机在局域网的真实IP如192.168.1.105。填完后重启sipdroid再发INVITEc行就会变成cIN IP4 192.168.1.105MSS才能正确构造200 OK响应里的Contact头。这个问题在Android 11尤其常见因为系统限制了App获取所有网络接口信息的权限。手动指定IP是最直接的解法。4.3 如何让MSS记录完整通话录音MSS默认不录音但可通过修改配置启用。编辑mss-linux-3.10.0/conf/mss.properties找到并取消注释#record.enabletrue #record.path/home/mssuser/mss-recordings #record.formatwav改为record.enabletrue record.path/home/mssuser/mss-recordings record.formatwav然后创建录音目录并授权sudo -u mssuser mkdir -p /home/mssuser/mss-recordings sudo chown mssuser:mssuser /home/mssuser/mss-recordings重启MSS后每次通话结束会在该目录生成rec-1001-1002-20240520-143022.wav文件。但要注意录音文件是原始PCM数据未经压缩1分钟通话约占用10MB磁盘。如果测试频繁建议每周清空一次mss-recordings目录。4.4 防火墙放开端口的正确姿势很多教程教sudo ufw allow 5060这是错的。因为ufw是iptables前端而MSS需要的是UDP端口ufw默认只开TCP。正确命令是sudo ufw allow proto udp to any port 5060 sudo ufw allow proto udp from any to any port 10000:20000第二条开放RTP端口范围必须用from any因为sipdroid的RTP端口是随机的MSS无法预知源端口。验证是否生效sudo ufw status verbose | grep -A 5 5060 # 应看到5060 ALLOW IN Anywhere (v6) (UDP)4.5 MSS Web界面中文乱码修改JVM启动参数现象在SIP Accounts页新建账号时Display Name填中文保存后显示为????。根因MSS的Web界面使用Java AWT组件渲染而Ubuntu 20.04默认的字体配置不包含中文字体。解决方案是修改start.sh在java命令后添加-Dfile.encodingUTF-8 -Dawt.useSystemAAFontSettingslcd -Dswing.aatexttrue完整启动命令变为java -Dfile.encodingUTF-8 -Dawt.useSystemAAFontSettingslcd -Dswing.aatexttrue -jar mss.jar /dev/null 21 然后重启MSS。4.6 如何批量导入100个SIP账号MSS Web界面不支持批量导入但它的账号数据实际存在mss-linux-3.10.0/data/accounts.xml文件里。这是一个标准XML结构如下accounts account id1001 passwordalice123! domain192.168.1.100 enabledtrue/ account id1002 passwordbob456 domain192.168.1.100 enabledtrue/ /accounts你可以用Python脚本生成import xml.etree.ElementTree as ET root ET.Element(accounts) for i in range(1001, 1101): acc ET.SubElement(root, account) acc.set(id, str(i)) acc.set(password, fpwd{i}) acc.set(domain, 192.168.1.100) acc.set(enabled, true) tree ET.ElementTree(root) tree.write(accounts.xml, encodingutf-8, xml_declarationTrue)生成后停止MSS替换data/accounts.xml再启动。所有账号即刻生效。注意修改accounts.xml后必须重启MSSWeb界面的SIP Accounts页才会刷新。这是MSS的设计缺陷——它只在启动时读取XML运行时不监听文件变化。4.7 sipdroid无法在Android 12上注册关闭“精确位置”权限Android 12加强了位置权限管控。sipdroid需要获取本机IP而IP地址在某些ROM里被归类为“精确位置”信息。如果用户拒绝该权限sipdroid会fallback到0.0.0.0导致注册失败。解决方案在Android设置里找到Apps → sipdroid → Permissions → Location选择Allow all the time。虽然听起来奇怪但这是当前唯一可靠解法。4.8 MSS的CPU占用率飙到90%禁用Web界面自动刷新现象MSS运行几小时后top里java进程CPU持续90%以上但System Status页显示负载正常。根因MSS Web界面的JavaScript有一个setInterval定时器每2秒向服务器发一次/api/status请求。当浏览器标签页处于后台时该请求仍持续发送而MSS的API处理逻辑存在锁竞争导致线程阻塞。解决方案编辑mss-linux-3.10.0/web/js/main.js找到setInterval(function(){...}, 2000)把2000改成3000030秒。或者更彻底——在浏览器里按F12打开开发者工具Console里执行clearInterval(window.refreshInterval);即可永久禁用自动刷新。4.9 如何让MSS开机自启创建systemd服务文件/etc/systemd/system/mss.service[Unit] DescriptionMiniSIPServer Afternetwork.target [Service] Typesimple Usermssuser WorkingDirectory/home/mssuser/mss-linux-3.10.0 ExecStart/home/mssuser/mss-linux-3.10.0/start.sh Restartalways RestartSec10 [Install] WantedBymulti-user.target然后执行sudo systemctl daemon-reload sudo systemctl enable mss sudo systemctl start mss验证sudo systemctl status mss应显示active (running)。4.10 MSS日志文件太大配置轮转策略默认MSS日志写入mss-linux-3.10.0/logs/mss.log永不轮转。一个月下来可达2GB。编辑mss-linux-3.10.0/conf/log4j2.xml找到RollingFile节点修改SizeBasedTriggeringPolicy的size属性SizeBasedTriggeringPolicy size10MB/并设置最多保留5个历史文件DefaultRolloverStrategy max5/重启MSS后日志文件会自动轮转为mss.log.1、mss.log.2等。4.11 sipdroid通话中突然断线调整RTP超时阈值现象通话持续1分钟以上sipdroid Log出现RTP timeout然后自动挂断。根因MSS的RTP保活机制默认30秒发一次RTCP RR包但某些Android ROM的省电策略会冻结后台App的网络IO。解决方案在sipdroid的Advanced settings里把RTP timeout从默认的30秒改为60秒。同时在MSS的conf/mss.properties里增加rtp.timeout60双端同步调整可显著提升长通话稳定性。4.12 如何用curl模拟SIP注册绕过客户端做压力测试MSS提供REST API可用于自动化测试。例如用curl发送注册请求curl -X POST http://192.168.1.100:8080/api/register \ -H Content-Type: application/json \ -d {account:1001,password:alice123!,domain:192.168.1.100}响应为{status:success,message:Registered}即表示成功。你可以用shell脚本循环100次测试MSS的并发注册能力。这个API不公开在文档里是MSS开发者在GitHub issue里透露的。它没有鉴权所以务必确保8080端口不暴露在公网。5. 常见问题速查表与终极排错路径问题现象可能原因排查命令/步骤解决方案sipdroid显示“Registration failed”Ubuntu防火墙拦截UDP 5060sudo ufw statussudo ufw allow proto udp to any port 5060MSS Web界面打不开ERR_CONNECTION_REFUSEDMSS进程未运行ps aux | grep java./start.sh检查nohup.out日志注册成功但无法拨号Log显示“488 Not Acceptable Here”sipdroid与MSS编解码不匹配查看sipdroid Log里的SDP Offer在sipdroid Advanced里把PCMU拖到第一位通话单通只能听不能说RTP端口被防火墙拦sudo ufw status | grep 10000sudo ufw allow proto udp from any to any port 10000:20000MSS启动后3分钟自动退出JVM DNS缓存超时cat /var/log/syslog | grep -i killed process修改/etc/hosts添加本地hostname映射sipdroid在Android 12注册失败“精确位置”权限被拒Android设置→sipdroid→Permissions→Location改为Allow all the timeMSS CPU占用率持续90%Web界面自动刷新太频繁浏览器F12→Console→window.refreshInterval执行clearInterval(window.refreshInterval)录音文件生成但播放无声录音格式不被播放器识别file /home/mssuser/mss-recordings/*.wav用sox转换sox -r 8000 -e signed -b 16 -c 1 rec.wav rec.mp3批量账号导入后不生效MSS未重启ps aux | grep mss./stop.sh ./start.shcurl注册API返回404URL路径错误curl -v http://192.168.1.100:8080/api/确认URL是/api/register不是/register终极排错路径当所有常规方法失效时回归物理层用ping 192.168.1.100确认网络连通用