Обрезка UDP-пакета
Есть тупая железка, которая шлёт клиентские запросы NTPv1 на 20 байт длиннее (68 вместо 48, 20 байт в конце просто забиты нулями), из-за чего chronyd сносит башку (он думает, что это аутентифицированные пакеты, видит неправильный Key-MAC и дропает их).
Хочу этой тупой железке попробовать сделать обрезание таких UDP-пакетов. Пока что с NFQUEUE не заморачивался, хочу чего-то попроще.
Вопрос: как? Пробовал tc-pedit
:
#!/usr/bin/env bash
LAN=enp3s2
case "$1" in
start)
tc qdisc add dev ${LAN} handle ffff: ingress
tc filter add dev ${LAN} parent ffff: protocol ip flower src_ip 192.168.1.55 ip_proto udp dst_port 123 action pedit munge offset 2 u16 set 0x30 pipe csum ip and udp
;;
stop)
tc qdisc del dev ${LAN} handle ffff: ingress
;;
esac
но сломал мозг (то, что я написал выше, не работает).
Железка подключена через сеть за enp3s2, пакеты идут через линуксовый роутер, на котором, собственно, и нужно провернуть трюк.