Перенести публичный IP-адрес от одной ВМ на другую
Чтобы перенести публичный IP-адрес от одной ВМ на другую, сделайте IP-адрес статическим, отвяжите его от исходной ВМ и привяжите к новой.
Сделайте публичный IP-адрес исходной ВМ статическим
Динамический публичный IP-адрес можно сделать статическим. Статические публичные адреса резервируются и не пропадают при остановке виртуальных машин и сетевых балансировщиков.
Примечание
Обратите внимание на правила тарификации неактивных статических публичных адресов.
- В консоли управления
перейдите в каталог, в котором находится нужный адрес. - В списке сервисов выберите Virtual Private Cloud.
- На панели слева выберите
IP-адреса. - Нажмите
в строке нужного адреса и выберите Сделать статическим. - В открывшемся окне нажмите Изменить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Просмотрите описание команд CLI для изменения атрибутов адреса:
yc vpc address update --help
-
Получите список адресов в каталоге по умолчанию:
yc vpc address list
Результат:
+----------------------+------+---------------+----------+------+ | ID | NAME | ADDRESS | RESERVED | USED | +----------------------+------+---------------+----------+------+ | e2l46k8conff******** | | 84.201.177.41 | false | true | +----------------------+------+---------------+----------+------+
Значение
false
параметра RESERVED для IP-адреса с IDe2l46k8conff********
показывает, что этот адрес динамический. -
Сделайте адрес статическим, используя ключ
--reserved=true
и ID адреса:yc vpc address update --reserved=true e2l46k8conff********
Результат:
id: e2l46k8conff******** folder_id: b1g7gvsi89m3******** created_at: "2021-01-14T09:36:46Z" external_ipv4_address: address: 84.201.177.41 zone_id: ru-central1-a requirements: {} reserved: true used: true
Параметр
reserved
принял значениеtrue
, теперь IP-адрес статический.
Чтобы изменить тип публичного IP-адреса с динамического на статический, воспользуйтесь методом REST API update для ресурса Address или вызовом gRPC API AddressService/Update и передайте в запросе:
-
Идентификатор адреса, который нужно сделать статическим, в параметре
addressId
.Чтобы узнать идентификатор адреса, воспользуйтесь методом REST API list для ресурса Address или вызовом gRPC API AddressService/List и передайте в запросе идентификатор каталога в параметре
folderId
.О том, как узнать идентификатор каталога, читайте в разделе Получение идентификатора каталога.
-
Значение
true
в параметреreserved
. -
Имя параметра
reserved
, в параметреupdateMask
.
Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Количество статических публичных IP-адресов ограничено. Если установленного квотой количества вам недостаточно, направьте запрос на увеличение квоты в техническую поддержку
Отвяжите публичный IP-адрес от исходной ВМ
- В консоли управления
выберите каталог, которому принадлежит ВМ. - Выберите сервис Compute Cloud.
- Выберите виртуальную машину.
- В открывшемся окне в секции Сеть в правом верхнем углу блока нужного сетевого интерфейса нажмите
и выберите Отвязать публичный IP-адрес. - В открывшемся окне нажмите кнопку Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы отвязать публичный IP-адрес от ВМ, выполните команду CLI:
yc compute instance remove-one-to-one-nat
--id=<идентификатор_ВМ>
--network-interface-index=<номер_сетевого_интерфейса_ВМ>
Где:
--id
— идентификатор (ID) ВМ. Получите список идентификаторов ВМ, доступных в каталоге, с помощью команды CLIyc compute instance list
.--network-interface-index
— номер сетевого интерфейса ВМ. По умолчанию —0
. Чтобы получить список сетевых интерфейсов ВМ и их номера, выполните командуyc compute instance get <идентификатор_ВМ>
.
Подробнее о команде yc compute instance remove-one-to-one-nat
см. в справочнике CLI.
Воспользуйтесь методом REST API removeOneToOneNat для ресурса Instance или вызовом gRPC API InstanceService/RemoveOneToOneNat.
Создайте новую ВМ без публичного IP-адреса
При создании ВМ в блоке Сетевые настройки в поле Публичный адрес выберите Без адреса
.
При создании ВМ в блоке --network-interface
исключите параметр nat-ip-version=ipv4
.
При создании ВМ в блоке network_interface
укажите nat = false
.
При создании ВМ в теле запроса исключите блок primaryV4AddressSpec
.
Привяжите IP-адрес к новой ВМ
Примечание
Если новая ВМ находится в другом каталоге, переместите публичный IP-адрес в этот же каталог.
- В консоли управления
выберите каталог, которому принадлежит ВМ. - Выберите сервис Compute Cloud.
- На панели слева выберите
Виртуальные машины. - Выберите нужную ВМ.
- В открывшемся окне в секции Сеть в правом верхнем углу блока нужного сетевого интерфейса нажмите
и выберите Добавить публичный IP-адрес. В открывшемся окне:- В поле Публичный адрес выберите
Автоматически
, чтобы автоматически получить IP-адрес, илиСписок
, чтобы выбрать зарезервированный адрес из списка. - (Опционально) Если в поле Публичный адрес вы выбрали
Автоматически
, включите опцию Защита от DDoS-атак. Подробнее см. в разделе Yandex DDoS Protection в Virtual Private Cloud. - Если в поле Публичный адрес вы выбрали
Список
, выберите IP-адрес, который хотите привязать к ВМ. IP-адрес и ВМ должны находиться в одной зоне доступности. - Нажмите кнопку Добавить.
- В поле Публичный адрес выберите
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы привязать к ВМ публичный IP-адрес выполните команду CLI:
yc compute instance add-one-to-one-nat \
--id=<идентификатор_ВМ> \
--network-interface-index=<номер_сетевого_интерфейса_ВМ> \
--nat-address=<IP-адрес>
Где:
-
--id
— идентификатор ВМ. Получите список идентификаторов ВМ, доступных в каталоге, с помощью команды CLIyc compute instance list
. -
--network-interface-index
— номер сетевого интерфейса ВМ. По умолчанию —0
. Чтобы получить список сетевых интерфейсов ВМ и их номера, выполните командуyc compute instance get <идентификатор_ВМ>
. -
--nat-address
— публичный IP-адрес, который нужно присвоить ВМ. Необязательный параметр. Если параметр--nat-address
не задан, публичный IP-адрес будет присвоен ВМ автоматически.Получите список зарезервированных публичных IP-адресов, доступных в каталоге, с помощью команды CLI
yc vpc address list
. IP-адрес и ВМ должны находиться в одной зоне доступности.
Пример использования:
yc compute instance add-one-to-one-nat \
--id=fhmsbag62taf******** \
--network-interface-index=0 \
--nat-address=51.250.*.***
Результат:
id: fhmsbag62taf********
folder_id: b1gv87ssvu49********
created_at: "2022-05-06T10:41:56Z"
...
network_settings:
type: STANDARD
placement_policy: {}
Подробнее о команде yc compute instance add-one-to-one-nat
см. в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Чтобы создать публичный IP-адрес и привязать его к сетевому интерфейсу ВМ, используйте ресурс
yandex_vpc_address
и укажите полученный адрес в полеnat_ip_address
блокаnetwork_interface
нужного сетевого интерфейса в конфигурации ресурсаyandex_compute_instance
:# Создание статического IP-адреса. resource "yandex_vpc_address" "addr" { name = "vm-adress" external_ipv4_address { zone_id = "<зона_доступности>" } } # Создание ВМ. resource "yandex_compute_instance" "vm-1" { name = "<имя_ВМ>" platform_id = "standard-v3" resources { core_fraction = 20 cores = 2 memory = 1 } ... ## Назначение сетевому интерфейсу ВМ подсети и IP-адреса в блоке network_interface. network_interface { subnet_id = "<идентификатор_подсети_ВМ>" nat = true nat_ip_address = yandex_vpc_address.addr.external_ipv4_address[0].address } ... }
Где
nat_ip_address
— публичный IP-адрес, который будет привязан к сетевому интерфейсу ВМ. Ресурсyandex_vpc_address
содержит в себе список элементов, где[0]
— первый элемент списка, содержащий в себе IP-адрес. Если у вас уже есть зарезервированный публичный IP-адрес, который вы хотите привязать в ВМ, укажите его в полеnat_ip_address
:nat_ip_address = "<IP-адрес>"
IP-адрес и ВМ должны находиться в одной зоне доступности.
Более подробную информацию о параметрах ресурса
yandex_compute_instance
см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
. -
Чтобы привязать публичный IP-адрес к сетевому интерфейсу ВМ, воспользуйтесь методом REST API addOneToOneNat для ресурса Instance или вызовом gRPC API InstanceService/AddOneToOneNat.
К сетевому интерфейсу ВМ будет привязан публичный IP-адрес. Вы сможете использовать этот IP-адрес, чтобы подключиться к ВМ по SSH.