我想生成geoiplist。从CSV文件中获取Acl文件。Acl文件格式:
acl "A1" {
31.14.133.39/32;
37.221.172.0/23;
acl "A2" {
5.145.149.142/32;
57.72.6.0/24;
......
CSV文件:http://download.db-ip.com/free/dbip-country-2016-09.csv.gz
以下是CSV文件中的示例行,其中包含IP_Start, IP_End和Country列。
"0.0.0.0","0.255.255.255","US"
"1.0.0.0","1.0.0.255","AU"
"1.0.1.0","1.0.3.255","CN"
"1.0.4.0","1.0.7.255","AU"
"1.0.8.0","1.0.15.255","CN"
"1.0.16.0","1.0.31.255","JP"
"1.0.32.0","1.0.63.255","CN"
"1.0.64.0","1.0.127.255","JP"
"1.0.128.0","1.0.255.255","TH"
"1.1.0.0","1.1.0.255","CN"
我从这里得到了一些参考:http://geoip.site/但他们的acl没有完整的列表。
任何人都可以帮助我做这个在bash代码请。
这里的问题是DB-IP以人类可读的IP地址格式提供每个范围的开始和结束值。我不确定他们为什么这样做,因为更通用(更容易处理)的格式是简单地以整数形式表示这些值。
在任何情况下,我已经修改了http://geoip.site/上的Python脚本来处理这个问题,并在脚本中包含了DB-IP数据库URL。从CSV文件生成的ACL文件现在也可以从http://geoip.site/download/DB-IP/GeoIP.acl
下载。注意我已经发现了这个数据库的一些问题:
- 表项
"::","2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff","US"
已经存在。这显然是完全的垃圾,也破坏了Python脚本(我已经改进了错误检测代码来处理这个问题),也是下面第4点的原因之一。 -
"224.0.0.0","255.255.255.255","CH"
是一个有趣的条目。我不完全确定他们是如何将IPv4地址空间的整个多播块委托给瑞士的,或者为什么它存在于他们的数据库中。 - 统计分析(可在http://geoip.site/上获得)表明,他们的DB/CSV文件跨越
224.0.0.0/3
(组播)之外的IPv4地址空间的100%。那就是3,758,096,384个地址。但是我们已经知道这里不应该存在几个地址块,明显的是10.0.0.0/8
,172.16.0.0/12
和192.168.0.0/16
(以及其他;进一步的调查显示条目"192.168.0.0","192.169.31.255","US"
是存在的,它涵盖了192.168.0.0/16
及以后的条目)。所以这个结果看起来很可疑。 - 统计分析还报告他们的DB/CSV跨越IPv6地址空间的100%。这主要是因为他们将
3000::/4
(和其他各种较小的地址块)映射到US,这是错误的(参见http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml,其中3000::/4
被列为RESERVED
)。这个映射来源于条目"2c10::","ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff","US"
。http://geoip.site/上的其他2个数据库在整个IPv6地址空间的覆盖范围远不及这个量级(目前都小于0.1%),所以这个结果看起来也很可疑。
鉴于以上所有情况,我会质疑他们数据库的准确性,并就此与他们联系。但是,如果您想使用它,请随意下载http://geoip.site/download/DB-IP/GeoIP.acl文件。
最后,我甚至不会在BASH中尝试这样做。从CSV文件生成此文件所需的转换只适用于更高级的语言,如Python;BASH就是不能切这个(好吧,不是我的BASH)。
我希望这有助于解决你的疑问/问题。
<标题> 更新在2016年12月的数据库版本中,DB-IP引入了ZZ acl,以覆盖未映射到任何特定国家的IPv4网络。这当然解决了我上面提到的一些问题。
acl ZZ {
0.0.0.0/8;
10.0.0.0/8;
100.64.0.0/10;
127.0.0.0/8;
169.254.0.0/16;
172.16.0.0/12;
192.0.0.8/29;
192.0.0.16/28;
192.0.0.32/27;
192.0.0.64/26;
192.0.0.128/25;
192.0.2.0/24;
192.88.99.0/24;
192.168.0.0/16;
198.18.0.0/15;
198.51.100.0/24;
203.0.113.0/24;
};
标题>