Настроить MTU при включении защиты от DDoS-атак
При включении защиты Yandex DDoS Protection рекомендуется задавать значение MTU равным 1450 байт.
Внимание
Если вы включите DDoS Protection и оставите значение MTU по умолчанию, возможны потери сетевого трафика.
Подробнее о параметрах MTU и MSS в Yandex Cloud читайте в разделе MTU и TCP MSS.
Настроить MTU
На ВМ с Ubuntu Linux 20.04 или 22.04
-
Подключитесь к виртуальной машине по протоколу SSH:
ssh <имя_пользователя>@<IP-адрес_ВМ> -
Задайте значение MTU равным
1450с помощью командыnetplan. Выполните команду:sudo netplan set ethernets.eth0.mtu=1450 && sudo netplan apply -
Проверьте новые значения MTU и MSS:
ip link show eth0 | grep mtu ss -i | grep mss
На рабочих узлах кластера Managed Service for Kubernetes
-
Создайте YAML-манифест DaemonSet следующего содержания:
--- 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.yandex/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. -
Примените созданный манифест в кластере Managed Service for Kubernetes:
kubectl -f ds-mtu-fix.yml -
Подключитесь к любому рабочему узлу в кластере по протоколу SSH и проверьте значения MTU и MSS:
ssh <имя_пользователя>@<IP-адрес_рабочего_узла> ip link show eth0 | grep mtu ss -i | grep mss
При использовании Cilium
Примечание
-
Создайте манифест ресурса
CiliumNodeConfig:apiVersion: cilium.io/v2alpha1 kind: CiliumNodeConfig metadata: namespace: kube-system name: mtu-global spec: # Чтобы применить настройку ко всем узлам, оставьте nodeSelector пустым: nodeSelector: {} # Чтобы применить только к узлам с определенными метками, укажите их: # nodeSelector: # matchLabels: # <ключ_метки>: <значение_метки> defaults: mtu: "1400"Сохраните его в файл с любым именем, например
cilium-mtu.yaml. -
Примените манифест в кластере Managed Service for Kubernetes:
kubectl apply -f cilium-mtu.yaml -
Перезапустите DaemonSet Cilium, чтобы изменения вступили в силу:
kubectl rollout restart daemonset/cilium -n kube-system -
Пересоздайте поды, которые должны работать с новым значением MTU.
На ВМ с Windows Server
-
Подключитесь к ВМ с Windows Server по протоколу RDP и запустите Windows PowerShell.
-
Уточните название интерфейса на котором необходимо изменить MTU:
netsh interface ipv4 show subinterfaces -
Задайте значение MTU равным
1450для нужного сетевого интерфейса, в примере этоEthernet 2:netsh interface ipv4 set subinterface "Ethernet 2" mtu=1450 store=persistent -
Проверьте, что значение MTU изменилось:
netsh interface ipv4 show subinterfaces