Настройка принудительного туннелирования с помощью классической модели развертывания

Оно позволяет перенаправлять или "принудительно направлять" весь Интернет-трафик обратно в локальное расположение через VPN типа "сеть — сеть" для проверки и аудита. Это критически важное требование безопасности, имеющееся в большинстве корпоративных ИТ-политик. Без принудительного туннелирования Интернет-трафик из виртуальных машин в Azure будет всегда поступать из инфраструктуры сети Azure непосредственно в Интернет, без возможности его проверки или аудита. Неавторизованный доступ в Интернет может привести к раскрытию информации или другим нарушениям безопасности.

Действия, описанные в этой статье, относятся к классической (устаревшей) модели развертывания и не применяются к текущей модели развертывания, Resource Manager. Если вы не хотите работать с классической моделью развертывания, мы рекомендуем использовать Resource Manager версию этой статьи.

Примечание

Эта статья написана для классической (устаревшей) модели развертывания. Рекомендуется использовать последнюю модель развертывания Azure. Модель развертывания Resource Manager является последней моделью развертывания и предлагает больше возможностей и совместимости функций, чем классическая модель развертывания. Чтобы понять разницу между этими двумя моделями развертывания, см. раздел Основные сведения о моделях развертывания и состоянии ресурсов.

Если вы хотите использовать другую версию этой статьи, используйте оглавление на левой панели.

Требования и рекомендации

В Azure принудительное туннелирование настраивается с помощью определяемых пользователем маршрутов виртуальной сети (UDR). Перенаправление трафика на локальный сайт выполняется с помощью маршрута по умолчанию к VPN-шлюзу Azure. В разделе ниже перечислены текущие ограничения таблицы маршрутизации и маршрутов для виртуальной сети Azure.

  • Каждая подсеть виртуальной сети имеет встроенные системные таблицы маршрутизации. Системная таблица маршрутизации содержит три указанные ниже группы маршрутов.

    • Маршруты локальной виртуальной сети. Они ведут непосредственно к виртуальным машинам назначения в той же виртуальной сети.
    • Локальные маршруты. Ведут к VPN-шлюзу Azure.
    • Маршрут по умолчанию. Ведет напрямую в Интернет. Пакеты, предназначенные для частных IP-адресов, не входящих в предыдущие два маршрута, будут удалены.
  • Задав пользовательские маршруты, вы сможете создать таблицу маршрутизации для добавления маршрута по умолчанию, а затем сопоставить таблицу маршрутизации с подсетями вашей виртуальной сети для включения принудительного туннелирования в этих подсетях.

  • Из числа локальных межорганизационных сайтов, подключенных к виртуальной сети, необходимо выбрать "сайт по умолчанию".

  • Принудительное туннелирование должно быть сопоставлено с виртуальной сетью, в которой есть VPN-шлюз с динамической маршрутизацией (а не статический шлюз).

  • Принудительное туннелирование ExpressRoute не настраивается с помощью этого механизма, а включается путем объявления маршрута по умолчанию через сеансы пиринга ExpressRoute BGP. Дополнительные сведения см. в статье Что такое ExpressRoute?

Общие сведения о настройке

В следующем примере подсеть frontend не принудительно туннелируется. Рабочие нагрузки в интерфейсной подсети могут продолжать принимать запросы клиентов непосредственно из Интернета и отвечать на них. Для подсетей среднего уровня и внутренних подсетей применяется принудительное туннелирование. Все исходящие подключения из этих двух подсетей к Интернету принудительно или перенаправляются обратно на локальный сайт через один из vpn-туннелей S2S.

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

Схема архитектуры принудительного туннелирования.

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

Перед началом настройки убедитесь, что у вас есть следующее:

Настройка принудительного туннелирования

Следующая процедура поможет указать принудительное туннелирование для виртуальной сети. Рекомендации по настройке относятся к файлу конфигурации виртуальной сети. В этом примере виртуальная сеть MultiTier-VNet имеет три подсети: Frontend, Midtier и Backend, с четырьмя меж локальными подключениями: DefaultSiteHQ и тремя ветвями.

