VPN データセットの一行が意味するもの、そしてそれが重要な理由
プロバイダー、エンドポイント、出口アドレス、到達性は四つの異なる行です。単位を選び、出所を保ち、データセットが対象としないものを公表します。
VPN データセットの一行が何を表すのかを問うと、企業、リスナー、公開された出口アドレス、到達性の結果という答えがいくつも出てきます。どれも正当ですが、ラベルなしで混ぜると、精密に聞こえて何も意味しない合計ができます。単位は設計上の決定であり、最初の集計より前に決める必要があります。公表された VPN 統計の混乱の多くは、この手順を飛ばすことから生じます。
行は主張であり、物ではない
どの行も世界について何かを主張しており、その主張には主語があります。主語に名前を与えることが、その行を別の行と比較可能にします。
プロバイダーの行は、ある組織がサービスを提供していると主張します。エンドポイントの行は、特定のアドレスとポートがプロトコルを話すと主張します。出口の行は、トラフィックがある時点であるアドレスから出たと主張します。計測の行は、どこかからの観測が結果を見たと主張します。四つの主語、四つのスキーマ、そして区別子なしでそれらを混ぜたデータセットは、まったく集計できません。
区別子はスキーマの中で最も安価な部分であり、最もよく省略される部分です。
数える前に単位を選ぶ
実際にある問いに答える単位を選びます。エンドポイントを数えれば何個のリスナーが告知されたかに答え、プロバイダーを数えれば何組織が関与したかに答え、出口アドレスを数えれば見かけ上の起点がいくつあるかに答えます。
これらの数は交換可能ではなく、差は大きいものです。一つのプロバイダーが数千のアドレスを運用でき、一つのアドレスが異なるサービスのために複数のプロトコルリスナーを抱えることもあります。したがってアドレスの数は、プロバイダーの数の上限でも下限でもありません。数を述べる文には、毎回、同じ文で単位を添えてください。単位のない数は小数点付きの意見です。
| Unit | The row asserts | What a count of it means |
|---|---|---|
| Provider | An organisation offers a service | How many operators appear |
| Endpoint | An address and port speak a protocol | How many listeners were advertised |
| Exit address | Traffic left from an address | How many apparent origins exist |
| Observation | A probe saw a result | How many tests ran, not how many servers |
公開ディレクトリが提供するのは、そのサービスで告知された参加者です。世界中のあらゆる商用・組織・私設の導入の目録ではなく、そう扱えば導出される統計はすべて膨らみます。
出所はスキーマに属する
出所のない行は検証し直せません。元のレコード、タイムゾーンを含む収集時刻、観測方法、最後に確認した状態を記録してください。
告知された属性と観測された属性は、重みが違うので分けておきます。ディレクトリの国ラベルは告知された主張であり、サーバーの物理的な所在地の証明ではありません。IP の割り当てが特定するのはネットワークブロックであり、その中のすべての借主でも、その上のアプリケーションの現在の運営者でもありません。二つの列と一つの注記は、毎回、統合された一つのフィールドに勝ります。
{"endpoint": "203.0.113.10:1194/udp", "unit": "endpoint", "advertised_country": "NL",
"observed_at": "2026-11-03T02:15:00Z", "method": "udp_probe", "last_seen": "2026-11-03"}
JSON の一行があればスキーマは具体化し、説明の段落より議論しやすくなります。タイムスタンプがタイムゾーンを持ち、方法が暗黙ではなく名指しされている点に注目してください。
問いに応じて重複を除く
重複は単位に依存します。二つのプロトコルリスナーを持つ同じアドレスは、一つのエンドポイント対と二つのサービスであり、黙って畳み込むと数が変わります。
問いが尋ねる階層で重複を除き、保持した各行に何行の生データが畳み込まれたかを記録します。その比率自体が発見で、大きな畳み込みは通常、元がリスナーごとにレコードを公開していることを意味します。多くのアドレスを運用するプロバイダーは逆のパターンを示します。どちらも正しく、記録された比率だけが読み手に両者を区別させます。
そのうえで生の行を残します。重複を除いた表は一つのビューであり、生の入力から再構築できることが結果を再現可能にします。
カバレッジ声明を公表する
元をどう選んだか、どの地域やネットワークを対象とするか、何を意図的に含めないかを明示します。
私設の企業エンドポイントや告知されない導入は公開リストに決して現れないため、ディレクトリにないことは、そのディレクトリが載せなかったことだけを証明します。公開前に元の条件と再配布の許諾を確認し、決して必要でなかったフィールドは削除してください。エンドポイントの調査が加入者の身元、認証情報、閲覧履歴を必要とすることはほとんどありません。それらを公開すれば、別の根拠を持つ別のプロジェクトになります。
wc -l vpn-endpoints.jsonl
jq -r '.unit' vpn-endpoints.jsonl | sort | uniq -c
jq -r '.advertised_country' vpn-endpoints.jsonl | sort | uniq -c | sort -rn | head
これら三つのコマンドは、行数、単位の内訳、告知された国ごとのカバレッジの概略を与えます。母集団が変わったら日付付きのスナップショットを残し、古いものと確認済みの不在を区別してください。母集団が明確で範囲の限られたデータセットは、インターネット上のすべての VPN を含むという裏付けのない主張に勝ります。