おのたく日記 YouTubeも始めました→
2014-12-06(Sat) [長年日記]
■ ルータから外側のIPアドレスを取得する Nuro編
以前のADSLモデムでの外側のIPアドレスの取得方法については、2009年6月17日の日記に書いたけど、おうちデータセンターでは、2Gbpsに惹かれてNuro光にしたので、Nuroのルータ(ホームゲートウェイ)HD8045Gでもやってみた。
$ ./UPnPls.pl
M-SEARCH * HTTP/1.1
Host:239.255.255.250:1900
Man:"ssdp:discover"
ST:upnp:rootdevice
MX:3
------------------------------
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Sat, 06 Dec 2014 05:45:32 GMT
EXT:
LOCATION: http://192.168.1.1:49652/49652gatedesc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 22b36f62-1dd2-11b2-b117-fb384869ae1a
SERVER: Linux/2.6.34.10_sd5115v100_wr4.3, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: UPnP/1.0 DLNADOC/1.50
ST: upnp:rootdevice
USN: uuid:00e0fc37-2525-2828-2500-F8E8110D1417::upnp:rootdevice
==============================
ホームゲートウェイは、http://192.168.1.1:49652/49652gatedesc.xmlとのことなので、そこにアクセスするといつもどおりらしいのがある
>serviceList<
>service<
>serviceType<urn:schemas-upnp-org:service:WANIPConnection:1>/serviceType<
>serviceId<urn:upnp-org:serviceId:WANIPConn1>/serviceId<
>controlURL</upnp/control/WANIPConn1>/controlURL<
>eventSubURL</upnp/control/WANIPConn1>/eventSubURL<
>SCPDURL</gateconnSCPD.xml>/SCPDURL<
>/service<
>serviceList<
[抜粋http://192.168.1.1:49652/49652gatedesc.xmlより引用]
;そこで、SOAPアクセススクリプト
#!/usr/bin/perl
use SOAP::Lite;
my $soap = SOAP::Lite
-<ns('urn:schemas-upnp-org:service:WANIPConnection:1')
-<proxy('http://HG4085D:49652/upnp/control/WANIPConn1');
my $som = $soap-<GetExternalIPAddress();
my $ip = $som-<valueof('//GetExternalIPAddressResponse/NewExternalIPAddress');
print "$ip\n";
を作成して、外側のIPアドレスを取得した。
念のためにhttp://192.168.1.1:49652/gateconnSCPD.xmlも見たけど、同じだった。この辺はUPnPでルータのポート公開用に統一されてるのかな。
|