説明
chrome.vpnProvider
API を使用して VPN クライアントを実装します。
権限
vpnProvider
可用性
コンセプトと使用方法
chrome.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
プロパティ
-
住所
string
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 の場合、
linkDown
、linkUp
、linkChanged
、suspend
、resume
のプラットフォーム メッセージを使用して、それぞれのイベントを通知します。false の場合、ネットワーク トポロジが変更された場合に VPN が強制的に切断され、ユーザーが手動で再接続する必要があります。(デフォルト: false)このプロパティは Chrome 51 で新しく導入されました。以前のバージョンでは例外が発生します。try/catch を使用すると、ブラウザのサポートに基づいて条件付きで機能を有効にできます。
PlatformMessage
プラットフォームはこの列挙型を使用して、VPN セッションのステータスをクライアントに通知します。
列挙型
"connection"
VPN 構成が接続されたことを示します。
"disconnected"
VPN 構成が切断されたことを示します。
"error"
VPN 接続でエラーが発生したことを示します(タイムアウトなど)。エラーの説明は、onPlatformMessage のエラー引数として提供されます。
"linkDown"
デフォルトの物理ネットワーク接続がダウンしていることを示します。
"linkUp"
デフォルトの物理ネットワーク接続が復帰したことを示します。
"linkChanged"
デフォルトの物理ネットワーク接続が変更されたことを示します(例: wifi->mobile)。
"suspend"
OS が一時停止の準備ができているため、VPN の接続が切断されることを示します。拡張機能は、停止前にこのイベントを受信する保証はありません。
"resume"
OS が再開され、ユーザーが再びログインしたため、VPN の再接続を試みることを示します。
UIEvent
列挙型は、onUIEvent
をトリガーしたイベントを示すためにプラットフォームで使用されます。
列挙型
"showAddDialog"
VPN クライアントが構成の追加ダイアログ ボックスをユーザーに表示するようリクエストします。
"showConfigureDialog"
VPN クライアントが構成の設定ダイアログ ボックスをユーザーに表示することをリクエストします。
VpnConnectionState
この列挙型は、VPN クライアントがプラットフォームに現在の状態を通知するために使用されます。これにより、ユーザーにわかりやすいメッセージを提供できます。
列挙型
"connected"
VPN 接続が成功したことを示します。
"failure"
VPN 接続に失敗したことを示します。
メソッド
createConfig()
chrome.vpnProvider.createConfig(
name: string,
callback?: function,
)
ユーザーの複数のログイン セッションにわたって持続する新しい VPN 構成を作成します。
パラメータ
-
name
string
VPN 構成の名前。
-
callback
関数(省略可)
callback
パラメータは次のようになります。(id: string) => void
-
id
string
作成された構成の一意の ID。失敗した場合は
undefined
。
-
戻り値
-
Promise<文字列>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
)
拡張機能によって作成された VPN 構成を破棄します。
パラメータ
-
id
string
破棄する VPN 構成の ID。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
)
VPN セッションの状態をプラットフォームに通知します。拡張機能が VPN セッションを所有している場合にのみ成功します。
パラメータ
-
state
VPN クライアントの VPN セッションの状態。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
)
VPN セッション用に作成されたトンネルを介して IP パケットを送信します。拡張機能が VPN セッションを所有している場合にのみ成功します。
パラメータ
-
データ
ArrayBuffer
プラットフォームに送信される IP パケット。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
setParameters()
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
string
-
name
string
-
データ
オブジェクト
-
onConfigRemoved
chrome.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
拡張機能によって作成された構成がプラットフォームによって削除されるとトリガーされます。
パラメータ
-
callback
機能
callback
パラメータは次のようになります。(id: string) => void
-
id
string
-
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
-
id
string
-
メッセージ
-
error
string
-
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
拡張機能の UI イベントがあるとトリガーされます。UI イベントは、UI ダイアログをユーザーに表示する必要があることをアプリに示すプラットフォームからのシグナルです。