V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ScotGu
V2EX  ›  问与答

如何优雅、快速的合并重复 IP 段?

  •  
  •   ScotGu · 2015-04-02 16:04:59 +08:00 · 3431 次点击
    这是一个创建于 3531 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一堆IP/掩码。
    但有重复的, 如何合并?
    比如
    192.0.0.0/8
    192.168.0.0/16
    192.168.1.0/24
    192.168.2.0/24

    只需要留192.0.0.0/8 就可以了。。
    9 条回复    2015-04-03 22:05:33 +08:00
    yadam
        1
    yadam  
       2015-04-02 16:24:05 +08:00   ❤️ 3
    http://www.techzoom.net/Tools/IPAddressCalculator
    把网段的起止IP算出来(uint移位就行), 然后就是简单的数值比较了
    之后再把uint范围转成网络号.

    这个是我写的一个ip范围相减的, 比较乱
    https://github.com/jialeicui/dns_about/blob/master/ip_region/exclude/main.cpp
    jasontse
        2
    jasontse  
       2015-04-02 17:14:38 +08:00 via iPad   ❤️ 2
    Daniel65536
        4
    Daniel65536  
       2015-04-02 18:46:32 +08:00 via iPad   ❤️ 1
    https://github.com/BlackGear/Mono_PAC/blob/master/src/make.py

    我写Mono_PAC的时候写了这个功能,在RouteChain这个类里。
    liuchen9586
        5
    liuchen9586  
       2015-04-02 18:48:42 +08:00   ❤️ 1
    这不就是CIDR吗……
    如果网络小的话用这个还不错,节省路由器资源
    网络大的话贸然使用CIDR会引起各种数据包不可达的问题。
    datocp
        6
    datocp  
       2015-04-02 18:51:51 +08:00   ❤️ 1
    早些年一直用subnettools102.rar,只是这东东处理超过8千的数目就会崩溃,需要手工多次处理。。。。

    刚试了cidrmerge从最终的处理占用空间来看,基本跟subnettools的结果差不多,而且速度飞快。

    ./cidrmerge <cntmp.lst >cn.lst
    cn.lst 83338>53816 bit
    uncn.lst 2261069>376504 bit
    kn007
        7
    kn007  
       2015-04-02 19:03:57 +08:00
    mark
    ScotGu
        8
    ScotGu  
    OP
       2015-04-02 23:11:34 +08:00
    @jasontse
    @datocp
    这个小工具真好用! 丢到linux环境下就OK 。
    拜谢!

    感谢V2er 出招。
    Daniel65536
        9
    Daniel65536  
       2015-04-03 22:05:33 +08:00
    cidrmerge已经提交homebrew,OS X下可以使用如下命令安装:
    brew install cidrmerge
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2728 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:14 · PVG 17:14 · LAX 01:14 · JFK 04:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.