Процедура снятия DF-флага с поступающих IP пакетов
Процедура снятия DF-флага с поступающих IP пакетов
Внимание! | Процедуры, описанные ниже, должны быть применены на обоих устройствах «С-Терра Шлюз». |
Для того, чтобы снять DF-флаг на поступающих в сетевой интерфейс пакетах при помощи утилиты tc (traffic control) необходимо:
- Создать файл с названием 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
- Скопировать содержимое ниже в этот файл:
#!/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
- Изменить значение переменной INTERFACE в зависимости от того, куда будут приходить пакеты с DF-флагом (обычно это LAN-интерфейс, в данном случае – это eth1);
- Дать файлу право на исполнение:
root@sterragate:~# chmod u+x /etc/network/if-pre-up.d/zzz_tc_rule_for_clear_df
- Перезапустить интерфейс, на котором необходимо применить правила снятия DF-флага:
root@sterragate:~# ifdown eth1; ifup eth1
- Убедиться в том, что правила применились:
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».