[Документация Yandex Cloud](../../index.md) > [Yandex Compute Cloud](../index.md) > [Концепции](index.md) > Виртуальные машины > Сетевые интерфейсы виртуальных машин

# Сетевые интерфейсы виртуальных машин

У виртуальной машины может быть [один или несколько](limits.md) сетевых интерфейсов. При создании виртуальной машины необходимо задать настройки как минимум одного сетевого интерфейса, подключенного к ней: выбрать [подсеть](../../vpc/concepts/network.md#subnet), к которой будет подключена виртуальная машина, настроить [внутренний](#internal-ip) и [публичный IP-адрес](#public-ip), добавить необходимые [группы безопасности](../../vpc/concepts/security-groups.md). Это позволит виртуальной машине взаимодействовать с другими сервисами во внутренней сети и в интернете.

После подключения сетевого интерфейса виртуальной машине будет присвоен внутренний IP-адрес в подсети. Публичный IP-адрес будет присвоен только если это было указано в настройках сетевого интерфейса.

IP-адреса, FQDN и другую информацию можно узнать в консоли управления, в блоке **Сеть** на странице виртуальной машины. Эти данные можно использовать для подключения к виртуальной машине.

На виртуальных машинах, созданных из публичных образов Linux, IP-адрес и имя хоста (FQDN) не прописываются автоматически в файл `/etc/hosts`. Это может повлиять на работу команды `sudo`.

Вы можете изменить настройки сетевых интерфейсов на остановленных ВМ: привязать публичный IP-адрес, сменить подсеть, выбрать другие группы безопасности или задать настройки [DNS](../../glossary/dns.md).

Вы также можете [добавлять](../operations/vm-control/attach-network-interface.md) на ВМ дополнительные сетевые интерфейсы и [удалять](../operations/vm-control/attach-network-interface.md) их как на остановленных, так и на работающих ВМ. При этом, чтобы избежать нарушений [маршрутизации внутри ВМ](../../vpc/concepts/routing.md#rt-vm), рекомендуется добавлять и удалять сетевые интерфейсы на остановленных ВМ.

Функциональность по добавлению и удалению сетевых интерфейсов на работающих ВМ находится на [стадии Preview](../../overview/concepts/launch-stages.md). Чтобы получить доступ к функциональности, [обратитесь](https://kz.center.yandex.cloud/support) в техническую поддержку.

Если добавленные сетевые интерфейсы неактивны или у вас пропала возможность [подключаться](../operations/vm-connect/ssh.md) к ВМ, смотрите раздел [Решение проблем](../qa/troubleshooting.md).

### Рекомендации {#best-practices}

Для стабильной работы сети на ВМ следуйте следующим рекомендациям:

* Для сохранения [сетевой связности](../../vpc/concepts/routing.md#rt-vpc) добавляйте сетевые интерфейсы на остановленные ВМ.
* Назначайте публичный IP-адрес только на один сетевой интерфейс ВМ.

## Внутренний IP-адрес {#internal-ip}

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

{% note info %}

На данный момент поддерживаются только IPv4-адреса. Для виртуальных машин Yandex Compute Cloud и хостов баз данных доступ из интернета и в интернет открыт только через публичные IP-адреса.

{% endnote %}

Внутренний IP-адрес можно использовать для доступа с одной виртуальной машины на другую. Подключение по внутреннему IP-адресу возможно только с виртуальных машин, которые принадлежат к одной [облачной сети](../../vpc/concepts/network.md#network).

Вы можете [изменить](../operations/vm-control/internal-ip-update.md) внутренний IP-адрес сетевого интерфейса после создания ВМ.

## Публичный IP-адрес {#public-ip}

Чтобы иметь доступ к виртуальной машине из интернета, вы можете получить публичный IP-адрес.

Публичный IP-адрес можно назначить автоматически из пула адресов Yandex Cloud или выбрать из списка предварительно [зарезервированных](../../vpc/operations/get-static-ip.md) публичных IP-адресов.

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

Публичный IP-адрес можно сделать статическим. Подробнее читайте в разделе [Сделать публичный IP-адрес виртуальной машины статическим](../operations/vm-control/vm-set-static-ip.md).

Подробнее о правилах тарификации IP-адресов читайте в разделе [Публичные IP-адреса](../../vpc/pricing.md#prices-public-ip) документации сервиса Virtual Private Cloud.

Публичный IP-адрес сетевого интерфейса виртуальной машины сопоставляется с внутренним IP-адресом этого интерфейса посредством NAT. Поэтому все запросы к виртуальной машине по внешнему IP-адресу ее сетевого интерфейса передаются на внутренний IP-адрес этого интерфейса. Подробнее о NAT читайте в [RFC 3022](https://www.ietf.org/rfc/rfc3022.txt).

## Имя хоста и внутренний FQDN {#hostname}

При создании виртуальной машине присваивается имя хоста и внутренний [FQDN](../../glossary/fqdn.md), который можно использовать для доступа с одной ВМ на другую в рамках одной [облачной сети](../../vpc/concepts/network.md). FQDN можно посмотреть при [получении информации о виртуальной машине](../operations/vm-info/get-info.md).

Имя хоста и внутренний FQDN нельзя поменять после создания ВМ.

Присвоенный FQDN зависит от заданного имени хоста `(CreateInstanceSpec.hostname)`. Имя хоста должно быть уникальным в вашей виртуальной сети.

1. В консоли управления невозможно ввести параметр `hostname` для новой ВМ. В качестве имени хоста используется имя ВМ, указанное пользователем:

	* Если поле **Имя** при создании ВМ оставить пустым — будет присвоен внутренний FQDN `<идентификатор_ВМ>.auto.internal`.
	* Если в поле **Имя** ввести имя ВМ — будет присвоен внутренний FQDN `<имя_ВМ>.<регион>.internal`.

1. При работе с CLI, [API](../../glossary/rest-api.md) и Terraform внутренний FQDN создается по следующим правилам:

	* Если `hostname` не указать, то ВМ присвоится уникальный FQDN вида `<идентификатор_ВМ>.auto.internal`.
	* Если указан `hostname`, и он не содержит символа "`.`", то он считается префиксом FQDN. ВМ присвоится внутренний FQDN вида `<hostname>.<регион>.internal`.
	* Если указан `hostname`, и он содержит символ "`.`" в середине или в конце, то считается, что это FQDN. ВМ присвоится внутренний FQDN, совпадающий с `hostname`. Нельзя указать FQDN, начинающийся с "`.`" или содержащий только "`.`".

### Примеры {#examples}

Заданное имя хоста (hostname) | FQDN виртуальной машины
:--- | :---
`<не_указано>` | `<идентификатор_ВМ>.auto.internal`
`breathtaking` | `breathtaking.kz1.internal`
`this-is-sparta` | `this-is-sparta.kz1.internal`
`hello.world` или `hello.world.` | `hello.world`
`breathtaking.` | `breathtaking`
<span style="color: red">`.why`</span> | <span style="color: red">ошибка (FQDN начинается с ".")</span>
<span style="color: red">`.`</span> | <span style="color: red">ошибка (FQDN содержит только ".")</span>


## MAC-адрес {#mac-address}

После подключения сетевого интерфейса к виртуальной машине, ему будет присвоен MAC-адрес устройства.

Вы можете узнать MAC-адрес изнутри виртуальной машины или в информации о ресурсе через API Yandex Cloud.

## Примеры использования {#examples}

* [Создание бастионного хоста](../tutorials/bastion.md)
* [Реализация отказоустойчивых сценариев для сетевых виртуальных машин](../tutorials/route-switcher.md)
* [Настройка SFTP-сервера на Centos 7](../tutorials/backup-and-archive-to-sftp.md)
* [Привязка доменного имени к ВМ с веб-сервером](../tutorials/bind-domain-vm/index.md)
* [Развертывание Remote Desktop Gateway](../tutorials/rds-gw.md)