1. 当前位置: 网站首页 >  路由器百科 >  UPnP是什么意思?游戏主机插上就能联机,路由器背后那三步暗号我拆开了

UPnP是什么意思?游戏主机插上就能联机,路由器背后那三步暗号我拆开了

UPnP三步暗号示意图:SSDP喊话、拿说明书、SOAP下命令自动端口映射流程

上回写UPnP那篇的时候我在后台数过一笔账:AX3000T的映射列表里躺着十一条,我自己手动开过的一条都没有。PS5占了五条,剩下几条备注写着qBittorrent、微信,全是它们自己进去开的。当时我只顾着研究要不要关,回来以后越想越不对劲——这些软件又不知道我路由器的管理密码,它们是怎么把门开上的?这回我把这条暗道拆开看了,其实就三步暗号,一步一步都能对着报文讲清楚。

名字是1999年的愿望,现在天天干活的是其中一小块

UPnP全称Universal Plug and Play,通用即插即用。这个名字是冲着Windows 95年代那个Plug and Play来的——那时候插个声卡、接个打印机,系统能自己认出来不用手动配中断号,算是划时代。1999年微软想把这套福气流到网络上:设备插上网线就互相认识、互相配合,不用人来配。这个愿望当年跟着Windows ME落了地,UPnP论坛也在1999年10月成立,微软和Intel都是发起人。后来这摊事2016年并进了开放连接基金会,规范一直有人维护着。

二十多年下来,这个大愿望成了一半:投屏那套DLNA底层确实是它,家里的电视能被手机搜到,走的也是同一路发现机制。但要说2026年家里天天高频在用的,其实是其中很小一块——自动端口映射。路由器把自己包装成一个叫IGD的设备(Internet Gateway Device,互联网网关设备),挂在内网的软件能遥控它开端口。PS5联机顺不顺、下载软件的端口状态亮不亮绿灯,背后都是这一小块在干活。

要理解它为什么能"自动",得把三步暗号挨个拆开。下面这些格式不是我从哪篇教程抄的修辞,是规范里白纸黑字的报文样子,你自己抓个包就能对上号。

第一步:喊话。跟mDNS一个嗓子,口令不一样

软件想找路由器要门,第一件事是朝屋里喊一嗓子。这一嗓子叫SSDP,走的路数跟mDNS是一家子——都是往一个固定的组播地址喊,谁在谁应。mDNS的嗓子是224.0.0.251的5353端口,管的是"问名字"(那台nas.local是谁);SSDP的嗓子是239.255.255.250的1900端口,管的是"找服务",问的是"这屋里有没有网关设备"。

这一嗓子的原文长这样:

M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 3
ST: upnp:rootdevice

翻译过来:找设备(ssdp:discover这个口令必须带引号,少了它不认),最多等3秒(MX那行),找根设备(ST那行)。路由器听见自己名字了,就单播回一句200 OK,里面夹着一行关键信息——LOCATION,一个网址。组播这个动作本身我之前在组播那篇里拆过,一嗓子全屋都听得见,只是不相关的不应。

顺带说一句,这个1900端口在端口号字典里也挂了号。平时它是内网的家务事,可要是哪台傻设备把它暴露到了公网上,这嗓子就会被人拿去当反射放大攻击的炮台——你喊一声它回一声,攻击者伪造受害者的地址去喊,挨打的就成了回话的那家。这是UPnP被点名的账之一,后面一起算。

第二步:拿说明书。路由器交出一份XML

LOCATION那个网址是干什么的?软件拿到它,会像浏览器一样去GET一下。路由器返回来的,是一份XML格式的"说明书"——把自己以IGD的身份描述一遍:我叫什么、我身上有哪些服务、每个服务能被遥控做什么动作、遥控的话往哪个地址发命令。

这份说明书里最值钱的一段,是一个叫WANIPConnection的服务条目。它说白了就是路由器承认:"我门上有一排开关,每个开关管一个端口的转发,你可以来拨。"说明书里同时给了控制地址——软件这下不但知道门在哪,还拿到了钥匙孔的位置。

这一步设计得挺讲究:喊话只解决"你在哪",说明书解决"你能干什么"。两步分开,所以同一套发现流程能伺候投屏、打印机、网关各种设备,各拿各的说明书,各取各的服务。软件要的只是说明书里跟端口有关的那一页,别的它不看。

第三步:下命令。一条AddPortMapping,门就开了

轮到遥控这一步。软件照着说明书给的地址,用SOAP格式发一条命令过去,动作名叫AddPortMapping。参数摊开就是这么几格:

