説明
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 のネットワーク スタックへの仮想トンネルが作成されます。
sendPacket()
を呼び出すと、このトンネルを介して IP パケットを送信できます。ChromeOS デバイスから送信されるパケットは、onPacketReceived
イベント ハンドラで受信されます。ユーザーが VPN 設定から切断すると、
onPlatformMessage
がメッセージ"disconnected"
とともに呼び出されます。VPN 構成が不要になったら、
destroyConfig()
を呼び出して破棄できます。
型
Parameters
プロパティ
-
住所
文字列
VPN インターフェースの IP アドレス(CIDR 表記)。現在サポートされているモードは IPv4 のみです。
-
broadcastAddress
文字列(省略可)
VPN インターフェースのブロードキャスト アドレス。(デフォルト: IP アドレスとマスクから推定)
-
dnsServers
string[]
DNS サーバーの IP のリスト。
-
domainSearch
文字列 [] 省略可
検索ドメインのリスト。(デフォルト: 検索ドメインなし)
-
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 構成が接続されたことを示します。
"disconnect"
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()
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()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
)
拡張機能によって作成された VPN 構成を破棄します。
パラメータ
-
id
文字列
破棄する VPN 構成の ID。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
約束 <void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
)
VPN セッションの状態をプラットフォームに通知します。拡張機能が VPN セッションを所有している場合にのみ成功します。
パラメータ
-
state
VPN クライアントの VPN セッションの状態。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
約束 <void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
)
VPN セッション用に作成されたトンネルを介して IP パケットを送信します。拡張機能が VPN セッションを所有している場合にのみ成功します。
パラメータ
-
データ
ArrayBuffer
プラットフォームに送信される IP パケット。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
約束 <void>
Chrome 96 以降Promise は Manifest V3 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
callback?: function,
)
VPN セッションのパラメータを設定します。これは、プラットフォームから "connected"
を受信した直後に呼び出す必要があります。拡張機能が VPN セッションを所有している場合にのみ成功します。
パラメータ
-
パラメータ
VPN セッションのパラメータ。
-
callback
関数(省略可)
callback
パラメータは次のようになります。() => void
戻り値
-
約束 <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
文字列
-
データ
オブジェクト
-
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
-
id
文字列
-
メッセージ
-
エラー
文字列
-
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
拡張機能の UI イベントがあるとトリガーされます。UI イベントは、UI ダイアログをユーザーに表示する必要があることをアプリに示す、プラットフォームからのシグナルです。