由于一般的路由器、防火墙等并不支持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 xf netmask_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.0 0.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 11111111 11111111


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