subnet-mask
サブネットマスクの換算表
local ip(private ip)
| CIDR | サブネットマスク | IP数(利用可能) | 開始値 |
|---|---|---|---|
| クラスA | 10.0.0.0 - 10.255.255.255 | ||
| /8 | 255.0.0.0 | 16777216 | |
| /9 | 255.128.0.0 | 8388608 | |
| /10 | 255.192.0.0 | 4194304 | |
| /11 | 255.224.0.0 | 2097152 | |
| /12 | 255.240.0.0 | 1048576 | |
| /13 | 255.248.0.0 | 524288 | |
| /14 | 255.252.0.0 | 262144 | |
| /15 | 255.254.0.0 | 131072 | |
| CGN | 100.64.0.0/10 | ||
| クラスB | 172.16.0.0 - 172.31.255.255 | ||
| /16 | 255.255.0.0 | 65536 | |
| /17 | 255.255.128.0 | 32768 (128C) | |
| /18 | 255.255.192.0 | 16384 (64C) | |
| /19 | 255.255.224.0 | 8192 (32C) | |
| /20 | 255.255.240.0 | 4096 (16C) | |
| /21 | 255.255.248.0 | 2048 (8C) | |
| /22 | 255.255.252.0 | 1024 (4C) | |
| /23 | 255.255.254.0 | 512 (2C) | |
| クラスC | 192.168.0.0 - 192.168.255.255 | ||
| /24 | 255.255.255.0 | 256 | 0 |
| /25 | 255.255.255.128 | 128 | 128 |
| /26 | 255.255.255.192 | 64 | 64 ↑ 192 |
| /27 | 255.255.255.224 | 32 | 32 ↑ 96 ↑ 160 ↑224 |
| /28 | 255.255.255.240 | 16 (14) | 16 ↑ 48 ↑ 80 ↑ 112 ↑ 144 ↑ 176 ↑ 208 ↑ 240 |
| /29 | 255.255.255.248 | 8 (6) | 8 ↑ 24 ↑ 40 ↑ 56 ↑ 72 ↑ 88 ↑ 104 ↑ 120 ↑ 136 ↑ 152 ↑ 168 ↑ 184 ↑ 200 ↑ 216 ↑ 232 ↑ 248 ( 8で割り切れる ) |
| /30 | 255.255.255.252 | 4 (2) | 4で割り切れる数値 |
| /31 | 255.255.255.254 | 2 | 偶数 ( Cクラスでは使えない ) |
| /32 | 255.255.255.255 | 1 | (端末のみでの使用) |
使用可能なローカルIP(プライベートIP)の一覧
# 10.0.0.0 / 255.0.0.0 = 10.0.0.0 - 10.255.255.255 # 172.16.0.0 / 255.240.0.0 = 172.16.0.0 - 172.31.255.255 # 192.168.0.0 / 255.255.0.0 = 192.168.0.0 - 192.168.255.255 # link_local_ip_address(DHCP の失敗の場合に。。) # 169.254.0.0/255.255.0.0 # CGN ( キャリアグレードNAT用 # 100.64.0.0 / 255.192.0.0
ネットマスクとホストIPアドレスの確認方法
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# https://docs.python.org/ja/3.6/library/ipaddress.html
import ipaddress
ipnets = "192.168.2.8/29"
print ("check network" + ipnets )
try :
#### networks = ipaddress.IPv4Network(ipnets)
networks = ipaddress.ip_network(ipnets,strict=False)
except ValueError:
print('address/netmask is invalid for IPv4:', ipnets )
exit()
print ("Subnet_mask" + str(networks.with_netmask ) )
print ( "number of address: " + str ( networks.num_addresses ) )
print ("hosts ip address")
IPL = list(networks.hosts())
if len(IPL) < 12 :
for i in IPL :
print (i)
else :
for i in range(5) :
print (IPL[i])
print ("...")
for i in range(5) :
print (IPL[-i])
結果
> python3.7 ./get_netmasks.py check network192.168.2.0/29 Subnet_mask 192.168.2.0/255.255.255.248 hosts ip address 192.168.2.1 192.168.2.2 192.168.2.3 192.168.2.4 192.168.2.5 192.168.2.6
先頭オクテットのビット0x02がグローバルアドレスとローカルアドレスを識別するビットで、GLビットと呼ばれる。OFFであればグローバルアドレス、ONであればローカルアドレスであることを示している。 また、先頭オクテットのビット0x01がユニキャストとマルチキャストを識別するビットで、IGビットと呼ばれる。
02:xx:xx:xx:xx:xx 1オクテット目が x2/x6/xA/xE が プライベート・MACアドレス x2:xx:xx:xx:xx:xx x6:xx:xx:xx:xx:xx xA:xx:xx:xx:xx:xx xE:xx:xx:xx:xx:xx
https://en.wikipedia.org/wiki/MAC_address#Address_details
IPアドレスの国名の一覧
http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
#!/usr/bin/perl
while (<STDIN>){
next unless /^apnic\|JP\|ipv4\|(.+)\|(.+)\|\d+\|allocated/;
print "$1/".(32-log($2)/log(2))."\n";
}
割当のリスト ## wget http://ftp.apnic.net/stats/iana/delegated-iana-latest 国名のリスト ## wget http://ftp.apnic.net/stats/apnic/delegated-apnic-latest ## wget http://ftp.apnic.net/stats/ripe-ncc/delegated-ripencc-latest ## wget http://ftp.apnic.net/stats/afrinic/delegated-afrinic-latest ## wget http://ftp.apnic.net/stats/arin/delegated-arin-extended-latest ## wget http://ftp.apnic.net/stats/lacnic/delegated-lacnic-latest
CVS データ https://dev.maxmind.com/geoip/geoip2/geolite2/
AS番号( private as )
3.2 プライベートAS番号の利用 (JPNIC) 有限の資源空間であるAS番号の中にはICANN によって予約されている空間があります。 そのうち 64512(0.64512)〜65534(0.65534)の範囲の AS番号はプライベートASとして使用されます。 プライベートAS番号は、自AS外に、 AS_PATH属性にプライベートAS番号が付加されたまま経路情報を流してはいけません。 プライベートAS番号が利用されるのは、 インターネットに接続されない実験網などの場合、 BGPコンフェデレーションなど自律ネットワークの内部で利用される場合などが考えられます。 いずれにしても、 内部的に利用されたプライベートAS番号を AS_PATH属性に含んだままインターネットに広告してはいけません。
キャリアグレードNAT (Carrier Grade NAT)
ラージスケールNAT(Large Scale Network Address Translator、LSN) 100.64.0.0/10