<VirtualNetworkSite name="MultiTier-VNet" Location="North Europe">
     <AddressSpace>
      <AddressPrefix>10.1.0.0/16</AddressPrefix>
        </AddressSpace>
        <Subnets>
          <Subnet name="Frontend">
            <AddressPrefix>10.1.0.0/24</AddressPrefix>
          </Subnet>
          <Subnet name="Midtier">
            <AddressPrefix>10.1.1.0/24</AddressPrefix>
          </Subnet>
          <Subnet name="Backend">
            <AddressPrefix>10.1.2.0/23</AddressPrefix>
          </Subnet>
          <Subnet name="GatewaySubnet">
            <AddressPrefix>10.1.200.0/28</AddressPrefix>
          </Subnet>
        </Subnets>
        <Gateway>
          <ConnectionsToLocalNetwork>
            <LocalNetworkSiteRef name="DefaultSiteHQ">
              <Connection type="IPsec" />
            </LocalNetworkSiteRef>
            <LocalNetworkSiteRef name="Branch1">
              <Connection type="IPsec" />
            </LocalNetworkSiteRef>
            <LocalNetworkSiteRef name="Branch2">
              <Connection type="IPsec" />
            </LocalNetworkSiteRef>
            <LocalNetworkSiteRef name="Branch3">
              <Connection type="IPsec" />
            </LocalNetworkSiteRef>
        </Gateway>
      </VirtualNetworkSite>
    </VirtualNetworkSite>

Следующие действия устанавливают DefaultSiteHQ в качестве подключения к сайту по умолчанию для принудительного туннелирования и настраивают подсети Midtier и Backend для использования принудительного туннелирования.

  1. Откройте консоль PowerShell с повышенными правами. Подключитесь к своей учетной записи, используя следующий пример:

    Add-AzureAccount
    
  2. Создайте таблицу маршрутизации. Для этого воспользуйтесь указанным ниже командлетом.

    New-AzureRouteTable –Name "MyRouteTable" –Label "Routing Table for Forced Tunneling" –Location "North Europe"
    
  3. Добавьте маршрут по умолчанию в таблицу маршрутизации.

    В примере ниже показано, как добавить маршрут по умолчанию в таблицу маршрутизации, созданную в действии 1. Единственным поддерживаемым маршрутом является префикс назначения "0.0.0.0/0" для "VPNGateway" NextHop.

    Get-AzureRouteTable -Name "MyRouteTable" | Set-AzureRoute –RouteTable "MyRouteTable" –RouteName "DefaultRoute" –AddressPrefix "0.0.0.0/0" –NextHopType VPNGateway
    
  4. Сопоставьте таблицу маршрутизации с подсетями.

    После создания таблицы маршрутизации и добавления маршрута с помощью примера ниже добавьте таблицу маршрутизации в подсеть виртуальной сети или сопоставьте таблицу с этой подсетью. В примере ниже показано, как добавить таблицу маршрутизации MyRouteTable в подсети Midtier и Backend виртуальной сети MultiTier-VNet.

    Set-AzureSubnetRouteTable -VirtualNetworkName "MultiTier-VNet" -SubnetName "Midtier" -RouteTableName "MyRouteTable"
    Set-AzureSubnetRouteTable -VirtualNetworkName "MultiTier-VNet" -SubnetName "Backend" -RouteTableName "MyRouteTable"
    
  5. Назначьте сайт по умолчанию для принудительного туннелирования.

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

    $DefaultSite = @("DefaultSiteHQ")
    Set-AzureVNetGatewayDefaultSite –VNetName "MultiTier-VNet" –DefaultSite "DefaultSiteHQ"
    

Дополнительные командлеты PowerShell

Удаление таблицы маршрутизации

Remove-AzureRouteTable -Name <routeTableName>

Отображение таблицы маршрутизации

Get-AzureRouteTable [-Name <routeTableName> [-DetailLevel <detailLevel>]]

Удаление маршрута из таблицы маршрутизации

Remove-AzureRouteTable –Name <routeTableName>

Удаление маршрута из подсети

Remove-AzureSubnetRouteTable –VirtualNetworkName <virtualNetworkName> -SubnetName <subnetName>

Отображение таблицы маршрутизации, сопоставленной с подсетью

Get-AzureSubnetRouteTable -VirtualNetworkName <virtualNetworkName> -SubnetName <subnetName>

Удаление сайта по умолчанию из VPN-шлюза виртуальной сети

Remove-AzureVnetGatewayDefaultSite -VNetName <virtualNetworkName>