「通用即插即用(UPnP)」是一组网络协议,允许联网设备(如个人计算机,打印机,互联网网关,无线接入点,移动设备)无缝地发现彼此在网络上的存在,并建立功能性网络服务,用于数据共享、通信、娱乐。它主要用于没有企业级设备的住宅网络。
为什么要写这东西?
我并不想深入了解这个东西,因为还没有遇到使用场景。
之所以开了这么一篇文章,完全是因为我在排查其他问题的时候发现了239.255.255.250.1900的UDP报文,因此简单了解一下。
有这么一句话:通过使用多播(称为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