Tutorials
In this article:
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-шлюз как самостоятельный ресурс, выполните следующие шаги:
Укажите в конфигурации провайдера версию 25.5.5 или выше:
terraform { required_providers { aws = { source = "hc-registry.website.k2.cloud/c2devel/rockitcloud" version = "25.5.5" } } }
Выполните команду
terraform init -upgrade.В основном файле конфигурации 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" }
Получите список существующих NAT-шлюзов. Это можно сделать двумя способами:
Перейдите в раздел Виртуальные машины Сеть NAT-шлюзы.
Идентификаторы NAT-шлюзов будут указаны в колонке ID в таблице ресурсов.
Выполните запрос
c2-ec2 DescribeNatGateways Filter.1.Name vpc-id Filter.1.Value <vpc_id>
Импортируйте найденные NAT-шлюзы:
terraform import aws_nat_gateway.natgw_example nat-12345678
Выполните команду
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.
Удалите два ранее созданных временных маршрута. Для этого воспользуйтесь инструкцией по удалению правила маршрутизации.
Определите идентификатор требуемой таблицы маршрутизации:
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" } ],
Измените маршрут, ведущий через NAT-шлюз, таким образом, чтобы в качестве шлюза был выбран интернет-шлюз:
c2-ec2 ReplaceRoute RouteTableId rtb-12345678 DestinationCidrBlock 0.0.0.0/0 GatewayId igw-12345678
Удалить NAT-шлюз#
Удалить NAT-шлюз можно двумя способами:
Удалите NAT-шлюз. Для этого:
Перейдите в раздел Виртуальные машины Сеть NAT-шлюзы.
Выберите удаляемый NAT-шлюз в таблице ресурсов.
Click Delete and confirm the action in the dialog window.
Определите идентификатор NAT-шлюза:
c2-ec2 DescribeNatGateways Filter.1.Name vpc-id Filter.1.Value <vpc_id>
Удалите NAT-шлюз:
c2-ec2 DeleteNatGateway NatGatewayId <natgw_id>