-1

csv ファイルから geoiplist.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

IP_Start、IP_End、および Country 列を含む CSV ファイルのサンプル行を次に示します。

"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コードで行うのを手伝ってくれます。前もって感謝します。

4

1 に答える 1

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 の理由の 1 つでもあります。
  2. "224.0.0.0","255.255.255.255","CH"興味深いエントリーです。彼らがどのようにして IPv4 アドレス空間のマルチキャスト ブロック全体をスイスに委譲したと見なしたのか、あるいはなぜそれが彼らのデータベースに存在するのか、まったくわかりません。
  3. 統計分析 ( http://geoip.site/224.0.0.0/3で入手可能) は、DB/CSV ファイルが外部(マルチキャスト)の 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ます)。したがって、この結果は疑わしいように見えます。
  4. 統計分析では、DB/CSV が IPv6 アドレス空間の 100% にまたがっていることも報告されています。これは主に、3000::/4(および他のさまざまな小さなアドレス ブロック)が にマッピングされているためUSです。これは間違っています ( http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments3000::/4を参照)。としてリストされている.xhtml )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、特定の国にマップされる領域外にある IPv4 ネットワークをカバーする acl を導入しました。これにより、上記で提起した問題のいくつかが確実に解決されます。

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;
};
于 2016-09-18T23:14:08.443 に答える