Блог Amazon Web Services

Новый сервис: VPC Reachability Analyzer

Зарегистрируйтесь, чтобы получать приглашения на мероприятия AWS на русском языке.

Оригинал статьи: ссылка (Harunobu Kameda, Sr. Developer Advocate)

С помощью Amazon Virtual Private Cloud (VPC) вы можете создавать логически изолированные виртуальные сети в облаке AWS. По мере того, как клиенты расширяют своё присутствие в облаке и развёртывают всё более сложные сетевые архитектуры, решение проблем с сетевой доступностью, вызванной неправильной конфигурацией, может занимать всё больше времени. Мы рады представить VPC Reachability Analyzer, инструмент для сетевой диагностики, который помогает с устранением проблем доступности между двумя точками в одной или нескольких VPC.

Убедитесь, что ваша сетевая конфигурация работает, как задумано

У вас есть полный контроль над виртуальной сетевой средой, включая выбор диапазона IP-адресов, создание подсетей, конфигурацию таблиц маршрутизации и сетевых шлюзов. Вы также можете без труда настроить конфигурацию вашей VPC. Например, вы можете создать для веб-сервера публичную подсеть, которая будет иметь доступ к Интернету через интернет-шлюз. Внутренние системы, чувствительные к безопасности, например, базы данных и серверы приложений, могут быть размещены в приватных подсетях без доступа к Интернету. Вы можете использовать несколько уровней защиты, таких как группы безопасности и сетевые списки контроля доступа (NACL), для управления доступом к объектам каждой подсети по протоколу, IP-адресу и номеру порта.

Вы можете объединить несколько VPC с помощью пиринга VPC или AWS Transit Gateway на уровне региона или глобально, что позволяет маршрутизировать трафик между ними по приватным каналам. Или использовать VPN для подключения вашей площадки (например, дата-центра) к аккаунту AWS для безопасной коммуникации. Многие сервисы AWS, которые запускаются вне VPC, такие как AWS Lambda или Amazon S3, поддерживают точки доступа VPC или AWS PrivateLink в качестве объектов внутри VPC, которые позволяют подключаться к ним приватно.

Когда у вас есть такие богатые возможности настройки и широкий набор функциональности, нет ничего необычного в возникновении непреднамеренной конфигурации, которая может привести к проблемам с доступностью. Теперь вы можете использовать VPC Reachability Analyzer для анализа доступности между двумя точками без отправки сетевых пакетов. VPC Reachability Analyzer смотрит на конфигурацию всех ресурсов в ваших VPC и использует технологию автоматизации логических рассуждений (automated reasoning), чтобы определить возможные пути прохождения сетевых пакетов. Этот сервис анализирует все возможные пути в вашей сети без отправки какого-либо трафика. Чтобы узнать больше, как работают такие алгоритмы, посмотрите эту сессию с re:Invent или прочитайте этот технический документ.

Как работает VPC Reachability Analyzer

Давайте теперь посмотрим, как он работает. Использовать VPC Reachability Analyzer очень просто, и вы можете протестировать это в своей VPC. Если вам потребуется изолированная VPC для тестирования, вы можете воспользоваться YAML-шаблоном AWS CloudFormation в конце этой статьи. С помощью этого шаблона будет создана VPC с одной подсетью, двумя группами безопасности и тремя инстансами A, B и C. Инстансы A и B могут взаимодействовать друг с другом, но при этом не могут обмениваться данными с инстансом C, потому что группа безопасности, назначенная на него, не разрешает входящий трафик.

Вы можете увидеть пункт Reachability Analyzer в консоли управления VPC в левом навигационном меню.

Меню VPC с пунктом Reachability Analyzer

Нажмите Reachability Analyzer, затем нажмите кнопку Create and analyze path. После этого вы увидите окно, в котором можно выбрать источник и место назначения и начать анализ.

Выбор типа источника для VPC Reachability Analyzer

Вы можете указать следующие типы конечных точек в качестве источника или места назначения: VPN-шлюзы, инстансы, сетевые интерфейсы, интернет-шлюзы, точки доступа VPC, пиринговые подключения VPC и Transit Gateways. Например, мы выбираем инстанс A в качестве источника и инстанс B в качестве точки назначения. Вы можете выбрать проверку доступа по протоколам TCP или UDP. По желанию вы можете указать номер порта или IP-адрес источника или получателя.

Выбор настроек пути

Наконец, нажмите кнопку Create and analyze path, чтобы начать анализ. Он может занять несколько минут в зависимости от размера и сложности ваших VPC, но обычно завершается за несколько секунд.

Результат анализа для доступной точки

Вы можете увидеть результат анализа: Reachable (точка доступна). Если вы нажмёте на ссылку nip-xxxxxxxxxxxxxxxxx, вы можете увидеть все шаги маршрута.

Путь между точками для успешного анализа

Связь между инстансом A и инстансом C не доступна, потому что группа безопасности, назначенная на инстанс C, не разрешает входящий трафик.

Результат анализа для недоступной точки

Если вы нажмёте nip-xxxxxxxxxxxxxxxxx, вы сможете увидеть подробности в разделе Explanations.

Дополнительная информация для недоступной точки

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

Начните использование сервиса уже сегодня
Указанная функциональность доступна во всех коммерческих регионах AWS кроме China (Beijing) и China (Ningxia). Больше информации вы можете найти в нашей технической документации, и не забудьте, что для использования VPC Reachability Analyzer необходимы права доступа IAM, описанные здесь.

YAML-шаблон CloudFormation для теста

---
Description: An AWS VPC configuration with 1 subnet, 2 security groups and 3 instances. When testing ReachabilityAnalyzer, this provides both a path found and path not found scenario.
AWSTemplateFormatVersion: 2010-09-09

Mappings:
  RegionMap:
    us-east-1:
      execution: ami-0915e09cc7ceee3ab
      ecs: ami-08087103f9850bddd

Resources:
  # VPC
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 172.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      InstanceTenancy: default

  # Subnets
  Subnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 172.0.0.0/20
      MapPublicIpOnLaunch: false

  # SGs
  SecurityGroup1:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow all ingress and egress traffic
      VpcId: !Ref VPC
      SecurityGroupIngress:
        - CidrIp: 0.0.0.0/0
          IpProtocol: "-1" # -1 specifies all protocols

  SecurityGroup2:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow all egress traffic
      VpcId: !Ref VPC

  # Instances
  # Instance A and B should have a path between them since they are both in SecurityGroup 1
  InstanceA:
    Type: AWS::EC2::Instance
    Properties:
      ImageId:
        Fn::FindInMap:
          - RegionMap
          - Ref: AWS::Region
          - execution
      InstanceType: 't3.nano'
      SubnetId:
        Ref: Subnet1
      SecurityGroupIds:
        - Ref: SecurityGroup1

  # Instance A and B should have a path between them since they are both in SecurityGroup 1
  InstanceB:
    Type: AWS::EC2::Instance
    Properties:
      ImageId:
        Fn::FindInMap:
          - RegionMap
          - Ref: AWS::Region
          - execution
      InstanceType: 't3.nano'
      SubnetId:
        Ref: Subnet1
      SecurityGroupIds:
        - Ref: SecurityGroup1

  # This instance should not be reachable from Instance A or B since it is in SecurityGroup 2
  InstanceC:
    Type: AWS::EC2::Instance
    Properties:
      ImageId:
        Fn::FindInMap:
          - RegionMap
          - Ref: AWS::Region
          - execution
      InstanceType: 't3.nano'
      SubnetId:
        Ref: Subnet1
      SecurityGroupIds:
        - Ref: SecurityGroup2