chrome.vpnProvider

更新日: 2026-09-25 robots: noindex

説明

chrome.vpnProvider API を使用して VPN クライアントを実装します。

権限

vpnProvider

対象

Chrome 43 以降 ChromeOS のみ

用途

vpnProvider の一般的な使用方法は次のとおりです。

  • createConfig メソッドを使用して VPN 構成を作成します。VPN 構成は、ネイティブの ChromeOS UI でユーザーに表示される永続的なエントリです。ユーザーは、リストから VPN 構成を選択して、接続または切断できます。

  • イベント onPlatformMessage、onPacketReceived、onConfigRemoved にリスナーを追加します。

  • ユーザーが VPN 構成に接続すると、onPlatformMessage がメッセージ "connected" とともに受信されます。メッセージ "connected" と "disconnected" の間の期間を VPN セッションと呼びます。この期間中、メッセージを受信する拡張機能が VPN セッションを所有していると見なされます。

  • VPN サーバーへの接続を開始し、VPN クライアントを起動します。

  • setParameters を使用して、接続のパラメータを設定します。

  • notifyConnectionStateChanged を使用して、接続状態を "connected" として通知します。

  • 上記の手順がエラーなしで完了すると、ChromeOS のネットワーク スタックへの仮想トンネルが作成されます。IP パケットは sendPacket を使用してトンネル経由で送信でき、ChromeOS デバイスから送信されたパケットはイベント onPacketReceived を使用して受信されます。

  • ユーザーが VPN 構成から切断すると、onPlatformMessage がメッセージ "disconnected" とともに呼び出されます。

  • VPN 構成が不要になった場合は、destroyConfig を使用して破棄できます。

型

Parameters

プロパティ

  • 住所

    文字列

    VPN インターフェースの IP アドレス(CIDR 表記)。現在サポートされているモードは IPv4 のみです。

  • broadcastAddress

    文字列 省略可

    VPN インターフェースのブロードキャスト アドレス。(デフォルト: IP アドレスとマスクから推定)

  • dnsServers

    string[]

    DNS サーバーの IP のリスト。

  • domainSearch

    string[] 省略可

    検索ドメインのリスト。(デフォルト: 検索ドメインなし)

  • exclusionList

    string[]

    CIDR 表記の IP ブロックのリストへのネットワーク トラフィックをトンネルから除外します。これは、VPN サーバーとの間のトラフィックをバイパスするために使用できます。複数のルールが宛先と一致する場合、一致するプレフィックスが最も長いルールが優先されます。同じ CIDR ブロックに対応するエントリは重複として扱われます。照合された(exclusionList + inclusionList)リスト内の重複は排除されます。排除される正確な重複エントリは未定義です。

  • inclusionList

    string[]

    CIDR 表記の IP ブロックのリストへのネットワーク トラフィックをトンネルに含めます。このパラメータは、スプリット トンネルの設定に使用できます。デフォルトでは、トラフィックはトンネルに転送されません。このリストにエントリ「0.0.0.0/0」を追加すると、すべてのユーザー トラフィックがトンネルにリダイレクトされます。複数のルールが宛先と一致する場合、一致するプレフィックスが最も長いルールが優先されます。同じ CIDR ブロックに対応するエントリは重複として扱われます。照合された(exclusionList + inclusionList)リスト内の重複は排除されます。排除される正確な重複エントリは未定義です。

  • mtu

    文字列 省略可

    VPN インターフェースの MTU 設定。(デフォルト: 1,500 バイト)

  • 再接続

    文字列 省略可

    Chrome 51 以降

    VPN 拡張機能が自動再接続を実装するかどうか。

    true の場合、linkDown、linkUp、linkChanged、suspend、resume のプラットフォーム メッセージが、それぞれのイベントを通知するために使用されます。false の場合、ネットワーク トポロジが変更されると、システムは VPN を強制的に切断します。ユーザーは手動で再接続する必要があります。(デフォルト: false)

    このプロパティは Chrome 51 で新たに追加されたもので、それより前のバージョンでは例外が発生します。try/catch を使用すると、ブラウザのサポート状況に基づいて、この機能を条件付きで有効にできます。

PlatformMessage

この列挙型は、プラットフォームが VPN セッションのステータスをクライアントに通知するために使用します。

列挙型

"connected"
VPN 設定が接続されていることを示します。

"disconnected"
VPN 設定が切断されたことを示します。

"error"
VPN 接続でエラー(タイムアウトなど)が発生したことを示します。エラーの説明は、onPlatformMessage の error 引数として渡されます。

"linkDown"
デフォルトの物理ネットワーク接続がダウンしていることを示します。

"linkUp"
デフォルトの物理ネットワーク接続が復旧したことを示します。

"linkChanged"
デフォルトの物理ネットワーク接続が変更されたことを示します(例: Wi-Fi からモバイル)。

"suspend"
OS が一時停止の準備をしているため、VPN が接続を解除する必要があることを示します。拡張機能が、一時停止前にこのイベントを受信するとは限りません。

