Учебник. Управление исходящим IP-адресом Функций Azure с помощью шлюза NAT виртуальной сети Azure

Преобразование сетевых адресов виртуальной сети (NAT) упрощает возможность исходящего интернет-подключения для виртуальных сетей. При настройке NAT в подсети все исходящие подключения используют указанные статические общедоступные IP-адреса. NAT может быть полезен для приложений, которым требуется использовать стороннюю службу, которая использует список разрешенных IP-адресов в качестве меры безопасности. Дополнительные сведения см. в статье Что такое шлюз Azure NAT?

В этом руководстве показано, как использовать шлюзы NAT для маршрутизации исходящего трафика из функции, активировав http. Эта функция позволяет проверить свой исходящий IP-адрес. В рамках учебника вы выполните следующие действия:

  • Создание виртуальной сети
  • Создание приложения-функции в плане "Премиум".
  • Создание общедоступного IP-адреса
  • Создание шлюза NAT.
  • Настройка приложения-функции для маршрутизации исходящего трафика через шлюз NAT.

Топология

На следующей схеме показана архитектура создаваемого решения.

Интерфейс для интеграции шлюза NAT

Функции, выполняемые в плане "Премиум", имеют те же возможности размещения, что и веб-приложения в Службе приложений Azure, включая функцию интеграции с виртуальной сетью. Дополнительные сведения об интеграции виртуальной сети, включая устранение неполадок и расширенную конфигурацию, см. в статье Интеграция приложения с виртуальной сетью Azure.

Предварительные требования

Для работы с этим руководством важно понимать принципы назначения IP-адресов и определения подсети. Вы можете начать с этой статьи, в которой изложены основы назначения адресов и определения подсети. В Интернете доступно множество других статей и видеоматериалов по этой теме.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Если вы выполнили инструкции из учебника по интеграции Функций с виртуальной сетью Azure, можно перейти к разделу Создание функции триггера HTTP.

Создание виртуальной сети

  1. В меню портала Azure выберите Создать ресурс. В Azure Marketplace выберите Сети>Виртуальная сеть.

  2. В окне Создание виртуальной сети введите или выберите параметры, указанные в следующей таблице:

    Параметр Значение
    Подписка Выберите свою подписку.
    Группа ресурсов Выберите Создать, а затем введите myResourceGroup и нажмите кнопку ОК.
    Имя Введите myResourceGroup-vnet
    Расположение Выберите Восточная часть США.
  3. Выберите Далее: IP-адреса и для параметра Диапазон IPv4-адресов введите 10.10.0.0/16.

  4. Выберите Добавление подсети, а затем введите Tutorial-Net для имени подсети и 10.10.1.0/24 для параметра Диапазон адресов подсети.

    Вкладка

  5. Выберите Добавить, а затем выберите Проверить и создать. Оставьте без изменений значения остальных параметров и выберите Создать.

  6. В разделе Создание виртуальной сети нажмите Создать.

Затем создайте приложение-функцию в плане "Премиум". Этот план обеспечивает бессерверное масштабирование при поддержке интеграции с виртуальной сетью.

Создание приложения-функции в плане "Премиум"

В этом руководстве показано, как создать приложение-функцию в плане ценовой категории "Премиум". Аналогичные функциональные возможности доступны при использовании выделенного плана (службы приложений).

Примечание

