chrome.vpnProvider

説明

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

権限

vpnProvider

対象

Chrome 43 以降 ChromeOS のみ

コンセプトと使用方法

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

  • createConfig() を呼び出して VPN 構成を作成します。VPN 設定は、ChromeOS UI でユーザーに表示される永続的なエントリです。ユーザーはリストから VPN 設定を選択して接続したり接続を解除したりできます。

  • onPlatformMessageonPacketReceivedonConfigRemoved イベントにリスナーを追加します。

  • ユーザーが VPN 構成に接続すると、onPlatformMessage とメッセージ "connected" が届きます。"connected" メッセージと "disconnected" メッセージの間の期間は「VPN セッション」と呼ばれます。この間は、メッセージを受信した拡張機能が VPN セッションを所有していると通知されます。

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

  • setParameters() を呼び出して、接続のパラメータを設定します。

  • notifyConnectionStateChanged() を呼び出して、接続状態を "connected" として通知します。

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

  • ユーザーが VPN 構成との接続を解除すると、onPlatformMessage が呼び出され、"disconnected" というメッセージが返されます。

  • VPN 構成が不要になった場合は、destroyConfig() を呼び出して破棄できます。

Parameters

プロパティ

  • address

    文字列

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

  • broadcastAddress

    string(省略可)

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

  • dnsServers

    string[]

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

  • domainSearch

    string[] 省略可

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

  • exclusionList

    string[]

    CIDR 表記の IP ブロックリストにネットワーク トラフィックをトンネルから除外します。これにより、VPN サーバーとの間のトラフィックをバイパスできます。多くのルールが宛先と一致する場合は、一致する接頭辞が最も長いルールが優先されます。同じ CIDR ブロックに対応するエントリは重複として扱われます。照合されたリスト(exclusionList +clusionList)内の重複は除外されます。除外される正確な重複エントリは定義されません。

  • inclusionList

    string[]

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

  • mtu

    string(省略可)

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

  • 再接続

    string(省略可)

    Chrome 51 以降

    VPN 拡張機能に自動再接続を実装するかどうかを指定します。

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

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

PlatformMessage

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

Enum

"connection"
VPN 構成が接続されたことを示します。

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

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

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

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

"linkChanged"
デフォルトの物理ネットワーク接続が変更されたことを示します(例: wifi->mobile)。

"suspend"
OS が一時停止の準備ができているため、VPN の接続が切断されることを示します。拡張機能は、停止前にこのイベントを受信する保証はありません。

"resume"
OS が再開され、ユーザーが再びログインしたため、VPN の再接続を試みることを示します。

UIEvent

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

Enum

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

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

VpnConnectionState

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

Enum

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

"failure"
VPN 接続に失敗したことを示します。

Methods

createConfig()

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

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

パラメータ

  • name

    文字列

    VPN 構成の名前。

  • callback

    関数(省略可)

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

    (id: string)=>void

    • id

      文字列

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

戻り値

  • Promise<文字列>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

destroyConfig()

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

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

パラメータ

  • id

    文字列

    破棄する VPN 構成の ID。

  • callback

    関数(省略可)

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

    ()=>void

戻り値

  • Promise<void>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

notifyConnectionStateChanged()

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

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

パラメータ

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

  • callback

    関数(省略可)

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

    ()=>void

戻り値

  • Promise<void>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

sendPacket()

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

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

パラメータ

  • data

    ArrayBuffer

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

  • callback

    関数(省略可)

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

    ()=>void

戻り値

  • Promise<void>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

setParameters()

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

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

パラメータ

  • パラメータ

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

  • callback

    関数(省略可)

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

    ()=>void

戻り値

  • Promise<void>

    Chrome 96 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

イベント

onConfigCreated

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

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

パラメータ

  • callback

    機能

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

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

    • id

      文字列

    • name

      文字列

    • data

      オブジェクト

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

    • data

      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

    • event
    • id

      string(省略可)