Nuro光のIPアドレス

自宅ルーターで相手と接続を拒否するため
NuroのIPアドレスを抽出してみました。


# IPアドレス帯の抽出
AS番号からSo-netが使用しているIPアドレス帯を抽出します。
So-netは**AS2527**です。

[RIPEstat](https://stat.ripe.net/about/)
というサービスでAPIが提供されているのでこれを叩きます。

prefixの一覧が記載されたjsonをripe.jsonに保存しています。
```
curl -m10 -s "https://stat.ripe.net/data/announced-prefixes/data.json?resource=2527&sourceapp=nitefood-asn" > ripe.json
```



# 逆引きをしてnuroかチェック
AS番号で抽出したリストにはSo-netやnuro、逆引きできないネットワーク帯（法人向け？）など混在しています。
ネットワークアドレスに+1をしたホストIPを逆引きし、nuro.jpが含まれているものだけを抽出します。

```php
<?php
$file = "ripe.json";

$json = json_decode(file_get_contents($file), true);

foreach($json['data']['prefixes'] as $prefix)
{
    //IPアドレスを分解する
    if( preg_match("/^(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)/", $prefix['prefix'], $match) ) {

        //ネットワークアドレスに+1したホストIPを作成
        $host = sprintf("%s.%s.%s.%s", $match[1], $match[2], $match[3], intval($match[4]) + 1);

        //上で作成したIPアドレスを逆引き
        $hostname = gethostbyaddr($host);

        //nuroなら出力
        if(preg_match("/\.nuro\.jp/", $hostname)) {
            echo $prefix['prefix'];
            echo "\n";
        }
    }
}
```

# 出力結果

```text
202.223.91.0/24
223.133.252.0/22
182.169.120.0/23
150.147.41.0/24
133.114.248.0/22
61.211.5.0/24
202.223.97.0/24
159.28.64.0/18
219.104.208.0/20
160.86.96.0/20
123.198.29.0/24
182.169.210.0/24
120.75.222.0/24
160.86.224.0/20
61.211.6.0/24
147.192.248.0/21
110.66.214.0/23
59.147.40.0/21
182.171.14.0/23
219.98.2.0/23
198.144.160.0/20
218.221.110.0/23
210.132.214.0/23
92.202.64.0/19
211.2.0.0/18
223.132.160.0/23
110.66.112.0/23
116.82.224.0/20
147.192.0.0/16
115.163.84.0/23
120.74.0.0/15
61.211.3.0/24
92.202.0.0/15
182.168.2.0/23
152.165.136.0/21
182.168.134.0/23
39.110.0.0/15
118.236.188.0/22
123.198.234.0/23
147.192.144.0/20
219.98.112.0/23
131.213.156.0/22
209.17.64.0/19
121.103.189.0/24
223.133.56.0/21
121.3.189.0/24
159.28.128.0/17
115.162.22.0/23
90.149.192.0/19
110.66.107.0/24
110.66.153.0/24
218.221.194.0/23
218.221.170.0/23
120.74.92.0/24
223.132.222.0/23
123.198.120.0/22
131.213.154.0/23
182.168.170.0/23
209.17.88.0/21
111.216.143.0/24
121.3.100.0/23
121.3.216.0/23
120.74.35.0/24
123.198.24.0/24
223.134.228.0/22
115.162.26.0/24
111.217.244.0/22
115.162.216.0/22
160.86.16.0/20
115.162.8.0/23
120.74.67.0/24
216.153.64.0/18
116.82.160.0/19
223.134.240.0/22
111.217.66.0/23
152.165.0.0/16
210.132.148.0/23
110.66.66.0/24
223.132.180.0/23
210.132.222.0/24
118.236.118.0/23
182.168.1.0/24
223.133.132.0/22
150.249.0.0/16
131.213.66.0/23
219.111.191.0/24
59.147.30.0/23
123.198.252.0/23
223.132.212.0/22
66.11.48.0/21
116.82.0.0/16
160.86.80.0/20
202.223.88.0/23
58.87.228.0/23
202.223.98.0/23
110.66.148.0/22
223.132.208.0/23
164.70.128.0/17
210.250.92.0/22
182.168.210.0/23
111.216.0.0/15
131.213.118.0/23
120.75.168.0/22
59.147.34.0/23
115.162.54.0/23
66.11.48.0/20
202.223.105.0/24
115.162.50.0/23
111.216.0.0/20
143.189.250.0/23
123.198.238.0/23
111.216.96.0/21
160.86.0.0/20
223.132.200.0/23
216.153.64.0/19
152.165.168.0/21
219.98.24.0/22
219.104.124.0/22
152.165.240.0/22
182.170.244.0/23
111.216.24.0/21
160.86.240.0/20
115.163.60.0/22
120.74.42.0/23
160.86.64.0/20
182.169.233.0/24
110.66.120.0/23
219.104.64.0/19
120.74.63.0/24
210.174.8.0/22
182.171.120.0/22
92.203.0.0/18
59.146.22.0/23
110.66.176.0/23
110.66.182.0/23
133.114.192.0/19
219.104.104.0/21
223.134.200.0/22
223.132.166.0/23
143.189.196.0/23
58.87.136.0/21
219.104.96.0/21
152.165.224.0/20
160.86.48.0/20
182.169.228.0/22
121.2.0.0/15
110.66.145.0/24
92.203.64.0/19
115.162.28.0/23
223.135.48.0/22
210.132.220.0/23
182.170.240.0/22
123.198.226.0/24
182.169.208.0/23
90.149.224.0/20
111.216.40.0/22
218.221.0.0/16
90.149.0.0/16
120.74.232.0/23
218.110.60.0/22
111.216.181.0/24
110.66.178.0/24
211.10.32.0/19
182.170.208.0/20
115.162.24.0/23
116.82.248.0/21
219.104.224.0/20
216.153.96.0/19
92.203.248.0/21
120.75.240.0/22
110.67.142.0/24
111.217.216.0/22
150.147.46.0/24
111.217.209.0/24
110.66.188.0/23
223.132.152.0/23
223.133.148.0/22
133.114.0.0/16
182.168.250.0/23
115.162.18.0/23
121.103.192.0/23
115.163.111.0/24
150.147.90.0/24
124.219.128.0/17
223.134.216.0/22
120.74.64.0/24
111.216.64.0/22
120.74.79.0/24
131.213.80.0/21
219.98.4.0/23
121.103.190.0/23
152.117.224.0/21
110.66.72.0/23
123.198.4.0/23
220.211.176.0/22
160.86.144.0/20
210.132.154.0/24
150.246.168.0/21
152.165.192.0/19
120.74.54.0/23
110.66.90.0/23
219.104.0.0/16
150.246.166.0/23
133.165.128.0/18
182.168.116.0/23
118.238.192.0/18
160.86.32.0/20
152.117.192.0/20
61.211.0.0/18
160.86.208.0/20
115.162.12.0/23
120.74.100.0/24
120.74.52.0/24
110.66.52.0/24
182.171.116.0/22
120.74.200.0/22
115.162.4.0/23
150.246.253.0/24
118.238.0.0/17
121.103.48.0/24
223.134.24.0/22
160.86.128.0/20
121.103.0.0/16
110.66.28.0/24
182.168.244.0/22
219.104.112.0/21
131.147.0.0/16
159.28.84.0/23
147.192.128.0/20
211.10.49.0/24
120.74.51.0/24
133.114.244.0/22
160.86.176.0/20
133.114.224.0/20
115.162.212.0/22
110.66.31.0/24
182.168.118.0/24
133.114.160.0/19
147.192.160.0/19
90.149.128.0/18
115.163.32.0/20
152.117.208.0/21
123.198.20.0/24
111.217.141.0/24
120.74.86.0/24
92.203.96.0/20
111.216.47.0/24
218.221.0.0/23
131.213.68.0/22
110.66.174.0/23
219.98.16.0/21
118.236.192.0/22
152.117.232.0/22
182.169.14.0/23
120.74.124.0/22
115.162.155.0/24
120.74.38.0/24
223.135.20.0/22
182.171.12.0/24
143.189.184.0/23
92.202.0.0/18
152.117.128.0/17
147.192.192.0/20
182.171.4.0/22
115.162.45.0/24
211.10.32.0/22
133.165.128.0/19
110.66.96.0/23
160.86.0.0/16
133.165.188.0/22
147.192.208.0/20
143.189.232.0/23
207.65.128.0/17
120.74.110.0/24
210.132.162.0/23
223.133.228.0/22
182.171.156.0/23
152.117.176.0/20
118.237.245.0/24
152.117.216.0/21
218.110.64.0/22
110.66.60.0/24
118.240.0.0/15
152.117.172.0/22
160.86.192.0/20
133.165.168.0/22
120.74.80.0/24
182.170.198.0/23
160.86.160.0/20
223.132.76.0/22
223.135.24.0/22
219.111.148.0/22
123.198.30.0/24
182.171.8.0/23
110.66.154.0/23
116.82.192.0/19
210.132.160.0/24
110.66.127.0/24
92.203.192.0/19
123.198.254.0/23
118.237.193.0/24
66.11.60.0/22
110.66.204.0/23
160.86.112.0/20
223.132.136.0/22
110.66.92.0/24
210.132.152.0/24
121.103.47.0/24
110.66.100.0/24
223.132.0.0/14
182.168.136.0/23
110.66.64.0/23
182.169.234.0/23
133.114.240.0/22
219.104.240.0/21
182.169.154.0/23
223.133.64.0/23
223.134.80.0/23
182.169.156.0/22
143.189.234.0/23
```

# 使い道

RIPEStatというサービスは、[asn](https://gist.github.com/nitefood/1eba4183012dcca0f082535f0eb128db)というコマンドのコードを読んでいて見つけたのですが、ネットワーク関連でいろいろ使えそうですね。