Для оптимальной работы с этим учебником выберите .NET в качестве стека времени выполнения и Windows в качестве операционной системы. Кроме того, создайте приложение-функцию в том же регионе, что и виртуальная сеть.

  1. На домашней странице или в меню портала Azure выберите Создать ресурс.

  2. На странице Создать щелкните Вычислительные ресурсы>Приложение-функция.

  3. На странице Основные сведения используйте параметры приложения-функции как указано в таблице ниже:

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Подписка, в которой создано приложение-функция.
    Группа ресурсов myResourceGroup Имя новой группы ресурсов, в которой создается приложение-функция.
    Имя приложения-функции Глобально уникальное имя Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z (без учета регистра), 0-9и -.
    Опубликовать Код Параметр для публикации файлов кода или контейнера Docker.
    Стек среды выполнения Предпочитаемый язык Выберите среду выполнения, которая поддерживает нужный функциональный язык программирования. В настоящее время редактирование на портале не поддерживается для разработки на Python.
    Регион Предпочтительный регион Выберите ближайший регион или регион рядом с другими службами, к которому получают доступ ваши функции.
  4. По завершении выберите Next: Размещение. Введите следующие параметры на странице Размещение:

    Параметр Рекомендуемое значение Описание
    Учетная запись хранения Глобально уникальное имя Создайте учетную запись хранения для использования приложением-функцией. Имя учетной записи хранения должно содержать от 3 до 24 символов и состоять только из цифр и строчных букв. Можно также использовать существующую учетную запись при условии, что она соответствует требованиям учетной записи хранилища.
    Операционная система Предпочтительная операционная система Операционная система предварительно выбирается с учетом выбранного стека среды выполнения, но при необходимости ее можно изменить. Python поддерживается только в Linux. Редактирование на портале поддерживается только в Windows.
    План Premium План размещения, который определяет выделение ресурсов в приложении-функции. Выберите Премиум. По умолчанию создается новый план службы приложений. По умолчанию для параметра Номер SKU и размер задано значение EP1, где EP означает Elastic Premium (гибкий план "Премиум"). Дополнительные сведения см. в списке номеров SKU уровня "Премиум".
    При запуске функций JavaScript для плана "Премиум" нужно выбрать экземпляр с меньшим количеством виртуальных ЦП. Дополнительные сведения см. в разделе Выбор планов "Премиум" для конфигурации с одним виртуальным ЦП.
  5. По завершении выберите Next: Мониторинг. Введите следующие параметры на странице Мониторинг:

    Параметр Рекомендуемое значение Описание
    Application Insights По умолчанию Создает ресурс Application Insights с таким же именем приложения в ближайшем поддерживаемом регионе. Развернув этот параметр, можно задать новое имя ресурса или выбрать другое расположение в географическом регионе Azure, где будут храниться данные.
  6. Выберите Просмотр и создание , чтобы просмотреть выбранные параметры конфигурации приложения.

  7. Проверьте параметры на странице Просмотр и создание, после чего выберите Создать для подготовки и развертывания приложения-функции.

  8. Выберите значок Уведомления в правом верхнем углу портала. Вы должны увидеть сообщение Развертывание выполнено.

  9. Выберите Перейти к ресурсу для просмотра нового приложения-функции. Можно также установить флажок Закрепить на панели мониторинга. Это упростит возвращение к этому ресурсу приложения-функции из панели мониторинга.

    Развертывание уведомления

Подключение приложения-функции к виртуальной сети

Теперь можно подключить приложение-функцию к виртуальной сети.

  1. В приложении-функции в меню слева выберите Сетевые подключения, а затем в разделе Интеграция виртуальной сети выберите Щелкните здесь для настройки.

    Выбор сети в приложении-функции

  2. На странице Интеграция виртуальной сети выберите Добавить виртуальную сеть.

  3. В разделе Состояние компонента сети задайте параметры, указанные в таблице под изображением.

    Определение виртуальной сети приложения-функции

    Параметр Рекомендуемое значение Описание
    Виртуальная сеть MyResourceGroup-vnet Это созданная ранее виртуальная сеть.
    Подсеть Создание подсети Создайте подсеть в виртуальной сети для использования приложением-функцией. Интеграцию виртуальной сети необходимо настроить для использования пустой подсети.
    Имя подсети Function-Net Имя новой подсети.
    Блок адресов виртуальной сети 10.10.0.0/16 Необходимо определить лишь один блок адресов.
    блок адресов подсети; 10.10.2.0/24 Размер подсети позволяет ограничивать общее число экземпляров, на которые может масштабироваться приложение-функция плана "Премиум". В этом примере используется подсеть /24 с 254 доступными адресами узлов. Эта подсеть не подготовлена, но ее легко вычислить.
  4. Щелкните OK, чтобы добавить подсеть. Закройте страницы Интеграция виртуальной сети и Состояние компонентов сети, чтобы вернуться на страницу приложения-функции.

Теперь приложение-функция может получить доступ к виртуальной сети. Если подключение включено, vnetrouteallenabled для параметра сайта устанавливается значение 1. Этот параметр сайта или устаревший WEBSITE_VNET_ROUTE_ALL параметр приложения должен иметь значение 1.

Затем добавьте функцию, активируемую по протоколу HTTP, в приложение-функцию.

Создание функции для триггеров HTTP

  1. В меню слева в окне Функции выберите Функции, а затем в верхнем меню выберите Добавить.

  2. В окне Новая функция выберите элемент Триггер HTTP, а для пункта Новая функция оставьте имя по умолчанию или введите новое имя.

  3. В разделе Code + Test (Код + тестирование) замените созданный шаблоном код C# (CSX) следующим кодом:

    #r "Newtonsoft.Json"
    
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        var client = new HttpClient();
        var response = await client.GetAsync(@"https://ifconfig.me");
        var responseMessage = await response.Content.ReadAsStringAsync();
    
        return new OkObjectResult(responseMessage);
    }
    

    Этот код вызывает внешний веб-сайт, который возвращает IP-адрес вызывающего объекта, который в данном случае является этой функцией. Этот метод позволяет легко определить исходящий IP-адрес, используемый приложением-функцией.

Теперь все готово для запуска функции и проверки текущих исходящих IP-адресов.

