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

2015-04-02 16:04:59 +08:00
 ScotGu
有一堆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 就可以了。。
3245 次点击
所在节点    问与答
9 条回复
yadam
2015-04-02 16:24:05 +08:00
http://www.techzoom.net/Tools/IPAddressCalculator
把网段的起止IP算出来(uint移位就行), 然后就是简单的数值比较了
之后再把uint范围转成网络号.

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

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

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

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

感谢V2er 出招。
Daniel65536
2015-04-03 22:05:33 +08:00
cidrmerge已经提交homebrew,OS X下可以使用如下命令安装:
brew install cidrmerge

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/181141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX