chrome.vpnProvider

refresh date: 2026-09-25 robots: noindex

Описание

Используйте API chrome.vpnProvider, чтобы реализовать VPN-клиент.

Разрешения

vpnProvider

Доступность

Chrome 43 и более поздних версий Только для ChromeOS

Использование

Обычно vpnProvider используется следующим образом:

  • Создайте конфигурации VPN с помощью метода createConfig. Конфигурация VPN – это постоянная запись, которая показывается пользователю в интерфейсе ChromeOS. Пользователь может выбрать конфигурацию VPN из списка и подключиться к ней или отключиться от нее.

  • Добавьте прослушиватели для событий onPlatformMessage, onPacketReceived и onConfigRemoved.

  • Когда пользователь подключается к конфигурации VPN, onPlatformMessage будет получен с сообщением "connected". Период между сообщениями "connected" и "disconnected" называется сеансом VPN. В течение этого периода расширение, которое получает сообщение, считается владельцем сеанса VPN.

  • Установите подключение к VPN-серверу и запустите клиент VPN.

  • Задайте параметры подключения с помощью setParameters.

  • Уведомлять о статусе подключения "connected" с помощью notifyConnectionStateChanged.

  • Если все шаги выполнены без ошибок, создается виртуальный туннель к сетевому стеку ChromeOS. IP-пакеты можно отправлять через туннель с помощью sendPacket, а любые пакеты, исходящие от устройства с ChromeOS, будут приниматься с помощью события onPacketReceived.

  • Когда пользователь отключается от VPN, запускается onPlatformMessage с сообщением "disconnected".

  • Если конфигурация VPN больше не нужна, ее можно удалить с помощью метода destroyConfig.

Типы

Parameters

Свойства

  • Обращаться (к определенному вопросу)

    string

    IP-адрес интерфейса VPN в нотации CIDR. В настоящее время поддерживается только режим IPv4.

  • broadcastAddress

    строка необязательно

    Широковещательный адрес для интерфейса VPN. (по умолчанию определяется по IP-адресу и маске)

  • dnsServers

    string[]

    Список IP-адресов DNS-серверов.

  • domainSearch

    string[] необязательно

    Список доменов поиска. (по умолчанию домен для поиска не задан);

  • exclusionList

    string[]

    Исключить сетевой трафик для списка блоков IP-адресов в формате CIDR из туннеля. Это можно использовать для обхода трафика, идущего к VPN-серверу и от него. Если целевому адресу соответствует несколько правил, применяется правило с самым длинным подходящим префиксом. Записи, соответствующие одному и тому же блоку CIDR, считаются дубликатами. Такие дубликаты в объединенном списке (exclusionList + inclusionList) удаляются, и точная запись дубликата, которая будет удалена, не определена.

  • inclusionList

    string[]

    Включите сетевой трафик в список блоков IP-адресов в формате CIDR для туннеля. Этот параметр можно использовать для настройки раздельного туннелирования. По умолчанию трафик не направляется в туннель. Если добавить в этот список запись "0.0.0.0/0", весь пользовательский трафик будет перенаправляться в туннель. Если пункту назначения соответствует несколько правил, применяется правило с самым длинным совпадающим префиксом. Записи, соответствующие одному и тому же блоку CIDR, считаются дубликатами. Такие дубликаты в объединенном списке (exclusionList + inclusionList) удаляются, и точная запись дубликата, которая будет удалена, не определена.

  • mtu

    Строка (необязательно)

    Настройка MTU для интерфейса VPN. (по умолчанию: 1500 байт)

  • reconnect

    строка необязательно

    Chrome 51 и более поздние версии

    Реализует ли расширение VPN автоматическое повторное подключение.

    Если задано значение true, то для передачи сигналов о соответствующих событиях будут использоваться сообщения платформы linkDown, linkUp, linkChanged, suspend и resume. Если задано значение False, система принудительно отключит VPN при изменении топологии сети, и пользователю потребуется подключиться вручную. (по умолчанию: false)

    Это свойство появилось в Chrome 51. В более ранних версиях оно вызовет исключение. Чтобы условно включить функцию в зависимости от поддержки браузера, можно использовать try/catch.

PlatformMessage

Перечисление используется платформой для уведомления клиента о статусе сеанса VPN.

Перечисление

Подключено
Указывает, что конфигурация VPN подключена.

"disconnected"
Указывает, что конфигурация VPN отключена.

"error"
Указывает, что при VPN-подключении произошла ошибка, например истекло время ожидания. Описание ошибки передается в качестве аргумента error функции onPlatformMessage.

linkDown
Указывает, что физическое сетевое подключение по умолчанию не работает.

linkUp
Указывает, что физическое сетевое подключение по умолчанию восстановлено.

"linkChanged"
Указывает, что физическое сетевое подключение по умолчанию изменилось, например с Wi-Fi на мобильную сеть.

"suspend"
Указывает, что ОС готовится к приостановке, поэтому VPN-подключение должно быть разорвано. Расширение может не получить это событие до приостановки.

"resume"
Указывает, что ОС возобновила работу и пользователь снова вошел в систему, поэтому 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

    string

    Название конфигурации VPN.

  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    (id: string) => void

    • id

      string

      Уникальный идентификатор созданной конфигурации или undefined в случае ошибки.

Возвраты

  • Promise<string>

    Chrome 96 и более поздних версий.

    Возвращает объект Promise, который распознается, когда конфигурация создана, или отклоняется, если произошла ошибка.

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

destroyConfig()

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

Удаляет конфигурацию VPN, созданную расширением.

Параметры

  • id

    string

    Идентификатор конфигурации VPN, которую нужно удалить.

  • обратный вызов

    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-клиента.

  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Promise<void>

    Chrome 96 и более поздних версий.

    Возвращает объект Promise, который распознается, когда уведомление будет отправлено, или отклоняется в случае ошибки.

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

sendPacket()

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

Отправляет пакет IP через туннель, созданный для сеанса VPN. Это возможно, только если сеанс VPN принадлежит расширению.

Параметры

  • делал.

    ArrayBuffer

    IP-пакет, который будет отправлен на платформу.

  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Promise<void>

    Chrome 96 и более поздние версии

    Возвращает объект Promise, который распознается, когда пакет отправлен, или отклоняется, если произошла ошибка.

    Обещания поддерживаются только в Manifest V3 и более поздних версиях. На других платформах необходимо использовать обратные вызовы.

setParameters()

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

Задает параметры для сеанса VPN. Этот метод должен вызываться сразу после получения "connected" от платформы. Это можно сделать, только если сеанс VPN принадлежит расширению.

Параметры

  • Параметры

    Параметры сеанса VPN.

  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Promise<void>

    Chrome 96 и более поздние версии

    Возвращает объект Promise, который распознается, когда заданы параметры, и отклоняется в случае ошибки.

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

События

onConfigCreated

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

Срабатывает, когда платформа создает конфигурацию для расширения.

Параметры

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

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

    • id

      string

    • name

      string

    • делал.

      Объект

onConfigRemoved

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

Срабатывает, когда платформа удаляет конфигурацию, созданную расширением.

Параметры

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

    (id: string) => void

    • id

      string

onPacketReceived

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

Срабатывает, когда через туннель для сеанса VPN, принадлежащего расширению, получен IP-пакет.

Параметры

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

    (data: ArrayBuffer) => void

    • делал.

      ArrayBuffer

onPlatformMessage

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

Активируется, когда от платформы поступает сообщение для конфигурации VPN, принадлежащей расширению.

Параметры

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

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

onUIEvent

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

Срабатывает при событии интерфейса расширения. События интерфейса – это сигналы от платформы, которые указывают приложению, что пользователю нужно показать диалоговое окно.

Параметры

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

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

    • event
    • id

      Строка (необязательно)