"resume"
OS が再開し、ユーザーが再度ログインしたため、VPN が再接続を試みる必要があることを示します。

UIEvent

この列挙型は、onUIEvent をトリガーしたイベントを示すためにプラットフォームで使用されます。

列挙型

"showAddDialog"
VPN クライアントがユーザーに設定追加ダイアログ ボックスを表示するようリクエストします。

"showConfigureDialog"
VPN クライアントがユーザーに構成設定ダイアログ ボックスを表示するようリクエストします。

VpnConnectionState

この列挙型は、VPN クライアントが現在の状態をプラットフォームに通知するために使用します。これにより、ユーザーに有意義なメッセージを提供できます。

列挙型

"connected"
VPN 接続が成功したことを示します。

"failure"
VPN 接続が失敗したことを指定します。

メソッド

createConfig()

Promise
chrome.vpnProvider.createConfig(
  name: string,
  callback?: function,
)
: Promise<string>

ユーザーの複数のログイン セッションにわたって保持される新しい VPN 構成を作成します。

パラメータ

  • name

    文字列

    VPN 構成の名前。

  • callback

    function 省略可

    callback パラメータは次のようになります。

    (id: string) => void

    • id

      文字列

      作成された構成の一意の ID。失敗した場合は undefined。

戻り値

  • Promise<string>

    Chrome 96 以降

    構成が作成されたときに解決される Promise を返します。エラーが発生した場合は拒否されます。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

destroyConfig()

Promise
chrome.vpnProvider.destroyConfig(
  id: string,
  callback?: function,
)
: Promise<void>

拡張機能によって作成された VPN 構成を破棄します。

パラメータ

  • id

    文字列

    破棄する VPN 構成の ID。

  • callback

    function 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 96 以降

    構成が破棄されたときに解決される Promise を返します。エラーが発生した場合は拒否されます。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

notifyConnectionStateChanged()

Promise
chrome.vpnProvider.notifyConnectionStateChanged(
  state: VpnConnectionState,
  callback?: function,
)
: Promise<void>

VPN セッションの状態をプラットフォームに通知します。これは、VPN セッションが拡張機能によって所有されている場合にのみ成功します。

パラメータ

  • VPN クライアントの VPN セッションの状態。

  • callback

    function 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 96 以降

    通知が完了したときに解決される Promise を返します。エラーが発生した場合は拒否されます。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

sendPacket()

Promise
chrome.vpnProvider.sendPacket(
  data: ArrayBuffer,
  callback?: function,
)
: Promise<void>

VPN セッション用に作成されたトンネルを介して IP パケットを送信します。これは、VPN セッションが拡張機能によって所有されている場合にのみ成功します。

パラメータ

  • データ

    ArrayBuffer

    プラットフォームに送信される IP パケット。

  • callback

    function 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 96 以降

    パケットが送信されたときに解決される Promise を返します。エラーが発生した場合は拒否されます。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

setParameters()

Promise
chrome.vpnProvider.setParameters(
  parameters: Parameters,
  callback?: function,
)
: Promise<void>

VPN セッションのパラメータを設定します。これは、プラットフォームから "connected" を受信した直後に呼び出す必要があります。これは、VPN セッションが拡張機能によって所有されている場合にのみ成功します。

パラメータ

  • パラメータ

    VPN セッションのパラメータ。

  • callback

    function 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 96 以降

    パラメータが設定されたときに解決される Promise を返します。エラーが発生した場合は拒否されます。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

イベント

onConfigCreated

chrome.vpnProvider.onConfigCreated.addListener(
  callback: function,
)

プラットフォームによって拡張機能の構成が作成されたときにトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (id: string, name: string, data: object) => void

    • id

      文字列

    • name

      文字列

    • データ

      オブジェクト

onConfigRemoved

chrome.vpnProvider.onConfigRemoved.addListener(
  callback: function,
)

拡張機能によって作成された構成がプラットフォームによって削除されたときにトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (id: string) => void

    • id

      文字列

onPacketReceived

chrome.vpnProvider.onPacketReceived.addListener(
  callback: function,
)

拡張機能が所有する VPN セッションのトンネルを介して IP パケットが受信されたときにトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (data: ArrayBuffer) => void

    • データ

      ArrayBuffer

onPlatformMessage

chrome.vpnProvider.onPlatformMessage.addListener(
  callback: function,
)

拡張機能が所有する VPN 構成のメッセージをプラットフォームから受信したときにトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (id: string, message: PlatformMessage, error: string) => void

onUIEvent

chrome.vpnProvider.onUIEvent.addListener(
  callback: function,
)

拡張機能の UI イベントが発生したときにトリガーされます。UI イベントは、UI ダイアログをユーザーに表示する必要があることをアプリに示す、プラットフォームからのシグナルです。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (event: UIEvent, id?: string) => void

    • イベント
    • id

      文字列 省略可