Поделиться через


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

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

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

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

Топология

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

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

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

Необходимые компоненты

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

Если у вас еще нет подписки 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. В разделе Выбор варианта размещения выберите Функции Премиум>Выбрать, чтобы создать приложение в Премиум-плане. В этом бессерверном варианте размещения вы платите только за время выполнения функций. Дополнительные сведения о различных планах размещения см. в разделе "Обзор планов".

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

    Параметр Предлагаемое значение Описание
    Подписка Ваша подписка Подписка, в которой создается приложение-функция.
    Группа ресурсов Группа компаний myResourceGroup Имя для новой группы ресурсов, в которой создается приложение-функция.
    Имя приложения-функции Глобально уникальное имя Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z (без учета регистра), 0-9 и -.
    Вы хотите развернуть код или образ контейнера? Код Параметр для публикации файлов кода или контейнера Docker.
    Операционная система Предпочтительная ОС Выберите Linux или Windows.
    Стек среды выполнения Предпочитаемый язык Выберите среду выполнения, которая поддерживает нужный функциональный язык программирования.
    Версия Поддерживаемая версия языка Выберите поддерживаемую версию языка программирования функций.
    Регион Предпочтительный регион Выберите ближайший регион или регион рядом с другими службами, к которому получают доступ ваши функции.
  5. Под сведениями о среде для плана Windows или плана Linux выберите Создать новый, назовите свой план службы приложений и выберите тарифный план. Тарифный план по умолчанию — EP1, где EP соответствует эластичному премиуму. Дополнительные сведения см. в списке номеров SKU уровня "Премиум". При запуске функций JavaScript для плана "Премиум" нужно выбрать экземпляр с меньшим количеством виртуальных ЦП. Дополнительные сведения см. в разделе Выбор планов "Премиум" для конфигурации с одним виртуальным ЦП.

  6. Если вы не хотите включить избыточность зоны, сохраните значение по умолчанию отключено.

  7. Нажмите кнопку "Далее" — хранилище. На странице хранилище создайте учетную запись хранения по умолчанию, которая требуется для вашего приложения-функции. Имена учетных записей хранения должны содержать от 3 до 24 символов и содержать только цифры и строчные буквы. Можно также использовать существующую учетную запись при условии, что она соответствует требованиям учетной записи хранилища.

  8. Если вы не включаете интеграцию виртуальной сети, нажмите кнопку "Далее: мониторинг ", чтобы пропустить вкладку "Сеть ". На странице мониторинга введите следующие параметры:

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

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

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

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

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

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

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

  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-адреса.

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

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

  3. Выберите "Выполнить", чтобы выполнить функцию, а затем переключитесь на выходные данные и убедитесь, что IP-адрес в теле ответа HTTP является одним из значений исходящих IP-адресов, которые вы просматривали ранее.

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

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

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

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

    Параметр Предлагаемое значение
    IP-версия IPv4
    Номер SKU Стандарт
    Уровень Региональный
    Имя 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. Выберите Удалить группу ресурсов и следуйте инструкциям.

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

Следующие шаги