32blogby StudioMitsu
security12 min read

NordVPN Linux完全ガイド:CLI操作・PQ暗号化・Docker活用

NordVPNをLinuxにインストールしてCLIで操作する方法を解説。NordLynx、Kill Switch、ポスト量子暗号化、Docker連携まで実践的にカバー。

vpnnordvpnlinuxsecurity
目次

NordVPNはWindows・macOS向けのイメージが強いが、Linux向けのCLIクライアントも充実している。2024年にはLinuxが全プラットフォームで最初にポスト量子暗号化(PQ)に対応し、2025年にはGUIアプリのソースコードがGPLv3でオープンソース化された。

この記事では、NordVPNのLinuxクライアントをインストールしてCLI操作する方法を解説する。Kill Switch、Allowlist、PQ暗号化、Docker連携まで、開発者がLinux環境で実際に使う機能を一通りカバーする。

インストールと初期設定

インストール

公式のインストールスクリプトを使う。curlまたはwgetのどちらでもいい。

bash
sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)

Snapを使う場合はこちら。

bash
sudo snap install nordvpn

Snapパッケージにはv4.2.0以降GUIも含まれている。CLIだけで十分ならどちらの方法でも同じだ。

インストール後の設定

インストール直後は権限の設定が必要だ。これをしないとnordvpn connectがPermission deniedで失敗する。

bash
sudo usermod -aG nordvpn $USER

グループの変更を反映するためにログアウト→ログイン(またはreboot)する。

ログイン

デスクトップ環境がある場合はブラウザ認証が使える。

bash
nordvpn login

ブラウザが開いてNordVPNのログインページが表示される。認証が完了するとCLIに戻る。

ヘッドレスサーバー(VPSなど)ではブラウザが使えない。その場合はトークン認証を使う。

bash
nordvpn login --token YOUR_TOKEN

トークンはNordVPNのWebダッシュボード(my.nordaccount.com)から「Access Token」で発行できる。

接続テスト

bash
nordvpn connect

最速のサーバーに自動接続される。接続状態はnordvpn statusで確認できる。

bash
nordvpn status

出力例:

Status: Connected
Hostname: jp123.nordvpn.com
IP: 203.0.113.45
Country: Japan
City: Tokyo
Current technology: NordLynx
Transfer: 1.2 MiB received, 0.5 MiB sent
Uptime: 5 minutes 32 seconds

CLIコマンドリファレンス

NordVPN LinuxはすべてCLIで操作する。よく使うコマンドを一覧にまとめた。

接続・切断

bash
nordvpn connect                    # 最速サーバーへ接続(短縮: nordvpn c)
nordvpn connect japan              # 国指定
nordvpn connect japan tokyo        # 国+都市指定
nordvpn connect us new_york        # 国名はスネークケース
nordvpn disconnect                 # 切断(短縮: nordvpn d)
nordvpn status                     # 接続状態

サーバーグループ

NordVPNにはP2P最適化サーバーやDouble VPNなど、用途別のサーバーグループがある。

bash
nordvpn groups                     # 利用可能なグループ一覧
nordvpn connect p2p                # P2P最適化サーバー
nordvpn connect double_vpn         # 二重暗号化
nordvpn connect onion_over_vpn     # Tor経由

サーバー情報

bash
nordvpn countries                  # 対応国一覧
nordvpn cities japan               # 国内の都市一覧

設定の確認・変更

bash
nordvpn settings                   # 現在の全設定を表示
nordvpn set technology nordlynx    # プロトコル変更
nordvpn set autoconnect on         # 自動接続
nordvpn set autoconnect on japan   # 自動接続先を指定
nordvpn set dns 1.1.1.1 1.0.0.1   # カスタムDNS
nordvpn set dns off                # デフォルトDNSに戻す

アカウント

bash
nordvpn account                    # アカウント情報
nordvpn logout                     # ログアウト
nordvpn --version                  # バージョン確認

NordLynxとプロトコル選択

NordVPN LinuxではNordLynx(WireGuardベース)がデフォルトプロトコルだ。ほとんどの場合はこれで十分だが、ネットワーク環境によってはOpenVPNに切り替えるべき場面がある。

プロトコルの切り替え

bash
nordvpn set technology nordlynx    # NordLynx(WireGuard)
nordvpn set technology openvpn     # OpenVPN

OpenVPNを選んだ場合は、さらにUDP/TCPを指定できる。

bash
nordvpn set protocol udp           # OpenVPN UDP(デフォルト)
nordvpn set protocol tcp           # OpenVPN TCP

どのプロトコルを選ぶか

状況プロトコル理由
通常利用NordLynx最速、最低レイテンシ
UDPがブロックされているOpenVPN TCPTCPフォールバック
制限の厳しいネットワークOpenVPN + 難読化DPI回避
PQ暗号化を使いたいNordLynxPQはNordLynx専用

OpenVPNで難読化を有効にするコマンド:

bash
nordvpn set technology openvpn
nordvpn set obfuscate on

プロトコルの技術的な違いについては「VPNプロトコル徹底比較」で詳しく解説している。

Kill SwitchとAllowlist

Kill Switch

Kill Switchは、VPN接続が切れたときにすべてのインターネットアクセスをブロックする安全装置だ。Linux版ではiptablesルールで実装されている。

bash
nordvpn set killswitch on