参数填什么举个例子
NewExternalPort公网那头的端口3074
NewProtocolTCP还是UDPUDP
NewInternalPort转到屋里哪口3074
NewInternalClient转到哪台设备192.168.31.50
NewPortMappingDescription备注,写给主人看PS5
NewLeaseDuration租期,秒0表示永久

路由器收到,照办,映射列表里从此多一条。PS5开机连上网就是这么干的——它自己报上IP和端口,路由器开好门,联机检测的时候NAT类型就是开着的,不用你摸进后台点一条规则。qBittorrent做种时端口那一栏亮绿灯,也是同一个动作的产物。租期到了或者设备下线释放,有的还会自己收回,比人手动开的那条干净。

备注那一格是留给你的。去映射列表里看,能开的那一格格基本都写着主人名字——这就是为什么当年我数出十一条却一条都不是我开的:它们各自带着出厂写好的备注,自己进门自己登记。

它跟手动端口转发、DMZ是什么关系

三样东西管的是同一扇门,区别在谁来开、开多大:

手动端口转发UPnPDMZ
谁来开你,进后台填规则软件自己,随用随开你,一次配好
开多大指定几个口指定几个口整面墙全拆
端口对不对填错就白配软件自己知道要哪个无所谓,全通
适合谁NAS、监控这种固定设备游戏主机、下载软件能不碰就不碰

手动那条我在端口转发和DMZ那篇里掰开讲过,这里只补一句UPnP的位置:它是给"今天上线的软件"用的自动化,你不知道PS5今晚要用哪个口,它自己知道。所以两者不打架,我家一直并着用——固定的走手动,流动的走自动。

有一个它治不了的场景得知道:双重NAT底下它会失灵。前面那条AddPortMapping命令靠组播喊话找到的是"直连那一跳"的路由器,命令只下到它为止。要是你家光猫也是路由模式,前面还压着一层,软件在里层路由器上把门开好了,外层光猫那扇还关着,外面照样进不来——这就是双重NAT四宗罪里的一宗。也正是游戏联机NAT排查里好多人卡住的那半截:UPnP开了却只开了一半,病根不在开关在拓扑。

为什么它老被安全文章点名

把机制拆完,安全问题就不是一句"有风险"了,账能算得很具体。

头一笔:喊话不鉴别人。SSDP那句M-SEARCH谁都能喊,AddPortMapping那条命令谁都能发——只要它在你内网里跑着。PS5能开,一个来路不明的程序也能开,开完还在备注里冒充写个"system"。路由器从头到尾没问过一句"你是谁"。这就是为什么老鸟看见映射列表里多出看不懂的条目会紧张:路由器被黑自查的时候,那个列表是必翻的五处之一。

第二笔是公网侧的:1900那嗓子如果被设备漏到了外网,就成了别人手里的反射放大炮台,前面说过。这笔账不算在你头上,但路由器固件里"WAN侧禁用UPnP响应"这种默认设置,防的就是它。

公道话也得说:内网里能发命令的程序,本来就已经站在你家客厅了,真要使坏未必非走这条路。所以它属于"便利和门禁的交换",不是裸奔。我的折中是三条——映射列表隔一阵翻一次,看备注认主人,看不懂的删;固定设备(NAS、监控)一律手动开,不留给自动;双重NAT那种开了也白开的,干脆别纠结。

至于是彻底关掉还是留着,那是另一码事,关UPnP那篇我写过完整决策,包括关掉以后微信视频、PS5联机会先罢工的账。这篇只负责把机制讲透:知道了它开的是哪扇门、谁来开的,你翻列表的时候才看得懂自己在删什么。

想亲眼看一遍它的,两个入口:路由器后台的UPnP映射列表,看现成的账本;或者电脑上装个抓包工具,过滤条件填ssdp,等设备上线或者软件启动,那几句M-SEARCH和200 OK自己就蹦出来了。三步暗号对上号,这条暗道对你就不神秘了。

展开全文


版权说明 手机扫码阅读
版权所有:《数巢笔记》 => 《UPnP是什么意思?游戏主机插上就能联机,路由器背后那三步暗号我拆开了》
本文地址:https://www.shunot.com/lybk/1329.html
除非注明,文章均为 《SHUNOT》 原创,欢迎转载!转载请注明本文地址,谢谢。

联系我们

在线咨询:点击这里给我发消息

微信号:master_135

工作日:9:00-23:00,节假日休息

扫码关注