ガイド
LinuxでVPNを設定する方法
プロバイダー自身のリポジトリからクライアントを導入する方法、システム標準ツールで設定ファイルを使う方法、Linuxで他の環境より起きやすいDNSの詳細、そして端末からの確認方法を説明します。Ubuntu 26.04 LTSとNetworkManagerを前提にしています。
始める前に
このガイドではプロバイダーを選びません
以下の手順はどのプロバイダーを使っても同じなので、ここでは特定のプロバイダーを挙げていません。選択は別の作業であり、レジスターで行います。ダウンロードページではなく、公開されたスコアを基準に選びます。
クライアントは、プロバイダー自身のリポジトリから、プロバイダー自身の手順に記載された署名鍵を使ってインストールしてください。フォーラムやブログにある1行のインストールコマンドを端末に貼り付けるのは絶対にやめてください。コマンドはroot権限で実行され、何を取得したのか分からないためです。署名済みリポジトリのパッケージは確認できますが、シェルにパイプされたスクリプトは確認できません。
クライアントをインストールする
Linuxには2つの方法があり、どちらも正当です。1つ目はプロバイダー自身のクライアントで、キルスイッチ、サーバー選択機能、DNS処理が最初から備わっています。2つ目はシステム標準ツールで設定ファイルを使う方法で、このガイドの最後でその代償を説明します。
- プロバイダーのウェブサイトにサインインし、アカウント画面からLinux向けの手順を開きます。そこにリポジトリ、鍵、パッケージが記載されているので、それだけに従ってください。
- リポジトリとその鍵を追加し、パッケージをインストールします。ディストリビューションのパッケージマネージャーを使ってください。鍵があることで、パッケージマネージャーは改ざんされたパッケージを拒否できます。鍵なしで追加したリポジトリは、信頼を引き受けたリポジトリです。
- クライアントのサービスを有効にして、起動時に開始するようにします。クライアントは通常、rootで動くデーモンと、それと通信するデスクトップアプリで構成されます。トンネルを管理するのはデーモンであり、起動時から機能させたいキルスイッチには、起動時からデーモンが動いている必要があります。
- クライアントにサインインします — アプリから行うか、アカウント画面で取得できるトークンを使ってコマンドラインから行います。デバイス名には、あなたを特定できないものを付けてください。
- まだ接続しないでください。 先に設定を開きます。以下の3項目のうち2つは、ほとんどのクライアントで初期状態では無効です。
確認しておくべき3つの設定
クライアントのメニューは異なっていても、設定そのものは変わりません。3項目はいずれも、名前が分からない場合は用語集に説明があります。
キルスイッチ
トンネルが切断されたとき、接続を通常のネットワークにひそかに戻すのではなく、すべての通信を遮断します。Linuxでは、クライアントが書き込むファイアウォールルールとして機能し、トンネルインターフェースとトンネル自体のエンドポイント以外をすべて破棄します。有効にしたうえで、クライアントに用意されている場合は常時オンまたはロックダウン形式を選び、接続中だけでなく起動時からルールが維持されるようにします。このスイッチの役割は専用ページで説明しています。
トンネル内のDNS
他の通信がすべてトンネル内にあっても、名前解決だけがトンネルの外へ出ることがあります。Linuxでこの漏えいが最も起きやすいのは、リゾルバーが動的に変わる要素だからです。Ubuntuではその役割をsystemd-resolvedが担います。各インターフェースにはそれぞれリゾルバーがあり、DNSのデフォルトルートを持つものが、より具体的なドメインに一致しない問い合わせをすべて処理します。クライアントは、トンネルインターフェース経由でプロバイダーのリゾルバーをデフォルトに指定する必要があります。クライアントのDNSには第三者のものではなく、プロバイダー自身のものを設定してください。ルックアップだけを見ている第二の当事者が増えることになるためです。漏えいが起きる仕組みはDNS漏えいのページで説明しています。
プロトコル
問題が起きていない限り、最新のデフォルト設定のままにしてください — プロトコルのページでは、現行のものと旧式のものを一覧にしています。接続問題を解決するためにクライアントが古い選択肢を提示する場合、それは内容を理解したうえで一時的に行い、その後元に戻すべき選択です。レジスターでは、プロバイダーがまだ提供している中で最も弱いプロトコルを示しており、手動でそれを選ぶことは、その判定を自分で選ぶことになります。
実際に動作していることを確認する
接続したら、思い込まずに確認してください。端末から、次の3項目をこの順番で確認します。
- アドレスが変わっている。
curlで「自分のIPアドレス」を表示するサービスにアクセスするか、ブラウザーで開き、選択した出口の国と一致することを確認します。公開アドレスに対するip route getでは、Wi-FiやEthernetではなくトンネルインターフェースが表示されるはずです。 - ルックアップがトンネル内で行われている。
resolvectl statusを実行します。トンネルインターフェースにプロバイダーのリゾルバーとDNSのデフォルトルートが設定され、物理インターフェースのリゾルバーは使われていないはずです。ブラウザーでDNS漏えいテストを行うのが2つ目の確認方法です。インターネットプロバイダーに属するものが表示された場合、DNS設定が反映されていません。 - キルスイッチが表示どおりに機能する。 ダウンロードを実行した状態で、
systemctl stopを使ってクライアントのサービスを停止するか、ip link set … downでトンネルインターフェースを停止し、クライアントに要求せずにトンネルを切断します。転送は完全に停止するはずです。そのまま続くなら、スイッチは飾りです。
より多くのテストと、それぞれで確認できること・できないことについては、専用ガイドで説明しています。
これらの確認で分かること
+選択した国の出口サーバーを経由して通信が送信されている
+ルックアップに応答しているリゾルバーが、トンネル内にあるプロバイダーのものになっている
+トンネルが切断されると、ひそかに戻るのではなく通信が遮断される
これらでは分からないこと
−プロバイダーが何を保持するかは分からない — これは文書に関する問題であり、保持に関するページで確認するものです
−匿名になるわけではない。ブラウザーやログイン情報は変わらないため、VPNで保護されないものを確認してください
−今日テストに合格しても、次のパッケージ更新や次のカーネルについて保証されるわけではない
設定ファイルを使う方法と、その代償
ほとんどのプロバイダーは、アカウント画面から一般的な2つのプロトコル用の設定ファイルを公開しています。WireGuardファイルは、接続エディターまたはnmcli connection importを使ってNetworkManagerにインポートでき、wg-quickでも同じように動作します。OpenVPNファイルも、OpenVPNプラグインを使えば同じ方法でインポートできます。得られるのはトンネルとシステム標準のインターフェース切り替え機能だけで、プロバイダーがファイルに記載していない機能はありません。
失うのは、クライアントのその他の機能です。自分でファイアウォールルールを書かない限り、キルスイッチはありません。NetworkManagerにインポートしたファイルが切断されると、通信はそのまま通常のネットワークに戻ります。DNS処理もありません。適用されるのはファイル内のDNS行だけで、それがないファイルは、トラブルシューティングで最初に確認すべき漏えい原因になります。サーバー選択機能もありません。各ファイルは1つの出口に対応しており、出口を変えるには別のファイルが必要です。ファイルはアカウント画面から生成し、非公開で保管してください。WireGuardファイルには、プロバイダーに対するあなたの身元となる秘密鍵が含まれています。
この方法は、サーバー、ヘッドレスマシン、またはクライアントが対応していないディストリビューションに適しています。ノートパソコンではクライアントを優先してください。クライアントが備えるスイッチこそ、設定ファイルにはない機能です。
動作しない場合
トンネルは接続されているのに、DNSがまだインターネットプロバイダーに送られる
Linuxで典型的な漏えいです。DNSを設定していない設定ファイルでは、systemd-resolvedがネットワークから渡されたリゾルバーを使い続けるため、トンネルの外に出ます。resolvectl statusを実行してください。トンネルインターフェースにプロバイダーのリゾルバーが表示され、DNSのデフォルトルートを持ち、プラス記号が付いているはずです。
設定にDNS行を追加するか、NetworkManagerの接続設定でDNSを指定してから再接続します。プロバイダー自身のクライアントなら自動で設定されるため、クライアントを優先する理由の1つになっています。
トンネルが切断されるとすべてが止まり、不便に感じる
キルスイッチが役割を果たしている状態です。切断されたトンネルは、何も通知せず通常のネットワークに戻るのではなく、通信を停止させます。スイッチを無効にするのではなく、再接続してください。
あるネットワークで頻繁に切断され、別のネットワークではほとんど起きない場合は、プロトコルを一度切り替え、近い出口を試してください。そのネットワークでどのプロトコルも維持できないなら、ネットワークがVPN通信を遮断しています。このガイドで扱えるのはここまでです。
クライアントが毎回sudoまたはパスワードを求める
ネットワークインターフェースの作成には特権が必要です。バックグラウンドサービスをインストールしないクライアントは、毎回その許可を求める必要があります。ほとんどのクライアントは、rootで動くデーモンと、それと通信するデスクトップアプリをインストールします。繰り返し表示されるプロンプトは、サービスが動いていないか、有効になっていないことを示しています。
systemctl statusと、プロバイダーの手順に記載されたサービス名で確認し、起動時に開始するよう有効化してください。
テストページにIPv6アドレスが表示される
トンネルはIPv4を通している一方、マシンにはトンネルの外側へのIPv6ルートが残っているため、IPv6を優先する通信がVPNを迂回しています。IPv6をトンネルしないプロバイダーでは、インターフェース上でIPv6を無効にする必要があります。優れたクライアントならこれを実行します。
ファイルから接続を作成した場合は、NetworkManagerの接続設定でIPv6を無効にするか、sysctlで無効化して、もう一度テストしてください。2つ目のアドレスファミリーを開けたままのトンネルは、半分しか機能していません。
同じ手順、別の機種
他のプラットフォーム
すべてのプラットフォームには、1つのページのタブではなく専用のガイドがある。手順はインストーラーが開いた時点で分岐し、3つのプラットフォームに一度に答えようとするページはどれにもきちんと答えられない。