使用bash从CSV ip列表生成绑定acl文件

2024-04-26 05:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想产生地理信息列表.aclcsv文件中的文件。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列。在

^{pr2}$

我从这里得到了一些引用:http://geoip.site/但是他们的acl没有完整的列表。在

任何人都可以帮我用bash代码来做这个。提前谢谢。在


Tags: 文件csvipcomfreehttpa2列表
1条回答
网友
1楼 · 发布于 2024-04-26 05:36:10

这里的问题是DB-IP以人类可读的IP地址格式提供每个范围的起始值和结束值。我不确定他们为什么这么做,因为更通用(更容易处理)的格式是简单地以整数形式表示这些值。在

无论如何,我已经修改了http://geoip.site/上的Python脚本来处理这个问题,并在脚本中包含了DB-IP数据库URL。从CSV文件生成的ACL文件现在也可以从http://geoip.site/download/DB-IP/GeoIP.acl下载

注意:我已经发现此数据库存在一些问题:

  1. 其中存在条目"::","2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff","US"。这显然是完全的垃圾,也破坏了Python脚本(我改进了错误检测代码来处理这个问题),这也是下面第4点的原因之一。在
  2. "224.0.0.0","255.255.255.255","CH"是一个有趣的条目。我不太清楚他们是怎么认为IPv4地址空间的整个多播块被委托给瑞士的,或者为什么它会存在于他们的数据库中。在
  3. 统计分析(可在http://geoip.site/上找到)表明,他们的DB/CSV文件跨越了224.0.0.0/3(多播)之外的IPv4地址空间的100%。那是3758096384个地址。但是我们已经知道,这里不应该存在几个地址块,最明显的是10.0.0.0/8172.16.0.0/12和{}(以及其他一些地址块;进一步的研究发现条目{}存在,它涵盖了192.168.0.0/16及更多)。所以这个结果看起来有问题。在
  4. 统计分析还报告说,他们的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引入了一个ZZacl,以覆盖映射到任何特定国家之外的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;
};

相关问题 更多 >