#!/bin/bash # Зеркало RADIUS accounting (udp/1813) между 10.16.20.226 <-> 10.16.20.231 в GRETAP на 10.16.20.225 set -e IF=ens18 LOCAL=10.16.20.226 REMOTE=10.16.20.225 PEER=10.16.20.231 TUN=gre-mirror start() { modprobe ip_gre; modprobe cls_flower; modprobe act_mirred ip link add $TUN type gretap local $LOCAL remote $REMOTE ttl 64 ip link set $TUN up tc qdisc add dev $IF clsact # Входящие от 231 (запросы на 1813 или ответы с 1813) tc filter add dev $IF ingress protocol ip prio 1 flower ip_proto udp src_ip $PEER dst_port 1813 \ action mirred egress mirror dev $TUN tc filter add dev $IF ingress protocol ip prio 2 flower ip_proto udp src_ip $PEER src_port 1813 \ action mirred egress mirror dev $TUN # Исходящие на 231 tc filter add dev $IF egress protocol ip prio 1 flower ip_proto udp dst_ip $PEER dst_port 1813 \ action mirred egress mirror dev $TUN tc filter add dev $IF egress protocol ip prio 2 flower ip_proto udp dst_ip $PEER src_port 1813 \ action mirred egress mirror dev $TUN } stop() { tc qdisc del dev $IF clsact 2>/dev/null || true ip link del $TUN 2>/dev/null || true } case "$1" in start) start ;; stop) stop ;; restart) stop; start ;; *) echo "Usage: $0 {start|stop|restart}"; exit 1 ;; esac