[Документация Yandex Cloud](../../index.md) > [Yandex Virtual Private Cloud](../index.md) > [Практические руководства](index.md) > Сетевая облачная инфраструктура на основе NGFW > Создание и настройка шлюза UserGate в режиме межсетевого экрана

# Создание и настройка шлюза UserGate в режиме межсетевого экрана


{% note warning %}

Часть ресурсов, необходимых для прохождения практического руководства, доступны только в [регионе Россия](../../overview/concepts/region.md).

{% endnote %}


[UserGate](https://www.usergate.com/ru/products/enterprise-firewall) — межсетевой экран нового поколения от одноименной российской компании.

Вы создадите виртуальную машину UserGate в Yandex Cloud и настроите шлюз для работы в режиме межсетевого экрана. Для расширенного изучения возможностей UserGate пройдите бесплатный курс [UserGate Getting Started](https://university.tssolution.ru/usergate-getting-started-v6).

Чтобы развернуть шлюз UserGate и проверить его работу:

1. [Подготовьте облако к работе](#before-you-begin).
1. [Создайте облачную сеть и подсеть](#create-network).
1. [Зарезервируйте статический публичный IP-адрес](#get-static-ip).
1. [Создайте виртуальную машину UserGate](#create-vm).
1. [Настройте UserGate NGFW через веб-консоль администратора](#admin-console).
1. [Настройте маршрутизацию в подсети](#subnet-routing).
1. [Проведите тестирование работы межсетевого экрана](#test-firewall).

Если созданные ресурсы вам больше не нужны, [удалите их](#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}

В стоимость поддержки шлюза UserGate входит:

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

## Создайте облачную сеть и подсеть {#create-network}

Создайте облачную [сеть](../concepts/network.md#network) с [подсетями](../concepts/network.md#subnet) в тех [зонах доступности](../../overview/concepts/geo-scope.md), где будет находиться виртуальная машина.

{% list tabs group=instructions %}

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

  1. На странице каталога в [консоли управления](https://kz.console.yandex.cloud) нажмите кнопку ![image](../../_assets/console-icons/plus.svg) **Создать ресурс** и выберите ![image](../../_assets/vpc/vpc-icon.svg) **Сеть**.
  1. Задайте имя сети: `usergate-network`.
  1. Включите опцию **Создать подсети**.
  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. Создайте сеть `usergate-network`:
  
     ```bash
     yc vpc network create usergate-network
     ```

     Результат:

     ```text
     id: enptrcle5q3d********
     folder_id: b1g9hv2loamq********
     created_at: "2022-06-08T09:25:03Z"
     name: usergate-network
     default_security_group_id: enpbsnnop4ak********
     ```

     Подробнее о команде `yc vpc network create` смотрите в [справочнике CLI](../../cli/cli-ref/vpc/cli-ref/network/create.md).

  1. Создайте подсеть `usergate-subnet-kz1-d` в зоне доступности `kz1-d`:

     ```bash
     yc vpc subnet create usergate-subnet-kz1-d \
       --zone kz1-d \
       --network-name usergate-network \
       --range 10.1.0.0/16
     ```

     Результат:
    
     ```yaml
     id: e9bnnssj8sc8********
     folder_id: b1g9hv2loamq********
     created_at: "2022-06-08T09:27:00Z"
     name: usergate-subnet-kz1-d
     network_id: enptrcle5q3d********
     zone_id: kz1-d
     v4_cidr_blocks:
     - 10.1.0.0/16
     ```

     Подробнее о команде `yc vpc subnet create` смотрите в [справочнике CLI](../../cli/cli-ref/vpc/cli-ref/subnet/create.md).



- Terraform {#tf}

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

     ```hcl
     resource "yandex_vpc_network" "usergate-network" {
       name = "usergate-network"
     }

     resource "yandex_vpc_subnet" {
       name           = "usergate-subnet-kz1-d"
       zone           = "kz1-d"
       network_id     = "${yandex_vpc_network.usergate-network.id}"
       v4_cidr_blocks = ["10.1.0.0/16"]
     }
     ```

     Подробнее в описаниях ресурсов [yandex_vpc_network](../../terraform/resources/vpc_network.md) и [yandex_vpc_subnet](../../terraform/resources/vpc_subnet.md) в документации провайдера Terraform.
     
  1. Проверьте корректность конфигурационных файлов.

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

        ```bash
        terraform plan
        ```

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

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

        ```bash
        terraform apply
        ```

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

- API {#api}

  1. Создайте сеть `usergate-network` с помощью вызова gRPC API [NetworkService/Create](../api-ref/grpc/Network/create.md) или метода REST API [create](../api-ref/Network/create.md) для ресурса Network.
  1. Создайте подсеть `usergate-subnet-kz1-d` с помощью вызова gRPC API [SubnetService/Create](../api-ref/grpc/Subnet/create.md) или метода REST API [create](../api-ref/Subnet/create.md) для ресурса Subnet.

{% endlist %}

## Зарезервируйте статический публичный IP-адрес {#get-static-ip}

Для работы шлюзу потребуется статический [публичный IP-адрес](../concepts/address.md#public-addresses).

{% list tabs group=instructions %}

- Консоль управления {#console}
  
  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите на страницу каталога, в котором нужно зарезервировать адрес.
  1. Перейдите в сервис **Virtual Private Cloud**.
  1. На панели слева выберите ![image](../../_assets/vpc/ip-addresses.svg) **Публичные IP-адреса**.
  1. Нажмите кнопку **Зарезервировать публичный IP-адрес**.
  1. В открывшемся окне выберите [зону доступности](../../overview/concepts/geo-scope.md) `kz1-d`.
  1. Нажмите кнопку **Зарезервировать**.
  
- CLI {#cli}

  Выполните команду:

  ```bash
  yc vpc address create --external-ipv4 zone=kz1-d
  ```

  Результат:

  ```text
  id: e9b6un9gkso6********
  folder_id: b1g7gvsi89m3********
  created_at: "2022-06-08T17:52:42Z"
  external_ipv4_address:
    address: 178.154.253.52
    zone_id: kz1-d
    requirements: {}
  reserved: true
  ```

  Подробнее о команде `yc vpc address create` смотрите в [справочнике CLI](../../cli/cli-ref/vpc/cli-ref/address/create.md).

- Terraform {#tf}

  Опишите в конфигурационном файле параметры публичного адреса `yandex_vpc_address`:

  ```hcl
  resource "yandex_vpc_address" "usergate-addr" {
  name = "usergate-addr"
  external_ipv4_address {
    zone_id = "kz1-d"
    }
  }
  ```

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

{% endlist %}

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

{% list tabs group=instructions %}

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

  1. На странице [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder) в [консоли управления](https://kz.console.yandex.cloud) нажмите кнопку ![image](../../_assets/console-icons/plus.svg) **Создать ресурс** и выберите ![image](../../_assets/console-icons/cpu.svg) **Виртуальная машина**.
  1. В блоке **Образ загрузочного диска** в поле **Поиск продукта** введите `UserGate NGFW` и выберите образ UserGate NGFW.
  1. В блоке **Расположение** выберите [зону доступности](../../overview/concepts/geo-scope.md) `kz1-d`.
  1. В блоке **Вычислительные ресурсы** перейдите на вкладку `Своя конфигурация` и укажите необходимую [платформу](../../compute/concepts/vm-platforms.md), количество vCPU и объем RAM:

      * **Платформа** — `Intel Ice Lake`.
      * **vCPU** — `4`.
      * **Гарантированная доля vCPU** — `100%`.
      * **RAM** — `8 ГБ`.

      {% note info %}

      Указанные параметры подойдут для функционального тестирования шлюза. Чтобы рассчитать параметры для более серьезной нагрузки, ознакомьтесь с [официальными рекомендациями](https://www.usergate.com/ru/products/usergate-vm) UserGate.

      {% endnote %}

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

      * В поле **Подсеть** выберите сеть `usergate-network` и подсеть `usergate-subnet-kz1-d`.
      * В поле **Публичный IP-адрес** нажмите `Список` и выберите [зарезервированный ранее](#get-static-ip) IP-адрес.

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

      * В поле **Логин** введите имя пользователя. Не используйте имя `root` или другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте команду `sudo`.
      * В поле **SSH-ключ** выберите SSH-ключ, сохраненный в вашем профиле [пользователя организации](../../organization/concepts/membership.md).
        
        Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
        
        1. Нажмите кнопку **Добавить ключ**.
        1. Задайте имя SSH-ключа.
        1. Выберите вариант:
        
            * `Ввести вручную` — вставьте содержимое открытого [SSH](../../glossary/ssh-keygen.md)-ключа. Пару SSH-ключей необходимо [создать](../../compute/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. В блоке **Общая информация** задайте имя ВМ: `usergate-firewall`.
  1. Нажмите кнопку **Создать ВМ**.
   
- CLI {#cli}
  
  1. [Создайте](../../compute/operations/vm-connect/ssh.md#creating-ssh-keys) пару ключей SSH.
  
  1. Выполните команду:

     ```bash
     yc compute instance create \
       --name usergate-firewall \
       --memory 8 \
       --cores 4 \
       --zone kz1-d \
       --create-boot-disk image-folder-id=standard-images,image-family=usergate-ngfw \
       --ssh-key <путь_к_открытой_части_SSH-ключа> \
       --public-address=<зарезервированный_IP_адрес>
     ```

     Результат:

     ```text
     id: fhm2na1siftp********
     folder_id: b1g86q4m5vej********
     created_at: "2022-06-09T11:15:52Z"
     name: usergate-firewall
     zone_id: kz1-d
     platform_id: standard-v2
     resources:
       memory: "8589934592"
       cores: "4"
       core_fraction: "100"
     status: RUNNING
     boot_disk:
       mode: READ_WRITE
       device_name: fhmiq60rni2t********
       auto_delete: true
       disk_id: fhmiq60rni2t********
     network_interfaces:
     - index: "0"
       mac_address: d0:0d:2b:a8:3c:93
       subnet_id: e9bqlr188as7********
       primary_v4_address:
         address: 10.1.0.27
         one_to_one_nat:
           address: 51.250.72.1
           ip_version: IPV4
     fqdn: fhm2na1siftp********.auto.internal
     scheduling_policy: {}
     network_settings:
       type: STANDARD
     placement_policy: {}
     ```

     Подробнее о команде `yc compute instance create` смотрите в [справочнике CLI](../../cli/cli-ref/compute/cli-ref/instance/create.md).

- Terraform {#tf}

  1. [Получите](../../compute/operations/images-with-pre-installed-software/get-list.md) идентификатор последней версии образа UserGate NGFW из списка публичных образов.
  1. Опишите в конфигурационном файле параметры ВМ `usergate-firewall`:

     ```hcl
     resource "yandex_compute_disk" "boot-disk" {
       name     = "boot-disk"
       type     = "network-hdd"
       zone     = "kz1-d"
       size     = "110"
       image_id = "<идентификатор_образа_UserGate_NGFW>"
     }

     resource "yandex_compute_instance" "usergate-firewall" {
       name        = "usergate-firewall"
       platform_id = "standard-v3"
       zone        = "kz1-d"
       hostname    = "usergate"
       resources {
         cores         = 4
         core_fraction = 100
         memory        = 8
       }

       boot_disk {
         disk_id = yandex_compute_disk.boot-disk.id
       }

       network_interface {
         subnet_id          = "${yandex_vpc_subnet.usergate-subnet.id}"
         nat                = true
         nat_ip_address     = <зарезервированный_IP_адрес>
       }
     ```

     Подробнее смотрите в описании ресурса [yandex_compute_instance](../../terraform/resources/compute_instance.md) в документации провайдера Terraform.
     
  1. Проверьте корректность конфигурационных файлов.

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

        ```bash
        terraform plan
        ```

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

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

        ```bash
        terraform apply
        ```

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

- API {#api}

  Создайте ВМ `usergate-firewall` с помощью метода REST API [create](../../compute/api-ref/Instance/create.md) для ресурса Instance.

{% endlist %}

## Настройте UserGate NGFW через веб-консоль администратора {#admin-console}

Для настройки шлюза перейдите в веб-консоль администратора UserGate NGFW по адресу `https://<публичный_адрес_ВМ_UserGate>:8001` и авторизуйтесь с данными по умолчанию: логин — `Admin`, пароль — `utm`.

После авторизации вам будет предложено изменить пароль по умолчанию и провести обновление ОС.

### Настройте шлюз для работы в режиме межсетевого экрана {#gateway-setup}

Сконфигурируйте UserGate NGFW:

1. В верхнем меню выберите **Настройки**.
1. В меню слева перейдите в раздел **Сеть** ⟶ **Зоны**.
1. Нажмите на имя зоны `Trusted`.
1. Перейдите на вкладку **Контроль доступа** и включите опцию **Консоль администрирования**. Нажмите кнопку **Сохранить**.
1. В меню слева перейдите в раздел **Сеть** ⟶ **Интерфейсы**.
1. Нажмите на имя сетевого интерфейса `port0`.
1. На вкладке **Общие** в поле **Зона** выберите из списка зону `Trusted`. Нажмите кнопку **Сохранить**.
1. В меню слева перейдите в раздел **Политики сети** ⟶ **Межсетевой экран**.
1. Нажмите на имя предустановленного правила `Allow trusted to untrusted`.
1. Перейдите на вкладку **Назначение** и отключите зону `Untrusted`. Нажмите кнопку **Сохранить**.
1. Включите правило `Allow trusted to untrusted`. Для этого выделите строку с правилом и в верхней части экрана нажмите кнопку **Включить**.
1. В меню слева перейдите в раздел **Политики сети** ⟶ **NAT и маршрутизация**.
1. Нажмите на имя предустановленного правила `NAT from Trusted to Untrusted`.
1. Перейдите на вкладку **Назначение** и измените зону назначения с `Untrusted` на `Trusted`. Нажмите кнопку **Сохранить**.
1. Включите правило `NAT from Trusted to Untrusted`. Для этого выделите строку с правилом и в верхней части экрана нажмите кнопку **Включить**.
 
На этом первоначальная настройка шлюза закончена. 

### Настройте правила фильтрации трафика {#traffic-rules}

Из политик, предустановленных по умолчанию, рекомендуется использовать `Block to botnets`, `Block from botnets` и `Example block RU RKN by IP list`. Предварительно измените в них значения нескольких параметров:

1. Перейдите в раздел **Политики сети** ⟶ **Межсетевой экран**.
1. Нажмите на имя предустановленного правила.
1. Перейдите на вкладку **Источник** и измените исходную зону с `Untrusted` на `Trusted`. 
1. Перейдите на вкладку **Назначение** и отключите зону `Untrusted`.
1. Нажмите кнопку **Сохранить**.
1. Включите выбранное правило. Для этого выделите строку с правилом и в верхней части экрана нажмите кнопку **Включить**.

Для обеспечения большей безопасности настройте дополнительные правила для фильтрации трафика:

1. Перейдите в раздел **Политики сети** ⟶ **Межсетевой экран**.
1. Добавьте первое правило для блокировки:
   
   1. В верхней части экрана нажмите кнопку **Добавить**.
   1. Укажите параметры правила:
      
      * **Название** — `Блокировка протокола QUIC`.
      * **Действие** — Запретить.

   1. Перейдите на вкладку **Источник** и выберите `Trusted`.
   1. Перейдите на вкладку **Сервис**.
   1. Нажмите кнопку **Добавить**.
   1. Выберите сервис `Quick UDP Internet Connections` и нажмите кнопку **Добавить**. Затем нажмите кнопку **Закрыть**.
   1. Нажмите кнопку **Сохранить**.

1. Добавьте второе правило для блокировки:
   
   1. В верхней части экрана нажмите кнопку **Добавить**.
   1. Укажите параметры правила:

      * **Название** — `Блокировка обновлений Windows`.
      * **Действие** — Запретить.
   
   1. Перейдите на вкладку **Источник** и выберите `Trusted`.
   1. Перейдите на вкладку **Приложения**.
   1. Нажмите **Добавить** ⟶ **Добавить приложения**.
   1. Выберите приложение `Microsoft Update` и нажмите кнопку **Добавить**.
   1. Выберите приложение `WinUpdate` и нажмите кнопку **Добавить**. Затем нажмите кнопку **Закрыть**.
   1. Нажмите кнопку **Сохранить**.

Вы можете добавить и другие правила для фильтрации трафика. Не рекомендуется совмещать сервисы и приложения в одном правиле. В этом случае правило может не сработать.


## Настройте маршрутизацию для подсети {#subnet-routing}

Создайте [статический маршрут](../concepts/routing.md):

{% list tabs group=instructions %}

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

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

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

  1. (Опционально) Добавьте описание таблицы маршрутизации.
  1. Выберите сеть `usergate-network`.
  1. Нажмите кнопку **Добавить маршрут**.
  1. В открывшемся окне введите префикс подсети назначения `0.0.0.0` и выберите `0` в выпадающем списке.
  1. Укажите **Next hop** — внутренний IP-адрес виртуальной машины UserGate `usergate-firewall`.
  1. Нажмите кнопку **Добавить**.
  1. Нажмите кнопку **Создать таблицу маршрутизации**.

  Чтобы использовать статические маршруты, необходимо привязать таблицу маршрутизации к подсети:

  1. На панели слева выберите ![image](../../_assets/vpc/subnets.svg) **Подсети**.
  1. В строке подсети `usergate-subnet-kz1-d` нажмите кнопку ![image](../../_assets/options.svg) → ![image](../../_assets/console-icons/plug-connection.svg) **Привязать таблицу маршрутизации**.
  1. В открывшемся окне выберите созданную таблицу в списке.
  1. Нажмите кнопку **Привязать**.

- CLI {#cli}

  Чтобы создать таблицу маршрутизации и добавить в нее [статические маршруты](../concepts/routing.md): 
  1. Посмотрите описание команды CLI для создания таблиц маршрутизации:

     ```bash
     yc vpc route-table create --help
     ```

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

     ```bash
     yc vpc network list
     ```

     Результат:
     ```text
     +----------------------+--------------------+
     |          ID          |      NAME          |
     +----------------------+--------------------+
     | enp846vf5fus******** | usergate-network   |
     +----------------------+--------------------+
     ```

  1. Создайте таблицу маршрутизации в сети `usergate-network`:

     ```bash
     yc vpc route-table create \
       --name=test-route-table \
       --network-id=enp846vf5fus******** \
       --route destination=0.0.0.0/0,next-hop=10.129.0.24
     ```

     Где:

     * `name` — имя таблицы маршрутизации.
     * `network-id` — идентификатор сети, в которой будет создана таблица.
     * `route` — настройки маршрута, включают два параметра:
        * `destination` — префикс подсети назначения в нотации CIDR.
        * `next-hop` — внутренний IP-адрес виртуальной машины UserGate `usergate-firewall`.

     Результат:
     ```text
     ...done
     id: enpsi6b08q2v********
     folder_id: b1gqs1teo2q2********
     created_at: "2019-06-24T09:57:54Z"
     name: test-route-table
     network_id: enp846vf5fus********
     static_routes:
     - destination_prefix: 0.0.0.0/0
       next_hop_address: 10.129.0.24
     ```

  Чтобы использовать статические маршруты, необходимо привязать таблицу маршрутизации к подсети:

  1. Получите список подсетей в вашем облаке:

     ```bash
     yc vpc subnet list
     ```

     Результат:
     ```text
     +----------------------+-------------------------------+----------------------+----------------------+---------------+-----------------+
     |          ID          |               NAME            |      NETWORK ID      |    ROUTE TABLE ID    |       ZONE    |      RANGE      |
     +----------------------+-------------------------------+----------------------+----------------------+---------------+-----------------+
     | b0c4l3v9jrgd******** | usergate-subnet-kz1-d | enpjsdf771h0******** |                      | kz1-d | [10.130.0.0/24] |
     +----------------------+-------------------------------+----------------------+----------------------+---------------+-----------------+
     ```

  1. Привяжите таблицу маршрутизации к подсети, в которой будет работать веб-сервис, например, к подсети `usergate-subnet-kz1-d`:

     ```bash
     yc vpc subnet update b0c4l3v9jrgd******** --route-table-id e2l5345dlgr1********
     ```

     Результат:
     ```text
     ..done
     id: b0c4l3v9jrgd********
     folder_id: b1gqs1teo2q2********
     created_at: "2019-03-12T13:27:22Z"
     name: subnet-1
     network_id: enp846vf5fus********
     zone_id: kz1-d
     v4_cidr_blocks:
     - 192.168.0.0/24
     route_table_id: e2l5345dlgr1********
     ```

- Terraform {#tf}

  Чтобы создать таблицу маршрутизации и добавить в нее [статические маршруты](../concepts/routing.md):

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

     * `name` — имя таблицы маршрутизации. Формат имени:

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

     * `network_id` — идентификатор сети, в которой будет создана таблица.
     * `static_route` — описание статического маршрута:
        * `destination_prefix` — префикс подсети назначения в нотации CIDR.
        * `next_hop_address` — внутренний IP-адрес виртуальной машины из [разрешенных диапазонов](../concepts/network.md#subnet), через которую будет направляться трафик.

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

     ```hcl
     resource "yandex_vpc_route_table" "usergate-rt-d" {
	   name       = "<имя_таблицы_маршрутизации>"
       network_id = "<идентификатор_сети>"
       static_route {
         destination_prefix = "0.0.0.0/0"
         next_hop_address   = "10.129.0.24"
       }
     }
     ```

     Чтобы добавить, изменить или удалить таблицу маршрутизации, используйте ресурс `yandex_vpc_route_table` с указанием на сеть в поле `netword id` (например, `network_id = "${yandex_vpc_network.lab-net.id}"`).

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

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

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

        ```hcl
        terraform plan
        ```

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

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

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

        ```hcl
        terraform apply
        ```

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

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

        ```bash
        yc vpc route-table list
        ```

{% endlist %}


## Протестируйте межсетевой экран {#test-firewall}

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


### Подготовьте тестовую виртуальную машину {#test-vm-prepare}

1. [Создайте](../../compute/operations/vm-create/create-linux-vm.md) виртуальную машину из публичного образа Linux в подсети `usergate-subnet-kz1-d`. В настройках виртуальной машины включите [серийную консоль](../../compute/concepts/serial-console.md).
1. [Подключитесь](../../compute/operations/serial-console/connect-ssh.md) к ВМ с помощью Yandex Cloud CLI, выполнив команду:

   ```bash
   yc compute connect-to-serial-port --instance-name <имя_виртуальной_машины>
   ```

   Где:
   `--instance-name` - имя тестовой ВМ.

1. Запустите тестовый веб-сервис:

   ```bash
   sudo python3 -m http.server 80
   ```

   Веб-сервер будет отвечать на запросы на порт 80 и возвращать список папок и файлов из каталога. 


### Настройте реверс-proxy к веб-сервису через межсетевой экран {#setup-access}

1. В веб-консоли администратора UserGate в верхнем меню выберите **Настройки**.
1. Слева в разделе **Глобальный портал** выберите **Веб-портал** и настройте доступ по HTTP-адресу:
   1. Нажмите кнопку **Добавить**, чтобы открыть диалог добавления портала.
   1. Активируйте чекбокс **Включено**.
   1. В поле **Название** введите `Тестовый веб-портал`.
   1. В поле **URL** введите `http://<IP_адрес_ВМ_UserGate>`.
   1. **Профиль SSL** оставьте по умолчанию.
   1. В поле **Сертификат** выберите `CA (Default)`.
   1. Нажмите **Сохранить**.
1. Выберите **Серверы reverse-прокси** и добавьте новый сервер:
   1. Нажмите кнопку **Добавить**, чтобы открыть диалог добавления сервера.
   1. В поле **Название** введите `Локальный сервер`.
   1. В поле **Адрес сервера** введите `<внутренний_IP_тестовой_ВМ>`, например, `10.129.0.24`.
   1. В поле **Порт** введите `80`.
   1. Нажмите **Сохранить**.
1. Выберите **Правила reverse-прокси** и добавьте новое правило:
   1. Нажмите кнопку **Добавить**, чтобы открыть диалог добавления правила.
   1. Активируйте чекбокс **Включено**.
   1. В поле **Название** введите `Доступ к локальному серверу`.
   1. В поле **Сервер reverse-прокси** выберите `Локальный сервер`.
   1. В поле **Порты** введите `5550`.
   1. Нажмите **Сохранить**.

   На этом настройка доступа к локальному серверу завершена. Межсетевой экран будет принимать запросы на порт 5550 и перенаправлять их на порт 80 по адресу тестовой ВМ.

### Протестируйте доступность веб-сервера из интернета {#service-access}

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

   ```text
   http://<IP_адрес_ВМ_UserGate>:5550
   ```

   В ответ должен вернуться список папок и файлов из каталога.

1. В веб-консоли администратора UserGate в верхнем меню выберите **Журналы и отчёты**.
1. Слева в разделе **Журналы** выберите **Журнал веб-доступа** и убедитесь, что появилась запись о выполнении правила `Доступ к локальному серверу`.

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

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

1. [Удалите ВМ](../../compute/operations/vm-control/vm-delete.md) `usergate-firewall` и `local-service`.
1. [Удалите статический публичный IP-адрес](../operations/address-delete.md).