Назад | Перейти на главную страницу

AWS Nat Gateway - Использование неэластичного IP-адреса

Я создаю сетевую лабораторию AWS VPC через Terraform.

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

От Terraform спецификация вы можете видеть, что "allocation_id" является обязательным атрибутом:

allocation_id - (Обязательный) идентификатор распределения эластичного IP-адреса для шлюза.

Проверено также в AWS спецификация - На шаге 1:

Шлюз NAT требует эластичного IP-адреса в вашей общедоступной подсети ...

У меня вопрос: Почему шлюз NAT не может использовать простой non static IPv4 address?

В чем логическая причина этого? (технически это единственный вариант настройки).

Заметка: Вопрос в сфере AWS, а не в Terraform.


Краткий пример конфигурации Nat Gateway в Terraform:

resource "aws_nat_gateway" "natgw" {
  allocation_id = "${(aws_eip.nateip.id)}"
  subnet_id     = "${(aws_subnet.public.id)}"
  depends_on    = ["aws_internet_gateway.igw"]
}

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

EIP не требует дополнительных затрат при подключении, поэтому вам нужно только разблокировать их после удаления шлюза NAT.

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

Исходящий шлюз NAT IPv6 также не требует определения EIP.

Это связано с тем, что шлюзы NAT могут быть перезапущены либо из-за обслуживания, либо из-за сбоев. поэтому отказоустойчивый AWS заставляет вас использовать EIP.

как предлагает eckes, вы можете создать свой собственный экземпляр NAT, который в прошлом был единственным способом наттинга.

Вы можете проверить этот модуль terraform https://github.com/terraform-community-modules/tf_aws_nat