これを有効にすると、VPNが切断された瞬間にネットワーク通信が遮断される。意図しないIP漏洩を防ぐために、常時VPNを使う環境では有効にしておくべきだ。

無効にする場合:

bash
nordvpn set killswitch off

Allowlist(旧Whitelist)

Kill Switchを有効にしていても、特定のポートやサブネットだけはVPNを通さずに直接通信したい場合がある。開発中のローカルサーバー(localhost:3000)やSSH接続がその典型だ。

bash
nordvpn allowlist add port 22                    # SSH
nordvpn allowlist add port 3000 protocol TCP     # 開発サーバー
nordvpn allowlist add subnet 192.168.1.0/24      # LAN全体

設定の確認と削除:

bash
nordvpn settings                                 # allowlist含む全設定表示
nordvpn allowlist remove port 22                  # 個別削除
nordvpn allowlist remove all                      # 全削除

LAN内デバイスへのアクセス

Kill Switchを有効にすると、同じLAN内のプリンターやNASにもアクセスできなくなる。LAN内通信を許可するには:

bash
nordvpn set lan-discovery on

ポスト量子暗号(PQ)を有効にする

なぜPQ暗号化が必要か

現在のVPN暗号化は「いま」は安全だ。しかし、量子コンピュータが実用化されれば、現行の暗号アルゴリズム(RSA、楕円曲線暗号)は解読される可能性がある。

攻撃者が「今のうちに暗号化データを保存しておき、量子コンピュータが利用可能になったら解読する」という Harvest Now, Decrypt Later 攻撃が現実的な脅威になりつつある。

NordVPNのPQ暗号化は、NordLynxのハンドシェイクにML-KEM(旧CRYSTALS-Kyber)アルゴリズムを追加し、量子コンピュータに対する耐性を持たせる。Linuxは2024年9月に全プラットフォーム中最初にこの機能を実装した。

有効化

bash
nordvpn set pq on

これだけだ。次回の接続からPQ暗号化が適用される。

PQ暗号化はNordLynx(WireGuard)でのみ動作する。OpenVPNに設定していると以下のエラーが出る:

Post-quantum encryption is unavailable with OpenVPN.
Switch to NordLynx to activate post-quantum protection.

確認方法

PQ暗号化が有効かどうかはnordvpn settingsで確認できる。

bash
nordvpn settings

出力にPost-quantum VPN: enabledが含まれていればOKだ。

パフォーマンスへの影響はほぼない。ハンドシェイク時に追加の鍵交換が発生するが、接続後のスループットはPQなしと同等だ。特別な理由がなければ有効にしておくことを推奨する。

DockerコンテナでNordVPNを使う

開発環境やセルフホストサービスの通信をVPN経由にしたい場合、DockerコンテナでNordVPNを動かす方法がある。

公式Docker イメージをビルドする

NordVPNは公式のDocker構築手順を提供している。

基本的な流れ:

bash
docker build -t nordvpn-client .

コンテナの起動にはNET_ADMIN権限が必須だ:

bash
docker run -it \
  --cap-add=NET_ADMIN \
  --sysctl net.ipv6.conf.all.disable_ipv6=0 \
  --name vpn \
  nordvpn-client

コンテナ内でトークンログイン:

bash
nordvpn login --token YOUR_TOKEN
nordvpn connect

他のコンテナの通信をVPN経由にする

NordVPNコンテナをネットワークゲートウェイとして使い、他のコンテナの通信をすべてVPN経由にできる。

bash
docker run -it \
  --net=container:vpn \
  curlimages/curl curl ifconfig.me

--net=container:vpnで、VPNコンテナのネットワークスタックを共有する。この方法ならアプリケーション側にVPN設定は一切不要だ。

gluetunを使う方法

自分でDockerイメージをビルドするのが面倒なら、gluetunが便利だ。NordVPNを含む多数のVPNプロバイダに対応した軽量VPNクライアントコンテナで、Kill Switch内蔵、環境変数だけで設定できる。

yaml
services:
  gluetun:
    image: qmcgaw/gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn
      - VPN_TYPE=openvpn
      - OPENVPN_USER=your_service_username
      - OPENVPN_PASSWORD=your_service_password
      - SERVER_COUNTRIES=Japan
    ports:
      - "8080:8080"

  app:
    image: your-app
    network_mode: "service:gluetun"

NordVPNのサービス認証情報(メールアドレスではない)は手動設定ページから取得する。

まとめ

NordVPN Linuxクライアントの主要機能を振り返る:

  • インストール: ワンライナーで完了。ヘッドレス環境ではトークン認証
  • プロトコル: NordLynx(WireGuard)がデフォルト。制限ネットワークではOpenVPN TCPに切替
  • Kill Switch + Allowlist: 開発ポートやLANを除外しつつIP漏洩を防ぐ
  • PQ暗号化: nordvpn set pq on の1コマンドで量子耐性を追加。Linux限定で全プラットフォーム最速対応
  • Docker: コンテナのネットワークを丸ごとVPN経由にできる

LinuxでVPNを使うなら、GUIは必要ない。CLIのほうが自動化もスクリプト化もしやすい。

VPNプロトコルの技術的な違いが気になる方は「VPNプロトコル徹底比較:WireGuard・OpenVPN・IKEv2の仕組みと選び方」も参考にしてほしい。

関連記事:

公式リソース: