「UPnP」- Universal Plug and Play

  CREATED BY JENKINSBOT

「通用即插即用(UPnP)」是一组网络协议,允许联网设备(如个人计算机,打印机,互联网网关,无线接入点,移动设备)无缝地发现彼此在网络上的存在,并建立功能性网络服务,用于数据共享、通信、娱乐。它主要用于没有企业级设备的住宅网络。

为什么要写这东西?

我并不想深入了解这个东西,因为还没有遇到使用场景。

之所以开了这么一篇文章,完全是因为我在排查其他问题的时候发现了239.255.255.250.1900UDP报文,因此简单了解一下。

有这么一句话:通过使用多播(称为HTTPMU)在UDP上运行HTTP来支持设备搜索请求和通知。

所以用tcpdump抓包:tcpdump -n -i eth0 -X 'port 1900 and src host 172.16.0.100

17:01:06.972122 IP 172.16.0.100.45283 > 239.255.255.250.1900: UDP, length 166
        0x0000:  4500 00c2 bf01 4000 0111 1dbb ac10 0064  E.....@........d
        0x0010:  efff fffa b0e3 076c 00ae 9d2e 4d2d 5345  .......l....M-SE
        0x0020:  4152 4348 202a 2048 5454 502f 312e 310d  ARCH.*.HTTP/1.1.
        0x0030:  0a48 4f53 543a 2032 3339 2e32 3535 2e32  .HOST:.239.255.2
        0x0040:  3535 2e32 3530 3a31 3930 300d 0a4d 414e  55.250:1900..MAN
        0x0050:  3a20 2273 7364 703a 6469 7363 6f76 6572  :."ssdp:discover
        0x0060:  220d 0a4d 583a 2031 0d0a 5354 3a20 7572  "..MX:.1..ST:.ur
        0x0070:  6e3a 6469 616c 2d6d 756c 7469 7363 7265  n:dial-multiscre
        0x0080:  656e 2d6f 7267 3a73 6572 7669 6365 3a64  en-org:service:d
        0x0090:  6961 6c3a 310d 0a55 5345 522d 4147 454e  ial:1..USER-AGEN
        0x00a0:  543a 2043 6872 6f6d 6975 6d2f 3730 2e30  T:.Chromium/70.0
        0x00b0:  2e33 3533 382e 3637 204c 696e 7578 0d0a  .3538.67.Linux..
        0x00c0:  0d0a                                     ..

禁之。在chrome://flags/#media-router中,禁用:

	* Load Media Router Component Extension
	* Connect to Cast devices on all IP addresses

然后重启浏览器,再观察tcpdump发现不好用………………对不起,我不用了还不行么…………

有些路由器还有UPNP功能,直接关了…………

参考文献

Wikipedia/Universal Plug and Play
Issue 665572: No way to turn off mDNS and ssdp discovery for Chromecast support built in Chrome