Перейти к поиску
  1. Главная
  2. Продукты
  3. С-Терра Шлюз
  4. Настройка С-Терра Шлюз
  5. Общие настройки шлюза
  6. Работа с интерфейсами
  7. Добавление и удаление виртуальных сетевых интерфейсов
  8. GRE интерфейсы
  9. Решение проблем при использовании GRE и IPsec
  10. Процедура снятия DF-флага с поступающих IP пакетов

Процедура снятия DF-флага с поступающих IP пакетов

Поиск в комплекте Источник
Процедура снятия DF-флага с поступающих IP пакетов

Внимание!

Процедуры, описанные ниже, должны быть применены на обоих устройствах «С-Терра Шлюз».

Для того, чтобы снять DF-флаг на поступающих в сетевой интерфейс пакетах при помощи утилиты tc (traffic control) необходимо:

  1. Создать файл с названием zzz_tc_rule_for_clear_df в директории /etc/network/if-pre-up.d/ (данная директория выбрана с целью применения настроек утилиты tc при поднятии сетевого интерфейса):

root@sterragate:~# vim.tiny /etc/network/if-pre-up.d/zzz_tc_rule_for_clear_df

  1. Скопировать содержимое ниже в этот файл:

#!/bin/bash

# This script, using the "tc" utility, allows you to clear the DF flag from incoming IP packets.

INTERFACE="eth1"

if [[ "$IFACE" = $INTERFACE ]]; then

tc qdisc add dev $INTERFACE ingress >/dev/null 2>&1

tc filter del dev $INTERFACE parent ffff: handle 800::1 pref 1 protocol ip u32 >/dev/null 2>&1

tc filter add dev $INTERFACE parent ffff: pref 1 protocol ip handle 800::1 u32 match ip df action pedit munge ip df clear pipe action csum ip || echo "ERROR: Can not add rule to clear DF bit."

fi

  1. Изменить значение переменной INTERFACE в зависимости от того, куда будут приходить пакеты с DF-флагом (обычно это LAN-интерфейс, в данном случае – это eth1);
  2. Дать файлу право на исполнение:

root@sterragate:~# chmod u+x /etc/network/if-pre-up.d/zzz_tc_rule_for_clear_df

  1. Перезапустить интерфейс, на котором необходимо применить правила снятия DF-флага:

root@sterragate:~# ifdown eth1; ifup eth1

  1. Убедиться в том, что правила применились:

filter protocol ip pref 1 u32 chain 0

filter protocol ip pref 1 u32 chain 0 fh 800: ht divisor 1

filter protocol ip pref 1 u32 chain 0 fh 800::1 order 1 key ht 800 bkt 0 terminal flowid ??? not_in_hw (rule hit 25615671661 success 25615671661)

match 00004000/00004000 at 4 (success 25615671661 )

action order 1: pedit action pipe keys 1

index 21 ref 1 bind 1 installed 1217357 sec used 11948firstused 53 sec

key #0 at 4: val 00000000 mask ffffbfff

Action statistics:

Sent 3842261442165058738 bytes 2561561492685 pkt (dropped 0, overlimits 0 requeues 0)

backlog 0b 0p requeues 0

action order 2: csum (iph) action pass

index 1 ref 1 bind 1 installed 1217357 sec used 11948firstused 53 sec

Action statistics:

Sent 3842261442165058738 bytes 2561561492685 pkt (dropped 0, overlimits 0 requeues 0)

backlog 0b 0p requeues 0

Данный скрипт будет выполняться при запуске/перезапуске Шлюза и при переходе назначенного в скрипте сетевого интерфейса в состояние «Up».