web-dev-qa-db-ja.com

UPnP / SSDPを使用してルーターからWAN IP)を取得する方法

ルーターにUPnP/SSDPを使用してWAN IP)を報告させる方法を見つけようとしていますが、これまでのところ、インターネットアクセスデバイスをサポートする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!

接続が成功したというメッセージが表示されただけで、何も表示されません...

誰かが私に何か間違っていることについてのポインタを教えてもらえますか(いいえ メモリアドレス お願いします!)?

更新:Okなので、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要求を行うことです。

2
phor2

1つまたは複数の返信を表示するには、tcpdumpなどを使用する必要があります。

ncは、リクエストの送信先のエンドポイントからの返信を探しています。ただし、リクエストを送信したエンドポイントは、一般的なブロードキャストターゲットです。応答は、一般的なブロードキャストターゲットからではなく、応答する特定のデバイスから送信されます。

ncの出力が示すように、ブロードキャストターゲットに接続されています。したがって、応答デバイスからの応答は表示されません。

3
David Schwartz

socatを使用できます

$ socat -T1 STDIO UDP4-DATAGRAM:239.255.255.250:1900 < request.txt
0
Javier López

このタスクはかなり古いですが、私は自分で答えを投稿します。

UPnP-replyが場所を投稿しました " http://192.168.1.1:1780/InternetGatewayDevice.xml "

そこで、データ形式に関する詳細情報を入手できます。私のルーターの場合:xmlへのパスが増えました。それらを呼び出すと、より多くのUPnP情報があります。結果としてこれ:私は呼んだ:

POST /upnp/control?WANIPConnection HTTP/1.1
Host: 192.168.1.1
SOAPAction: "urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress"
Accept-Language: de-de;q=1, de;q=0.5
Accept-Encoding: gzip
Content-Type: text/xml; charset="utf-8"
User-Agent: gupnp-universal-cp GUPnP/0.20.10 DLNADOC/1.50
Connection: Keep-Alive
Content-Length: 281

<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetExternalIPAddress xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"></u:GetExternalIPAddress></s:Body></s:Envelope>

そして答えとして得る:

HTTP/1.1 200 OK
EXT:
Content-Type: text/xml; charset="utf-8"
Date: Tue, 04 Aug 2015 23:55:01 GMT
Server: servername/2.0 UPnP/1.0 UPnP-Device-Host/1.0
Content-Length: 380

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:GetExternalIPAddressResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">
            <NewExternalIPAddress>123.123.123.123</NewExternalIPAddress>
        </u:GetExternalIPAddressResponse>
    </s:Body>
</s:Envelope>

「UPnPインスペクター」からたくさんの助けがあります

0
rundekugel