Я пытаюсь найти способ заставить мой маршрутизатор сообщать мой WAN IP, используя UPnP / SSDP, но до сих пор я не смог даже получить список устройств доступа в Интернет, поддерживающих UPnP, в моей сети. Вот запрос, который я отправляю:
$ cat request.txt
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 3
ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
С помощью команды:
$ nc -uvv 239.255.255.250 1900 < request.txt
Connection to 239.255.255.250 1900 port [udp/ssdp] succeeded!
Я просто получаю сообщение об успешном соединении, а затем ничего ...
Может ли кто-нибудь дать мне какие-либо указатели (нет адреса памяти пожалуйста!) а что я делаю не так?
Обновить: Итак, я попытался с помощью tcpdump
чтобы получить ответы вот что я получил:
$ sudo tcpdump -vv -A -s 0 -i en1 udp port 1900 and host 239.255.255.250
…
NOTIFY * HTTP/1.1
Host: 239.255.255.250:1900
Cache-Control: max-age=60
Location: http://192.168.1.1:1780/InternetGatewayDevice.xml
NTS: ssdp:alive
Server: POSIX, UPnP/1.0 linux/5.100.104.2
NT: urn:schemas-upnp-org:device:InternetGatewayDevice:1
…
Я предполагаю, что следующий шаг - проанализировать вывод tcpdump и отфильтровать все ответы, которые не содержат NT: urn:schemas-upnp-org:device:InternetGatewayDevice:1
Затем заголовок делает фактический запрос SOAP к маршрутизатору.