2016-09-18 120 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