[Документация Yandex Cloud](../../index.md) > [Yandex Virtual Private Cloud](../index.md) > [Пошаговые инструкции](index.md) > Подсеть > Создать подсеть

# Создать подсеть


{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступна только [зона доступности](../../overview/concepts/geo-scope.md) `kz1-a`.

{% endnote %}


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

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, где требуется создать подсеть.
  1. [Перейдите](https://kz.console.yandex.cloud/link/vpc) в сервис **Virtual Private Cloud**.
  1. На панели слева выберите ![subnets](../../_assets/console-icons/nodes-right.svg) **Подсети**.
  1. Справа сверху нажмите **Создать**.
  1. В поле **Имя** укажите название подсети. Требования к названию:

     * длина — от 3 до 63 символов;
     * может содержать строчные буквы латинского алфавита, цифры и дефисы;
     * первый символ — буква, последний — не дефис.

  1. (Опционально) В поле **Описание** добавьте описание.
  1. В поле **Зона доступности** выберите зону доступности из выпадающего списка.
  1. В поле **Сеть** укажите облачную сеть. Она должна быть создана заранее.
  1. В поле **CIDR** введите IP-адрес и маску подсети. 
     Подробнее про диапазоны IP-адресов в подсетях читайте в разделе [Облачные сети и подсети](../concepts/network.md). 
     Если нужно указать еще один или несколько CIDR, нажмите **Добавить CIDR**.
  1. (Опционально) Задайте **Настройки DHCP**. Для этого:
      1. В поле **Доменное имя** укажите домен DNS для поиска неквалифицированных имен.
      1. В поле **Серверы доменных имен** нажмите **Добавить сервер доменных имен** и укажите адрес вашего [DNS-сервера](../../glossary/dns.md#dns-server). Можно указать несколько DNS-серверов.
      1. В поле **NTP-серверы** нажмите **Добавить NTP-сервер** и укажите адрес вашего NTP-сервера. Можно указать несколько NTP-серверов.

  1. Нажмите **Создать подсеть**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы создать подсеть:

  1. Посмотрите описание команды CLI для создания подсети:

      ```
      yc vpc subnet create --help
      ```

  1. Получите список облачных сетей в требуемом каталоге:

      ```
      yc vpc network list --folder-id b1g6ci08ma55********
      ```

      Результат:

      ```
      +----------------------+----------------+
      |          ID          |      NAME      |
      +----------------------+----------------+
      | enpavfmgapum******** | test-network-1 |
      | enplom7a98s1******** | default        |
      +----------------------+----------------+
      ```

  1. Выберите `NAME` или `ID` требуемой облачной сети. Создайте подсеть в каталоге по умолчанию:

      ```
      yc vpc subnet create \
        --name test-subnet-1 \
        --description "My test subnet" \
        --network-id enplom7a98s1******** \
        --zone kz1-a \
        --range 192.168.0.0/24
      ```

      Где:

      * `--network-id` — идентификатор облачной сети. Также можно выбрать облачную сеть, указав ее имя с помощью параметра `--network-name`. При создании подсети указывается имя облачной сети, в которой создается подсеть, и CIDR.
      * `--zone` — зона доступности, в которой создается подсеть. Если параметр не указан, подсеть будет создана в зоне доступности по умолчанию.
      * `--range` — список внутренних IPv4-адресов, определенных для данной подсети. Например, `10.0.0.0/22` или `192.168.0.0/16`. Адреса должны быть уникальными внутри сети. Минимальный размер подсети — /28, а максимальный размер подсети — /16. Поддерживается только IPv4.

      Требования к названию подсети:

      * длина — от 3 до 63 символов;
      * может содержать строчные буквы латинского алфавита, цифры и дефисы;
      * первый символ — буква, последний — не дефис.

      ```
      yc vpc subnet create \
        --name test-subnet-1 \
        --description "My test subnet" \
        --network-name test-network-1 \
        --zone kz1-a \
        --range 192.168.0.0/24
      ```

      Параметры `--name` и `--description` необязательны — можно создать подсеть без имени и описания и обращаться к ней по идентификатору.

  1. Получите список всех подсетей в каталоге по умолчанию:

      ```
      yc vpc subnet list
      ```

      Результат:

      ```
      +----------------------+-----------------------+------------------------+
      |          ID          |         NAME          | ... |       RANGE      |
      +----------------------+-----------------------+------------------------+
      ...
      | e2l0psbfoloe******** | test-subnet-1         | ... | [192.168.0.0/24] |
      ...
      +----------------------+-----------------------+-----+------------------+
      ```

      Получите тот же список с большим количеством деталей в формате YAML:

      ```
      yc vpc subnet list --format yaml
      ```

      Результат:
      
      ```
      ...

      - id: e2l0psbfoloe********
        folder_id: b1g6ci08ma55********
        created_at: "2018-10-24T12:25:58Z"
        name: test-subnet-1
        description: My test subnet
        network_id: enplom7a98s1********
        zone_id: kz1-a
        v4_cidr_blocks:
        - 192.168.0.0/24

      ...
      ```

- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../terraform/index.md).

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

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

     * `name` — имя подсети. Требования к имени:

        * длина — от 3 до 63 символов;
        * может содержать строчные буквы латинского алфавита, цифры и дефисы;
        * первый символ — буква, последний — не дефис.

     * `description` — описание подсети.
     * `v4_cidr_blocks` — список IPv4-адресов, откуда или куда будет поступать трафик. Например, `10.0.0.0/22` или `192.168.0.0/16`. Адреса должны быть уникальными внутри сети. Минимальный размер подсети — `/28`, а максимальный размер подсети — `/16`. Поддерживается только IPv4.
     * `zone` — [зона доступности](../../overview/concepts/geo-scope.md).
     * `network_id` — идентификатор сети, в которой создается подсеть.

     Пример структуры конфигурационного файла:

     ```hcl
     resource "yandex_vpc_subnet" "lab-subnet-a" {
       name           = "<имя_подсети>"
	   description    = "<описание_подсети>"
       v4_cidr_blocks = ["<IPv4-адрес>"]
       zone           = "<зона_доступности>"
       network_id     = "<идентификатор_сети>"
     }
     ```

     Чтобы добавить, изменить или удалить подсеть, используйте ресурс `yandex_vpc_subnet` с указанием на сеть в поле `network_id` (подробнее в [примере](#examples)).

     Подробнее о параметрах ресурса `yandex_vpc_subnet` в Terraform в [документации провайдера](../../terraform/resources/vpc_subnet.md).

  1. Проверьте корректность конфигурационных файлов.

     1. В командной строке перейдите в папку, где вы создали конфигурационный файл.
     1. Выполните проверку с помощью команды:

        ```
        terraform plan
        ```

     Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. 

  1. Разверните облачные ресурсы.

     1. Если в конфигурации нет ошибок, выполните команду:

        ```
        terraform apply
        ```

     1. Подтвердите создание ресурсов: введите в терминал слово `yes` и нажмите **Enter**.

        После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [консоли управления](https://kz.console.yandex.cloud) или с помощью команд [CLI](../../cli/quickstart.md):

        ```
        yc vpc subnet list
        ```

- API {#api}

  Чтобы создать подсеть, воспользуйтесь методом REST API [create](../api-ref/Subnet/create.md) для ресурса [Subnet](../api-ref/Subnet/index.md) или вызовом gRPC API [SubnetService/Create](../api-ref/grpc/Subnet/create.md) и передайте в запросе:

    * Идентификатор каталога, в котором будет размещена подсеть, в параметре `folderId`.
    * Идентификатор сети, в которой будет размещена подсеть, в параметре `networkId`.
    * Идентификатор зоны доступности, в которой будет размещена подсеть, в параметре `zoneId`.
    * Список внутренних IPv4-адресов, определенных для данной подсети, в массиве `v4CidrBlocks[]`. Например, `10.0.0.0/22` или `192.168.0.0/16`. Адреса должны быть уникальными внутри сети. Минимальный размер подсети — `/28`, а максимальный размер подсети — `/16`. Поддерживается только IPv4.

  Чтобы узнать идентификатор подсети, воспользуйтесь методом REST API [list](../api-ref/Subnet/list.md) для ресурса [Subnet](../api-ref/Subnet/index.md) или вызовом gRPC API [SubnetService/List](../api-ref/grpc/Subnet/list.md) и передайте в запросе идентификатор каталога в параметре `folderId`.

  О том, как узнать идентификатор каталога, читайте в разделе [Получение идентификатора каталога](../../resource-manager/operations/folder/get-id.md).

{% endlist %}

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

{% list tabs group=instructions %}

- CLI {#cli}

  Создайте подсеть с именем и описанием в выбранном каталоге:

    ```
    yc vpc subnet create \
      --name test-subnet-1 \
      --description "My test subnet" \
      --folder-id b1g6ci08ma55******** \
      --network-id enplom7a98s1******** \
      --zone kz1-a \
      --range 192.168.0.0/24
    ```

    Создайте подсеть с настройками DHCP:
    ```
    yc vpc subnet create \
      --name test-subnet-1 \
      --description "My test subnet" \
      --folder-id b1g6ci08ma55******** \
      --network-id enplom7a98s1******** \
      --zone kz1-a \
      --range 192.168.0.0/24 \
      --domain-name test.domain \
      --domain-name-server 192.168.0.100 \
      --ntp-server 192.168.0.101
    ```

- Terraform {#tf}

  1. Опишите в конфигурационном файле параметры ресурса `yandex_vpc_subnet`:

     ```hcl
     resource "yandex_vpc_network" "lab-net" {
       name        = "network-1"
       description = "My first network"
     }

     resource "yandex_vpc_subnet" "lab-subnet-a" {
       name           = "subnet-1"
       description    = "My first subnet"
       v4_cidr_blocks = ["10.2.0.0/16"]
       zone           = "kz1-a"
       network_id     = "${yandex_vpc_network.lab-net.id}"
     }
     ```

     Подробнее о параметрах ресурсов в Terraform в [документации провайдера](../../terraform/resources/vpc_subnet.md).

  1. Проверьте корректность конфигурационных файлов.

     1. В командной строке перейдите в папку, где вы создали конфигурационный файл.
     1. Выполните проверку с помощью команды:

        ```
        terraform plan
        ```

     Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. 

  1. Разверните облачные ресурсы.

     1. Если в конфигурации нет ошибок, выполните команду:

        ```
        terraform apply
        ```

     1. Подтвердите создание ресурсов: введите в терминал слово `yes` и нажмите **Enter**.

        После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [консоли управления](https://kz.console.yandex.cloud) или с помощью команд [CLI](../../cli/quickstart.md):

        ```
        yc vpc subnet list
        ```

{% endlist %}