[Документация Yandex Cloud](../../index.md) > [Yandex Virtual Private Cloud](../index.md) > [Пошаговые инструкции](index.md) > Защита от DDoS-атак > Настроить MTU при включении защиты от DDoS-атак

# Настроить MTU при включении защиты от DDoS-атак

При включении защиты [Yandex DDoS Protection](enable-ddos-protection.md) рекомендуется задавать значение MTU равным `1450` байт.

{% note alert %}

Если вы включите DDoS Protection и оставите значение MTU по умолчанию, возможны потери сетевого трафика.

{% endnote %}

Подробнее о параметрах MTU и MSS в Yandex Cloud читайте в разделе [MTU и TCP MSS](../concepts/mtu-mss.md).

## Настроить MTU {#set-mtu}

### На ВМ с Ubuntu Linux 20.04 или 22.04 {#ubuntu}

1. [Подключитесь](../../compute/operations/vm-connect/ssh.md) к виртуальной машине по протоколу SSH:

   ```
   ssh <имя_пользователя>@<IP-адрес_ВМ>
   ```

1. Задайте значение MTU равным `1450` с помощью команды `netplan`. Выполните команду:

   ```
   sudo netplan set ethernets.eth0.mtu=1450 && sudo netplan apply
   ```

1. Проверьте новые значения MTU и MSS:

   ```
   ip link show eth0 | grep mtu
   ss -i | grep mss
   ```

### На рабочих узлах кластера Managed Service for Kubernetes {#managed-kubernetes}

1. Создайте YAML-манифест DaemonSet следующего содержания:

   ```yml
   ---
   apiVersion: "apps/v1"
   kind: DaemonSet
   metadata:
     name: mtu-fix
     namespace: kube-system
     labels:
       k8s-app: mtu-fix
       version: 2v
   spec:
     selector:
       matchLabels:
         k8s-app: mtu-fix
     template:
       metadata:
         labels:
           k8s-app: mtu-fix
       spec:
         hostPID: true
         hostIPC: true
         hostNetwork: true
         containers:
         - name: mtu-fix
           image: cr.yandexcloud.kz/yc/mk8s-openssl:stable
           command:
             - bash
             - -c
             - |
               chroot /host /bin/bash -c "ip link set dev eth0 mtu 1450 &&  sleep infinity"
           imagePullPolicy: IfNotPresent
           securityContext:
             privileged: true
           resources:
             limits:
               memory: 100Mi
             requests:
               cpu: 100m
               memory: 100Mi
           volumeMounts:
             - mountPath: /host
               name: host-namespace
         volumes:
           - name: host-namespace
             hostPath:
               path: /
   ```
    
   Сохраните его в файл с любым именем, например `ds-mtu-fix.yml`.

1. Примените созданный манифест в кластере Managed Service for Kubernetes:

   ```bash
   kubectl -f ds-mtu-fix.yml
   ```

1. [Подключитесь](../../managed-kubernetes/operations/node-connect-ssh.md) к любому рабочему узлу в кластере по протоколу SSH и проверьте значения MTU и MSS:

   ```
   ssh <имя_пользователя>@<IP-адрес_рабочего_узла>
   ip link show eth0 | grep mtu
   ss -i | grep mss
   ```

#### При использовании Cilium {#cilium}

{% note info %}

При использовании сетевого плагина [Cilium](https://cilium.io/) дополнительно уменьшите MTU в [подах](../../managed-kubernetes/concepts/index.md#pod) до `1400` байт, иначе размер пакета в поде превысит MTU узла и возникнут ошибки передачи данных.

{% endnote %}

1. Создайте манифест ресурса `CiliumNodeConfig`:

   ```yaml
   apiVersion: cilium.io/v2alpha1
   kind: CiliumNodeConfig
   metadata:
     namespace: kube-system
     name: mtu-global
   spec:
     # Чтобы применить настройку ко всем узлам, оставьте nodeSelector пустым:
     nodeSelector: {}
     # Чтобы применить только к узлам с определенными метками, укажите их:
     # nodeSelector:
     #   matchLabels:
     #     <ключ_метки>: <значение_метки>
     defaults:
       mtu: "1400"
   ```

   Сохраните его в файл с любым именем, например `cilium-mtu.yaml`.

1. Примените манифест в кластере Managed Service for Kubernetes:

   ```bash
   kubectl apply -f cilium-mtu.yaml
   ```

1. Перезапустите DaemonSet Cilium, чтобы изменения вступили в силу:

   ```bash
   kubectl rollout restart daemonset/cilium -n kube-system
   ```

1. Пересоздайте поды, которые должны работать с новым значением MTU.

### На ВМ с Windows Server {#windows-server}

1. [Подключитесь](../../compute/operations/vm-connect/rdp.md) к ВМ с Windows Server по протоколу RDP и запустите Windows PowerShell.

1. Уточните название интерфейса на котором необходимо изменить MTU:

   ```
   netsh interface ipv4 show subinterfaces
   ```

1. Задайте значение MTU равным `1450` для нужного сетевого интерфейса, в примере это `Ethernet 2`:

   ```
   netsh interface ipv4 set subinterface "Ethernet 2" mtu=1450 store=persistent
   ```

1. Проверьте, что значение MTU изменилось:

   ```
   netsh interface ipv4 show subinterfaces
   ```