3

列 (テキスト型) 'ip_port' を持つ PostgreSQL テーブルがあります。この列には次のような値があります。

167.123.24.25:59874

これは IP:ポートです

そして、これらの IP からのすべてのサブネットと、各サブネット内の IP の数を一覧表示するクエリを作成しようとしています。Postgresでこれを行うエレガントな方法はありますか?

前もって感謝します!

4

1 に答える 1

1

あなたが持っている唯一の情報がIPアドレスである場合、PostgreSQLまたは他のツールでこれを行うことはできません。次のことも知っておく必要があります。

  • ネットワークのブロードキャスト アドレス。
  • ネットワーク サブネット マスクまたはマスク プレフィックスの長さ。また
  • CIDR 以前のクラスベースのアドレス割り当てが使用されていること

特定の IP が実際には、サイズが大きくなる複数のネットワークのメンバーであると考えてください。ローカル エリアイーサネット ベースの IP ネットワーキングの目的で、サブネット マスクによって定義されたブロードキャスト ドメインがありますが、そのアドレスに対してますます広範なルーティング アグリゲーション ドメインのネストされたセットもあります。内部ネットワークに対してプライベートです。「パブリック」と「プライベート」の境界はあいまいな場合があります。たとえば、私の ISP のネットワーク内では、大きなネットワーク ブロックが小さなチャンクに分割されており、外部からは見えませんが、ISP の顧客には見えます。

たとえば、167.123.24.25 のネットワークの非網羅的なリストは、sipcalcツールを使用したいくつかの簡単な計算によると、次のようになります。

  • 167.123.24.25/32(ホスト自体)
  • 167.123.24.25/28: (一般的な ISP 割り当て): 使用可能167.123.24.17 - 167.123.24.30、ネットマスク255.255.255.240
  • 167.123.24.25/24: (一般的な LAN サブネット サイズ): 使用可能167.123.24.1 - 167.123.24.254、ネットマスク255.255.255.0
  • 167.123.24.25/20: (中間レベルのルーティング集約): 使用可能167.123.16.1 - 167.123.31.254、ネットマスク255.255.240.0
  • 167.123.24.25/16: whois による、このアドレス ブロックの最上位 APNIC 割り当て): 使用可能167.123.0.1 - 167.123.255.254、ネットマスク255.255.0.0

そのアドレスを指定する場合tracerouteは、これらのルーターのいずれかが、アドレスがより狭く、より具体的なサブネットの一部になるポイントである可能性がある (そうでない可能性もある) ことを考慮してください。ウィキペディアのクラスレス ドメイン間ルーティングを参照してください。

NAT (ブリーチ) と内部 WAN ルーティングを検討する前に、これだけです。167.123.24.25 は、NAT 処理されたホストの隠れたネットワーク全体のルーターである可能性があります。これらのホストは、ルーティング パスに沿って近くにいる誰かだけが実行できる非常に高度なパッシブ マッピングなしでは、外部からは見えません。

アドレスのネットワークについて詳しく知るには、ブロードキャスト アドレスとして扱われる可能性のあるアドレスを見つけるために、本格的な調査を行う必要があります。もちろん、ほとんどのルーターは、ローカル ルーティング ドメインの外部からのブロードキャスト アドレス宛てのパケットをフィルター処理するため、「ホストが存在しない」、「ブロードキャスト アドレスである」、「ホストは存在するがフィルター処理を行う」の違いを見分けることができない場合があります。プロービングに使用しているパケット」. このような調査は遅く、ネットワーク所有者を不機嫌にする傾向があります. このネットワークは米国公共事業省が所有しているため、不機嫌にならないようお勧めします。

于 2013-03-28T00:06:05.343 に答える