[Документация Yandex Cloud](../../../index.md) > [Yandex Compute Cloud](../../index.md) > [Практические руководства](../index.md) > [Маршрутизация через NAT-инстанс](index.md) > Консоль управления

# Маршрутизация через NAT-инстанс с помощью консоли управления


{% note info %}

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

{% endnote %}


Чтобы настроить [маршрутизацию через NAT-инстанс](index.md) с помощью консоли управления Yandex Cloud:

1. [Подготовьте облако к работе](#before-you-begin).
1. [Создайте группу безопасности](#create-security-groups).
1. [Создайте тестовую ВМ](#create-vm).
1. [Создайте NAT-инстанс](#create-nat-instance).
1. [Настройте статическую маршрутизацию в облачной сети](#configure-static-route).
1. [Проверьте работу NAT-инстанса](#test).

Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out).


## Перед началом работы {#before-you-begin}

Зарегистрируйтесь в Yandex Cloud и создайте [платежный аккаунт](../../../billing/concepts/billing-account.md):
1. Перейдите в [консоль управления](https://kz.console.yandex.cloud), затем войдите в Yandex Cloud или зарегистрируйтесь.
1. На странице **[Yandex Cloud Billing](https://kz.console.yandex.cloud/billing)** убедитесь, что у вас подключен платежный аккаунт, и он находится в [статусе](../../../billing/concepts/billing-account-statuses.md) `ACTIVE` или `TRIAL_ACTIVE`. Если платежного аккаунта нет, [создайте его](../../../billing/quickstart/index.md) и [привяжите](../../../billing/operations/pin-cloud.md) к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать [каталог](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет работать ваша инфраструктура, на [странице облака](https://kz.console.yandex.cloud/cloud).

[Подробнее об облаках и каталогах](../../../resource-manager/concepts/resources-hierarchy.md).


### Необходимые платные ресурсы {#paid-resources}

В стоимость поддержки NAT-инстанса входят:

* плата за постоянно запущенные ВМ ([тарифы Yandex Compute Cloud](../../pricing.md));
* плата за использование динамического или статического внешнего IP-адреса ([тарифы Yandex Virtual Private Cloud](../../../vpc/pricing.md)).


### Подготовьте инфраструктуру {#deploy-infrastructure}

1. [Создайте облачную сеть](../../../vpc/operations/network-create.md), например `my-vpc`.
1. В облачной [сети](../../../vpc/concepts/network.md#network) [создайте подсети](../../../vpc/operations/subnet-create.md), например:

    * `public-subnet`, в которой будет размещен NAT-инстанс.
    * `private-subnet`, в которой будет размещена тестовая ВМ.


## Создайте группу безопасности {#create-security-groups}

[Группы безопасности](../../../application-load-balancer/concepts/application-load-balancer.md#security-groups) содержат правила, которые разрешают обращаться к ВМ по SSH. В сценарии будет создана группа безопасности `nat-instance-sg`.

Чтобы создать группу безопасности:

{% list tabs group=instructions %}

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

  1. Откройте [консоль управления](https://kz.console.yandex.cloud).
  1. Перейдите в сервис **Virtual Private Cloud**.
  1. Откройте вкладку ![image](../../../_assets/console-icons/shield.svg) **Группы безопасности**.
  1. Создайте группу безопасности:

      1. Нажмите кнопку **Создать группу безопасности**.
      1. В поле **Имя** укажите имя группы: `nat-instance-sg`.
      1. В поле **Сеть** выберите сеть `my-vpc`.
      1. В блоке **Правила** создайте следующие правила по инструкции под таблицей:

          Направление<br>трафика | Описание | Диапазон портов | Протокол | Назначение /<br>Источник | CIDR блоки
          --- | --- | --- | --- | --- | ---
          Исходящий | `any` | `Весь` | `Любой` | `CIDR` | `0.0.0.0/0`
          Входящий | `ssh` | `22` | `TCP` | `CIDR` | `0.0.0.0/0`
          Входящий | `ext-http` | `80` | `TCP` | `CIDR` | `0.0.0.0/0`
          Входящий | `ext-https` | `443` | `TCP` | `CIDR` | `0.0.0.0/0`

      1. Выберите вкладку **Исходящий трафик** или **Входящий трафик**.
      1. Нажмите кнопку **Добавить правило**.
      1. В открывшемся окне в поле **Диапазон портов** укажите один порт или диапазон портов, куда или откуда будет поступать трафик. Чтобы открыть все порты, нажмите **Выбрать весь диапазон**.
      1. В поле **Протокол** укажите нужный протокол или оставьте **Любой**, чтобы разрешить передачу трафика по всем протоколам.
      1. В поле **Назначение** или **Источник** выберите `CIDR` — правило будет применено к диапазону IP-адресов. В поле **CIDR блоки** укажите `0.0.0.0/0`.
      1. Нажмите кнопку **Сохранить**. Таким образом создайте все правила из таблицы.
      1. Нажмите кнопку **Сохранить**.

{% endlist %}


## Создайте тестовую виртуальную машину {#create-vm}

{% list tabs group=instructions %}

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

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите [каталог](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет создана ВМ.
  1. Перейдите в сервис **Compute Cloud**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/server.svg) **Виртуальные машины**.
  1. Нажмите кнопку **Создать виртуальную машину**.
  1. В блоке **Образ загрузочного диска** выберите один из [образов](../../concepts/image.md) и версию операционной системы на базе Linux.
  1. В блоке **Расположение** выберите [зону доступности](../../../overview/concepts/geo-scope.md), где находится подсеть `private-subnet`.

  1. В блоке **Сетевые настройки**:

      * В поле **Подсеть** выберите подсеть для тестовой ВМ, например `private-subnet`.
      * В поле **Публичный IP-адрес** выберите `Без адреса`.
      * В поле **Группы безопасности** выберите созданную ранее группу `nat-instance-sg`.
      * Разверните блок **Дополнительно** и в поле **Внутренний IPv4 адрес** выберите `Автоматически`.

  1. В блоке **Доступ** выберите **SSH-ключ** и укажите данные для доступа к ВМ:

      * В поле **Логин** введите имя пользователя, например, `yc-user`.
      * В поле **SSH-ключ** выберите SSH-ключ, сохраненный в вашем профиле [пользователя организации](../../../organization/concepts/membership.md).
        
        Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
        
        1. Нажмите кнопку **Добавить ключ**.
        1. Задайте имя SSH-ключа.
        1. Выберите вариант:
        
            * `Ввести вручную` — вставьте содержимое открытого [SSH](../../../glossary/ssh-keygen.md)-ключа. Пару SSH-ключей необходимо [создать](../../operations/vm-connect/ssh.md#creating-ssh-keys) самостоятельно.
            * `Загрузить из файла` — загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно.
            * `Сгенерировать ключ` — автоматическое создание пары SSH-ключей.
            
              При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку `/home/<имя_пользователя>/.ssh`. В ОС Windows распакуйте архив в папку `C:\Users\<имя_пользователя>/.ssh`. Дополнительно вводить открытый ключ в консоли управления не требуется.
        
        1. Нажмите кнопку **Добавить**.
        
        SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации [отключена](../../../organization/operations/os-login-access.md) возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.

  1. В блоке **Общая информация** задайте имя ВМ: `test-vm`.
  1. Нажмите кнопку **Создать ВМ**.

  Сохраните имя пользователя, закрытый SSH-ключ и внутренний IP-адрес тестовой ВМ.

{% endlist %}


## Создайте NAT-инстанс {#create-nat-instance}

{% list tabs group=instructions %}

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

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите [каталог](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет создана ВМ.
  1. Перейдите в сервис **Compute Cloud**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/server.svg) **Виртуальные машины**.
  1. Нажмите кнопку **Создать виртуальную машину**.
  1. В блоке **Образ загрузочного диска** перейдите на вкладку **Marketplace** и выберите образ [NAT-инстанс](https://yandex.cloud/ru-kz/marketplace/products/yc/nat-instance-ubuntu-18-04-lts).
  1. В блоке **Расположение** выберите [зону доступности](../../../overview/concepts/geo-scope.md), где находится подсеть `public-subnet`.

  1. В блоке **Сетевые настройки**:

      * В поле **Подсеть** выберите подсеть для NAT-инстанса, например `public-subnet`.
      * В поле **Публичный IP-адрес** выберите `Автоматически`.
      * В поле **Группы безопасности** выберите созданную ранее группу `nat-instance-sg`.
      * Разверните блок **Дополнительно** и в поле **Внутренний IPv4 адрес** выберите `Автоматически`.

  1. В блоке **Доступ** выберите **SSH-ключ** и укажите данные для доступа к ВМ:

      * В поле **Логин** введите имя пользователя, например, `yc-user`.
      * В поле **SSH-ключ** выберите SSH-ключ, сохраненный в вашем профиле [пользователя организации](../../../organization/concepts/membership.md).
        
        Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
        
        1. Нажмите кнопку **Добавить ключ**.
        1. Задайте имя SSH-ключа.
        1. Выберите вариант:
        
            * `Ввести вручную` — вставьте содержимое открытого [SSH](../../../glossary/ssh-keygen.md)-ключа. Пару SSH-ключей необходимо [создать](../../operations/vm-connect/ssh.md#creating-ssh-keys) самостоятельно.
            * `Загрузить из файла` — загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно.
            * `Сгенерировать ключ` — автоматическое создание пары SSH-ключей.
            
              При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку `/home/<имя_пользователя>/.ssh`. В ОС Windows распакуйте архив в папку `C:\Users\<имя_пользователя>/.ssh`. Дополнительно вводить открытый ключ в консоли управления не требуется.
        
        1. Нажмите кнопку **Добавить**.
        
        SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации [отключена](../../../organization/operations/os-login-access.md) возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.

  1. В блоке **Общая информация** задайте имя ВМ: `nat-instance`.
  1. Нажмите кнопку **Создать ВМ**.

  Сохраните имя пользователя, закрытый SSH-ключ, внутренний и публичный IP-адреса NAT-инстанса.

{% endlist %}


## Настройте статическую маршрутизацию {#configure-static-route}

{% note info %}

При создании NAT-инстанса автоматически настраивается только один сетевой интерфейс. Остальные интерфейсы можно включить вручную. Назначьте каждому новому интерфейсу IP-адрес и пропишите для него маршрут в таблице маршрутизации. В каждой подсети корректным шлюзом будет первый IP-адрес. Например, для подсети `192.168.0.128/25` первым адресом в подсети будет — `192.168.0.129`.

{% endnote %}

{% list tabs group=instructions %}

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

  1. Создайте таблицу маршрутизации и добавьте в нее статический маршрут:

      1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, в котором хотите создать статический маршрут.
      1. Перейдите в сервис **Virtual Private Cloud**.
      1. На панели слева выберите ![route-tables](../../../_assets/console-icons/route.svg) **Таблицы маршрутизации**.
      1. Нажмите кнопку **Создать**.
      1. В поле **Имя** задайте имя таблицы маршрутизации, например `nat-instance-route`. Требования к имени:

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

      1. В поле **Cеть** выберите сеть, например `my-vpc`.
      1. В блоке **Статические маршруты** нажмите **Добавить маршрут**.
      1. В открывшемся окне в поле **Префикс назначения** введите `0.0.0.0/0`.
      1. В поле **Next hop** выберите `IP-адрес`.
      1. В поле **IP-адрес** укажите внутренний IP-адрес NAT-инстанса. Нажмите кнопку **Добавить**.
      1. Нажмите кнопку **Создать таблицу маршрутизации**.

  1. Привяжите таблицу маршрутизации к подсети, где находится тестовая ВМ, например `private-subnet`:

      1. На панели слева выберите ![subnets](../../../_assets/console-icons/nodes-right.svg) **Подсети**.
      1. Нажмите ![image](../../../_assets/console-icons/ellipsis.svg) в строке подсети с тестовой ВМ и выберите **Привязать таблицу маршрутизации**.
      1. В открывшемся окне в поле **Привязка таблицы маршрутизации** выберите таблицу `nat-instance-route` и нажмите **Привязать**.

{% endlist %}

Созданный маршрут можно применять и к другим подсетям в той же сети, кроме подсети, где находится NAT-инстанс.

{% note warning %}

Не привязывайте таблицу маршрутизации к подсети, в которой находится NAT-инстанс. В противном случае будут возникать маршрутные петли, при которых NAT-инстанс будет направлять пакеты не в локальную сеть, а сам себе.

{% endnote %}


## Проверьте работу NAT-инстанса {#test}

1. [Подключитесь](../../operations/vm-connect/ssh.md#vm-connect) к тестовой ВМ через внутренний IP-адрес, используя NAT-инстанс в роли джамп-хоста:

    ```bash
    ssh -J <имя_пользователя_NAT-инстанса>@<публичный_IP-адрес_NAT-инстанса> \
      <имя_пользователя_ВМ>@<внутренний_IP-адрес_ВМ>
    ```

    Также подключиться к тестовой ВМ можно с помощью перенаправления стандартного ввода-вывода (флаг `-W`) для «проброса» соединения через NAT-инстанс:

    ```bash
    ssh -o ProxyCommand="ssh -i <путь/имя_файла_ключа_NAT> -W %h:%p <имя_пользователя_NAT>@<публичный_IP-адрес_NAT>" \
      -i <путь/имя_файла_ключа_ВМ> <имя_пользователя_ВМ>@<внутренний_IP-адрес_ВМ>
    ```

    Используйте эту команду для подключения в следующих случаях:

    * на ВМ используется версия OpenSSH ниже 7.3;
    * ваши SSH-ключи хранятся в отличном от директории по умолчанию месте или имеют нестандартные имена.

1. Введите **yes** для подключения к NAT-инстансу и повторно введите **yes** для подключения к тестовой ВМ.

    {% note info %}

    При вводе **yes** команда может не отображаться в терминале, но сработает.

    {% endnote %}

1. Убедитесь, что тестовая ВМ получает доступ в интернет через публичный IP-адрес NAT-инстанса. Выполните команду:

    ```bash
    curl ifconfig.co
    ```

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


## Как удалить созданные ресурсы {#clear-out}

Чтобы перестать платить за созданные ресурсы:

1. [Удалите](../../operations/vm-control/vm-delete.md) тестовую ВМ и NAT-инстанс.
1. [Удалите](../../../vpc/operations/security-group-delete.md) группу безопасности.
1. [Удалите](../../../vpc/operations/address-delete.md) статический публичный IP-адрес, если вы его зарезервировали.

#### Полезные ссылки {#see-also}

* [Маршрутизация через NAT-инстанс с помощью Terraform](terraform.md)