特定のプライベートサービスは VPN 経由で応答するのに、通常のインターネットトラフィックは同僚のマシンとはまったく違う挙動をしていて、Ubuntu クライアントが壊れていると結論づけたくなります。その結論は一手順を飛ばしています。プライベート操作が機能していることと、パブリック経路が異なることは二つの観察であり、その違いは通常、クライアント自体ではなく各クライアントがインストールしたトラフィックポリシーにあります。

保存された設定と実際のネットワーク状態を比較するには三つのコマンドが必要で、当て推量が答えようとしていた問いに答えてくれます。

まず保存プロファイル、次に実効状態

インポートされた OpenVPN 接続は独自の NetworkManager プロファイルになります。元の .ovpn ファイルはインポートが完了した時点で真実の源ではなくなるため、後からそのファイルを編集しても使用中の接続は変わりません。ここが比較が最初に狂う地点であり、しかも静かに狂います。

nmcli -f connection.id,connection.uuid,ipv4.never-default,ipv4.routes,ipv4.dns connection show office-vpn

名前が衝突する場合は UUID を読み、重複した名前は再インストールやプロファイル復元を生き延びるため、使っていないコピーを一時間編集してしまうことがあります。表示される値は、プロファイルがデフォルトルートを取れるか、どのルートが保存されたか、どのリゾルバと検索ドメインを要求するかという保存された意図を表します。接続がアクティブ化されたときに何が起きたかは、プラグインやサーバープッシュがプロファイルに書かれていない状態を追加できるため表しません。だからこそ次のコマンドが重要です。

次に、システムがその意図を実際にどう扱ったか、ポリシールールとメインテーブルだけでなくすべてのテーブルを含めて見ます。保存されたプロパティは入力であり、インストールされたテーブルが結果です。

ip -4 rule show
ip -4 route show table all

二つの宛先、一つの比較

機能しているプライベート宛先を一つと、通常のパブリック宛先を一つ選び、それぞれがどの経路を通るかをカーネルに尋ねます。これを両方のマシンで行うことで、漠然とした違いが具体的な違いになります。

ip -4 route get 10.40.0.20
ip -4 route get 203.0.113.20

アドレスはご自身のものに置き換える例であり、重要なのは数値ではなく組です。各出力に示されるインターフェース、送信元アドレス、テーブルを比較してください。プライベートの照会がトンネルを指し、パブリックの照会もトンネルを指すなら、それはフルトンネルであり、もう一方のクライアントはスプリットトンネルかもしれませんし、その逆かもしれません。

二つのクライアントが同一のテキストを出力することを求めてはいけません。OpenVPN の redirect-gateway def1 は通常、一つのデフォルトではなく二つの半プレフィックスルートとして表現され、それを違う形で表示するマネージャが誤りとは限りません。判断すべきは、照会が示すカバレッジであり、書式ではありません。

二つのクライアントが正当に異なる点

クライアントのデフォルトはポリシーの選択であり、食い違って構いません。ある製品はフルトンネルを好み、別の製品はローカルのデフォルトを保ってプライベートプレフィックスだけをルーティングし、三つ目はサーバーがプッシュしたものに従うかもしれません。違いが欠陥になるのは、与えられた要件と矛盾する場合だけです。

ですから各クライアントを、承認されたスプリットまたはフルトンネルの意図と比較し、互いに比較しないでください。要件が「プライベートトラフィックはトンネルを使い、ローカルのインターネット経路はローカルのまま」であるなら、フルトンネルがバグでありスプリットトンネルが正解で、どちらのクライアントがどちらを行ったかは関係ありません。どちらかの設定を見る前に意図を書き留めてください、さもないと最初に調べたクライアントが静かに基準になります。

DNS は第二の軸であり、独立して失敗します。正しいルートでも、プライベートゾーンに答えられないリゾルバへクエリを送ることがあり、正しいリゾルバは誤ったルートを直しません。両方を確認し、プライベート名は解決するのにプライベートアドレスは解決しない場合は、二つの層が別々に解決されている証拠として扱ってください。

比較を清潔に保つ

接続の所有者は一度に一つだけにしてください。インポートしたプロファイルの隣でコマンドラインの OpenVPN セッションを動かすと、独自のルートとリゾルバ状態がインストールされ、その混成はどちらのクライアントの挙動でもありません。もう一方を測る前に片方を落としてください。何がまだ状態を保持しているか不明なら再起動してください、一時間前の古いルートはポリシーの問題とまったく同じに見えるからです。

他の要素もすべて固定してください: 同じエンドポイント、同じアカウント、同じソフトウェアバージョン、同じネットワークです。同僚の Windows ノート PC での成功は、別のクライアント、別のリゾルバ統合、場合によっては別のサーバープロファイルを試しているので、Ubuntu のマネージャに関する証拠にはなりません。

NetworkManager の IPv4 設定リファレンスは never-default と保存ルートのプロパティを正確に定義しており、管理された値を変更する前に読む価値があります。そして、この比較が対象とするのは IPv4 であり、独自のデフォルトと独自の驚かせ方を持つ対応する IPv6 ポリシーについては何も述べていないことを忘れないでください。

関連記事