由于一般的路由器、防火墙等并不支持IP地址范围的方式,所以工作中经常要把IP地址范围转换成子网掩码的格式、CIDR格式、思科反向子网掩码格式等!
虽然windows下有些工具可以做到,可是使用起来不方便,功能也不够强大,而且进行批量转换的时候,无法写脚本实现!
无意中在linux下发现了netmask这个工具,功能强大,速度超快,结合脚本很容易实现批量转换!

先介绍一下这个工具:
netmaks可以在IP范围、子网掩码、cidr、cisco等格式中互相转换,并且提供了IP地址的点分十进制、16进制、8进制、2进制之间的互相转换!

闲话少说,进入正题:

1、netmask的安装:


debian、ubuntu下安装很简单:
#apt-get install netmask

centos、fedora、opensuse下面使用yum没有安装上,所以采用了源码的方式进行安装:
#wgethttp://mirrors.sohu.com/ubuntu/pool/universe/n/netmask/netmask_2.3.12.tar.gz
#tar xfnetmask_2.3.12.tar.gz
#cd netmask-2.3.12
#./configure
#make
#make install

2、安装完成以后,先来看一下帮助文档
# netmaks -h
This is netmask, an address netmask generation utility
Usage: netmask spec [spec ...]
-h,--help Print a summary of the options
-v,--version Print the version number
-d,--debug Print status/progress information
-s,--standard Output address/netmask pairs
转换到标准的 ip地址/子网掩码
-c,--cidr Output CIDR format address lists
转换到CIDR格式
-i,--cisco Output Cisco style address lists
转换到Cisco反向子网掩码
-r,--range Output ip address ranges
转换到IP地址范围
-x,--hex Output address/netmask pairs in hex
转换到16进制
-o,--octal Output address/netmask pairs in octal
转换到8进制
-b,--binary Output address/netmask pairs in binary
转换到2进制
-n,--nodns Disable DNS lookups for addresses
Definitions:
a spec can be any of:
netmask命令接受的ip地址格式:
address 单独IP
address:address 开始IP:结束IP
address:+address 开始IP:+IP个数
address/mask IP/掩码


3、使用情况如下:


ip范围转换到cidr格式
#netmask -c 192.168.0.0:192.168.2.255
192.168.0.0/23
192.168.2.0/24

ip范围转换到标准的子网掩码格式
#netmask -s 192.168.0.0:192.168.2.255
192.168.0.0/255.255.254.0
192.168.2.0/255.255.255.0


ip范围转换到cisco格式
# netmask -i 192.168.0.0:192.168.2.255
192.168.0.0 0.0.1.255
192.168.2.00.0.0.255


cidr个数转换到ip范围格式
# netmask -r 192.168.0.0/23
192.168.0.0-192.168.1.255 (512)

把点分10进制的ip转换到二进制
#netmask -b 192.168.0.0
11000000 10101000 00000000 00000000 / 11111111 11111111 1111111111111111


好了,就写到这里了,使用这个工具,加上脚本,处理大量的地址格式转换工作会相当的便捷!