ドメイン名を信頼せずに VPN ソケットを読む方法
プロセスの隣にあるホスト名は、アドレスに関する推測です。VPN クライアントを責める前に、数値のエンドポイント、接続状態、所有する PID を読みましょう。
エンドポイントビューアは、VPN プロセスを広告会社のドメインの隣に並べますが、その組み合わせはデータが支えられない物語を始めます。名前は数値エンドポイントの上に塗られた逆引きであり、逆引きが変わるたびに変わります。精査に耐える列は、アドレス、接続状態、そしてソケットを所有する PID です。
ソケットテーブルには、接続の中で何が運ばれたかを記述するものは何もありません。ホスト名を伴うものは、すでにあなたの代わりに解釈されています。
解決された名前は翻訳であり、フィールドではない
ビューアはリゾルバにアドレスを名前に変えるよう求めますが、これは DNS の PTR クエリが動くのと同じやり方です。答えはローカルキャッシュ、hosts ファイルのエントリ、近隣探索の告知、あるいは先週そのアドレスを別人に渡したプロバイダから来ることもあり、ツールにはこれらの出所を見分ける方法がありません。同じ接続を見ている二台のマシンが、同じピアアドレスに対して違う名前を表示することがあり、名前が回線から来たと信じているなら説明がつきません。ラベルは人間の目のための便宜として扱い、バイトを受け取ったのが誰かという主張とは考えないでください。
TCPView のドキュメントはエンドポイント、状態、プロセスの列を説明し、解決済みの名前をオフにする方法を記していますから、ドメインに何かの意味を読み込む前にそうしておく価値があります。解決を切ると不確かさを作り出すのではなく見えるようにし、あなたは依然としてアドレスを持ったまま、それが何を意味するかを決める仕事がただあなたのところへ戻ってくるのです。
数値の列を順に読む
左から右へ進み、あなたの問いに答える最初の列で止まります。ローカルエンドポイントはプロセスが何に束縛されたかを示し、リモートエンドポイントはピアがそもそも存在するかを示し、状態は関連が生きているかを示し、PID は行を実行ファイルにつなぎます。
以下の三つの観察は、ここにあるどのマシンから取得した出力でもなく、例示的な形です。それぞれが何を支えられるかでまとめてありますが、それが人がソケットの行に実際に投げかける問いだからです:
| What the row shows | What it rules out | What it cannot show |
|---|---|---|
| An open listener with no peer address | Any remote party; nothing beyond this host has reached the port | Whether the local service is well configured, or who is allowed to use it |
| An association in the open state | That the entry is cosmetic; a peer address exists and was accepted | Which application data crossed it, or whether that peer is trustworthy |
| An association whose counters move | That the conversation is idle or already stale | What was requested, what came back, or who started it |
他のマシンが到達できない、ループバックアドレスに束縛された開いたリスナーは、多くの VPN クライアントが自前の制御チャネルを公開する方法です。ワイルドカード束縛は、プロセスがあらゆるインターフェースで接続を受け入れたことを意味し、それが危険かどうかは行そのものではなくホストのファイアウォール次第です。存在し、カウンタを運ぶ関連だけが、人がふだん持ち出したい非難に似ており、その行でさえペイロードの手前で止まります。
犯人を名指しする前に所有を確かめる
プロセスの同一性こそが、ほとんどの非難が実際に失敗する場所です。PID は再利用され、アップデータやブラウザの補助プロセスは短命の子を作り、VPN クライアントは自らの通信を特権のあるシステムサービスに渡すことがあります。表示名はバイナリを作った者が選ぶものなので、比較するのは実行ファイルのパスと親プロセスにしてください。
tcpvcon -n -a
Get-Process -Id 4188 | Select-Object Id, ProcessName, Path
同じ読み方は Linux にもあり、他のユーザーのソケットを見るだけの権限があれば、ソケット統計がプロセス情報を運ぶことがあります。確立済みのソケットをポート 443 に、あるいはそこから束縛されたものに絞って問い合わせると、出力は意味のある行に狭まります:
ss -tunp state established '( sport = :443 or dport = :443 )'
行と一緒にタイムスタンプを記録してください。PID だけでは動く参照であり、プロセス管理ツールを開くころにはソケットは後継のものになっているかもしれず、あなたが調べているパスが接続を保持していたものとは限りません。エンドポイントの組、状態、PID を一つの観察として記録すれば、その所見は再起動や第三者の意見にも耐えます。
名前にはまだ何の価値があるか
ホスト名は無価値な証拠ではありません。誰かがある時点でそのアドレスをその名前と結びつけたことを記録しています。その結びつきは、アドレスが何千もの無関係な顧客を抱えるプロバイダのものだと分かったときに注目に値します。それは宛先より弱い主張であり、ラベルが支えられる唯一の主張です。
名前がおかしいと感じたら、アドレスをプロバイダの公開する範囲と照らし、そのうえでその瞬間にプロセスが何をしていたかを問いましょう。更新確認、ライセンス呼び出し、テレメトリの送信、トンネルのハンドシェイクといった活動は異なる接続の形を残し、形を瞬間に合わせるほうが、名前を疑わしい会社に合わせるより多くのことを教えてくれます。
共有のヘルパーを終了したり何かをアンインストールしたりする前に、その行を保存してください。弁護できる結論は、観察した一つのエンドポイント、その状態、その所有者を覆いますが、解決されたラベルの上に築かれたブランド全体の判定は証拠ではなく、よく知られたダウンロード先だから無害のはずだという安心も証拠ではありません。