マシン全体を使わずに 一つのアプリだけを VPN 経由にする方法
プロセス単位の VPN スイッチを備えた非管理デスクトップはありません。通信を選ぶ層を選びます。バインド済みソケット、UID ルール、ファイアウォールプロファイル、SOCKS ホップのいずれかです。
クライアントのアイコンは接続済みを示し、インターフェースも存在するのに、アプリは何にも届かない。この組み合わせはよくあります。仮想インターフェースは存在し続けても、対向側、アドレス、ルートが欠けていることがあるからです。ip link は最初に使うべき正しい道具であり、同時に最も過大に読まれやすい道具でもあります。フラグとカウンターが説明するのは 一つの層だけで、その上の層は独立に失敗します。トンネルが上がっていると証明したいときによく引用される道具でもありますが、それはまさにこの道具だけでは支えられない主張です。
アイコンより先にインターフェースを読む
まず ip -details link show dev tun0 から始めます。ip-link のマニュアル に書かれているとおりですが、慣習的な名前ではなく、実際にクライアントが持つインターフェースに置き換えてください。フラグ、種類、MTU、インターフェースの同一性は有用な観察です。仮想インターフェースの状態の文言は、物理ケーブルのキャリア表示と同じ振る舞いをする必要はないので、UP はトンネルではなくインターフェースについての記述として扱います。
この区別が最も混乱する事例を説明します。対向側が再接続中だったり到達不能だったりしても、インターフェースは残るのです。
永続化の設定は、再接続のたびに作り直さないようにリンクを残すことがあります。つまり存在は健全性ではありません。
カウンターと、それを使うはずのリクエストを用意する
対応している統計表示 ip -s link show dev tun0 を使い、両方向のパケット数とバイト数を記録します。次に、そのインターフェースを通るはずの無害なリクエストを発生させ、該当する方向を比較します。別のアプリの直接ルートを通ったリクエストはこのカウンターを動かしません。それがこの演習の要点です。
送信カウンターが動いて受信カウンターが動かなければ、パケットは出て行ったが何も戻ってきていないということです。これは何も運んだことのないインターフェースとは別の問題です。両方のカウンターが動いてアプリがまだ失敗するなら、障害はインターフェースの上にあり、それは行き止まりではなく前進です。
一回のスナップショットを信じず、読むのは前と後の 二回にします。
アドレスとルートは別の手順
リンクは、プレフィックスやリゾルバの設定、アプリに必要なルートがなくても存在できます。アドレスは ip address show dev tun0 で確認し、宛先がどのルートを選ぶかは ip route get で実際のターゲットについて確認します。この 三つの観察は 三つの別の問いに答えるもので、転送に関わるのは最後の 一つだけです。
IPsec ではセキュリティポリシーとアソシエーションの状態も関係することがあり、すべての IPsec 設計が単純な tun インターフェースとして現れるわけではありません。存在するはずのない tun デバイスを探すのは、誤った結論に速く至る方法です。
保存する出力には、正確な名前、名前空間、時刻を必ず添えてください。別のコンテナや復元されたセッションで同じに見える名前は、まったく別の文脈を表します。
特定していないものを削除しない
見慣れないインターフェースが自動的に古いわけではありません。何かを外す前に所有者を特定し、本当に外す意図があるときはクライアントの文書化された撤去手順か管理された設定を使ってください。何が起きるかを見るために生きたトンネルを削除するのは、誰も尋ねていない問いに答えるテストです。
インターフェースがコンテナランタイムや、自分が作っていないネットワーク名前空間に属するなら、所有者はコマンド 一つ分の距離にあり、先に探す価値があります。
同じ注意は ip link set down にも当てはまります。戻せそうに見えて、しばしば戻せません。
点検から何を持ち帰るべきか
よい点検は 四つの事実で終わります。インターフェースの名前と名前空間、そのフラグと MTU、実際のリクエストによるカウンターの差分、そしてアプリが本当に必要とするルートとアドレスです。これらが書かれていれば、次の手順は明白で、特定の層に属します。なければ、その後の変更はすべてロールバック計画付きの推測です。
その 四つの事実を、動作しているセッションの同じ 四つと比べます。インターフェースの名前と名前空間が一致するのにカウンターの差分がゼロなら、リクエストはトンネルに届いていません。カウンターの差分が健全でルートが別を指すなら、トンネルは正常でルーティングが不正常です。この比較が、出力の山を判断に変えます。
出力はチケットと一緒に保管してください。後から比較しても、何が変わったか見えなければ役に立ちません。
最後にアプリをもう一度試してループを閉じます。ユーザーが気にしていたのはインターフェースではなかったからです。