Tutorials#

Управление NAT-шлюзами#

Функциональность NAT (Network Address Translation) реализуется в отдельном ресурсе — NAT-шлюзе (NAT Gateway, NGW). Ранее NGW был интегрирован с интернет-шлюзом (Internet Gateway).

Note

Инструкции относятся к NAT-шлюзам, которые на данный момент недоступны. Ожидаемая дата релиза: сентябрь–октябрь 2026 года. Эти инструкции помогут вам заранее адаптировать вашу конфигурацию Terraform в соответствии с изменениями и вашими требованиями.

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

Добавление NAT-шлюзов с помощью Terraform#

Управление NAT-шлюзами поддерживается в Terraform-провайдере rockitcloud, начиная с версии 25.5.5. Чтобы добавить NAT-шлюз как самостоятельный ресурс, выполните следующие шаги:

  1. Укажите в конфигурации провайдера версию 25.5.5 или выше:

    terraform {
      required_providers {
        aws = {
          source  = "hc-registry.website.k2.cloud/c2devel/rockitcloud"
          version = "25.5.5"
        }
      }
    }
    
  2. Выполните команду terraform init -upgrade.

  3. В основном файле конфигурации Terraform (например, файле main.tf) опишите маршрут таким образом, чтобы в качестве шлюза для него был выбран NAT-шлюз, а не интернет-шлюз. Пример конфигурации:

    resource "aws_nat_gateway" "natgw_example" {
       depends_on = [aws_internet_gateway.igw_example]
       vpc_id     = aws_vpc.vpc_example.id
    }
    
    resource "aws_route" "default_route" {
       route_table_id         = aws_vpc.vpc_example.main_route_table_id
       nat_gateway_id         = aws_nat_gateway.natgw_example.id
       destination_cidr_block = "0.0.0.0/0"
    }
    
  4. Получите список существующих NAT-шлюзов. Это можно сделать двумя способами:

    • Перейдите в раздел Виртуальные машины Сеть NAT-шлюзы.

    • Идентификаторы NAT-шлюзов будут указаны в колонке ID в таблице ресурсов.

    Выполните запрос

    c2-ec2 DescribeNatGateways Filter.1.Name vpc-id Filter.1.Value <vpc_id>
    
  5. Импортируйте найденные NAT-шлюзы:

    terraform import aws_nat_gateway.natgw_example nat-12345678
    
  6. Выполните команду terraform plan и убедитесь, что полученное состояние ресурсов Terraform актуально и консистентно.

Отключение NAT-шлюзов#

Если доступ в интернет для экземпляров без Elastic IP-адресов не требуется, то для экономии средств NAT-шлюзы можно отключить и удалить. Предварительно необходимо изменить маршрут, ведущий через NAT-шлюз, таким образом, чтобы в качестве шлюза был выбран интернет-шлюз.

При необходимости вы можете отправить нам запрос на проведение необходимых действий — для этого обратитесь в службу поддержки через портал или по электронной почте support@k2.cloud.

Modify a route#

Изменить маршрут можно двумя способами:

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

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

Для создания маршрута воспользуйтесь инструкцией по созданию правила маршрутизации. Укажите следующие значения:

  • Тип шлюза — стандартный шлюз в интернет для обоих маршрутов;

  • Сеть — например, при использовании CIDR-блока 0.0.0.0/0 укажите специфичные значения 0.0.0.0/1 для первого маршрута и 128.0.0.0/1 для второго.

Удалите маршрут, ведущий через NAT-шлюз. Для этого воспользуйтесь инструкцией по удалению правила маршрутизации. При удалении необходимо выбирать маршрут, у которого в качестве шлюза используется NAT-шлюз (на это указывает идентификатор NAT-шлюза, например, nat-12345678, в колонке Шлюз).

Настройте постоянный маршрут через интернет-шлюз. Для создания маршрута воспользуйтесь инструкцией по созданию правила маршрутизации. Укажите следующие значения:

  • Тип шлюза — стандартный шлюз в интернет;

  • Сеть — диапазон IP-адресов в нотации CIDR, например, 0.0.0.0/0.

Удалите два ранее созданных временных маршрута. Для этого воспользуйтесь инструкцией по удалению правила маршрутизации.

  1. Определите идентификатор требуемой таблицы маршрутизации:

    c2-ec2 DescribeRouteTables Filter.1.Name vpc-id Filter.1.Value.1 <vpc_id>
    

    Если ответ содержит более одной таблицы маршрутизации, то у требуемой таблицы (или таблиц) будет указан NAT-шлюз в поле GatewayId. Идентификатор таблицы содержится в поле RouteTableId. Пример ответа на запрос:

    "Associations": [],
    "PropagatingVgws": [],
    "RouteTableId": "rtb-12345678",
    "Routes": [
        {
            "DestinationCidrBlock": "0.0.0.0/0",
            "GatewayId": "ngw-12345678",
            "Origin": "CreateRoute",
            "State": "blackhole"
        }
    ],
    
  2. Измените маршрут, ведущий через NAT-шлюз, таким образом, чтобы в качестве шлюза был выбран интернет-шлюз:

    c2-ec2 ReplaceRoute RouteTableId rtb-12345678 DestinationCidrBlock 0.0.0.0/0 GatewayId igw-12345678
    

Удалить NAT-шлюз#

Удалить NAT-шлюз можно двумя способами:

Удалите NAT-шлюз. Для этого:

  1. Перейдите в раздел Виртуальные машины Сеть NAT-шлюзы.

  2. Выберите удаляемый NAT-шлюз в таблице ресурсов.

  3. Click Delete and confirm the action in the dialog window.

  1. Определите идентификатор NAT-шлюза:

    c2-ec2 DescribeNatGateways Filter.1.Name vpc-id Filter.1.Value <vpc_id>
    
  2. Удалите NAT-шлюз:

    c2-ec2 DeleteNatGateway NatGatewayId <natgw_id>