2016-09-18 119 views
-1

我想从csv文件生成geoiplist.acl文件。 ACL文件格式:绑定acl文件使用bash生成CSV CSV列表

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乡村列文件。

"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代码中做到这一点。提前致谢。

+0

你需要展示一些你已经尝试过的努力。此处也粘贴示例CSV。 –

+0

请从这里的csv文件发布一两行(尽可能多的相关内容),这样有人可以指导您将csv映射到acl格式。 – blackpen

+0

感谢您的回复。我从CSV文件中粘贴了几行。 – user3850712

回答

0

这里的问题是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%。这是3,758,096,384个地址。但我们已经知道在这里不应该存在几个地址块,明显的是10.0.0.0/8,172.16.0.0/12192.168.0.0/16(事实上,其他的;进一步调查揭示了条目"192.168.0.0","192.169.31.255","US"存在,其覆盖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)。

我希望这有助于解决您的查询/问题。

UPDATE

作为的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; 
}; 
+0

感谢您的详细信息:) – user3850712