Проверка текущих исходящих IP-адресов

Теперь можно запустить функцию. Но сначала перейдите на портал и посмотрите, какие исходящие IP-адреса используются приложением-функцией.

  1. В приложении-функции выберите Свойства и просмотрите поле Исходящие IP-адреса.

    Просмотр IP-адресов для исходящего трафика приложения-функции

  2. Теперь вернитесь к функции триггера HTTP, выберите Code + Test (Код + тестирование), а затем — Test/Run (Тестировать/выполнить).

    Тестирование функции

  3. Щелкните Выполнить, чтобы выполнить функцию, а затем переключитесь на вкладку Выходные данные.

    Выходные данные функции тестирования

  4. Убедитесь, что IP-адрес в тексте ответа HTTP является одним из значений исходящих IP-адресов, которые вы просматривали ранее.

Теперь можно создать общедоступный IP-адрес и использовать шлюз NAT для изменения этого исходящего IP-адреса.

Создание общедоступного IP-адреса

  1. В группе ресурсов щелкните Добавить, перейдите в раздел Общедоступный IP-адрес в Azure Marketplace и нажмите кнопку Создать. Затем используйте настройки из таблицы под изображением.

    Создание общедоступного IP-адреса

    Параметр Рекомендуемое значение
    Версия IP-адреса IPv4
    SKU Standard
    Уровень Региональный
    имя; Outbound-IP
    Подписка Убедитесь, что отображается ваша подписка
    Группа ресурсов myResourceGroup (или имя, назначенное группе ресурсов)
    Расположение Восточная часть США (или расположение, назначенное другим ресурсам)
    Availability Zone (Зона доступности) Нет зоны
  2. Нажмите кнопку Создать, чтобы начать развертывание.

  3. После завершения развертывания перейдите к созданному ресурсу общедоступного IP-адреса и просмотрите IP-адрес на вкладке Обзор.

    Просмотр общедоступного IP-адреса

Создание шлюза NAT

Теперь давайте создадим шлюз NAT. При работе с предыдущим руководством по работе с виртуальными сетями было предложено имя подсети Function-Net, аMyResourceGroup-vnet — в качестве имени виртуальной сети в этом руководстве.

  1. В группе ресурсов щелкните Добавить, перейдите к разделу шлюз NAT в Azure Marketplace и нажмите кнопку Создать. Затем используйте параметры из таблицы под изображением, чтобы заполнить вкладку Основные.

    Создание шлюза NAT

    Параметр Рекомендуемое значение
    Подписка Ваша подписка
    Группа ресурсов myResourceGroup (или имя, назначенное группе ресурсов)
    Имя шлюза NAT myNATgateway
    Регион Восточная часть США (или расположение, назначенное другим ресурсам)
    Availability Zone (Зона доступности) Нет
  2. Выберите Далее: Исходящий IP-адрес внизу страницы. В поле Общедоступные IP-адреса выберите ранее созданный общедоступный IP-адрес. Не выбирайте префиксы общедоступных IP-адресов.

  3. Выберите Далее: Подсеть. Выберите ресурс myResourceGroup-vnet в поле Виртуальная сеть и подсеть Function-NET.

    Выбор подсети

  4. Выберите Просмотр и создание, а затем нажмите кнопку Создать для завершения развертывания.

После завершения развертывания шлюз NAT будет готов маршрутизировать трафик из подсети приложения-функции в Интернет.

Проверка новых исходящих IP-адресов

Повторите действия, описанные выше, чтобы снова запустить функцию. Теперь в выходных данных функции отобразится исходящий IP-адрес, настроенный в NAT.

Очистка ресурсов

Выполняя описанные в этом учебнике действия, вы создавали ресурсы. За них вам могут быть выставлены счета в зависимости от состояния учетной записи и цен на службы. Чтобы избежать лишних затрат, удалите ресурсы, если они больше не нужны.

  1. На портале Azure перейдите на страницу Resource group (Группа ресурсов).

    Чтобы перейти на эту страницу со страницы приложения-функции, перейдите на вкладку Обзор,и щелкните ссылку в разделе Группа ресурсов.

    Снимок экрана: выбор группы ресурсов, которую требуется удалить со страницы приложения-функции.

    Чтобы перейти на эту страницу с панели управления, выберите Resource groups (Группы ресурсов), а затем выберите группу ресурсов, которая использовалась в этой статье.

  2. На странице Группа ресурсов просмотрите список включенных ресурсов и убедитесь, что именно их нужно удалить.

  3. Выберите Удалить группу ресурсов и следуйте инструкциям.

    Удаление может занять несколько минут. После этого на несколько секунд появится уведомление. Кроме того, можно выбрать значок колокольчика в верхней части страницы, чтобы просмотреть уведомление.

Дальнейшие действия