Add helper script to block localhost ports

This commit is contained in:
ionutboangiu
2024-12-17 15:48:31 +02:00
committed by Dan Christian Bogos
parent 0f5f65a71b
commit ea7313a0b6

43
data/scripts/block-ports.sh Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
usage() {
echo "Usage: $(basename "$0") -p PORT[,PORT...] [-d SECONDS]"
echo "Example: $(basename "$0") -p 8021,2014 -d 300"
exit 1
}
# Set default duration
DURATION=10
# Parse arguments
while getopts "p:d:h" opt; do
case $opt in
p) IFS=',' read -r -a PORTS <<< "$OPTARG" ;;
d) DURATION="$OPTARG" ;;
*) usage ;;
esac
done
# Check required arguments
[[ ${#PORTS[@]} -eq 0 ]] && usage
cleanup() {
sudo tc qdisc del dev lo root 2>/dev/null
echo "Traffic restored"
}
# Set up cleanup on script exit
trap cleanup EXIT INT TERM
# Block ports
echo "Blocking ports ${PORTS[*]} for $DURATION seconds..."
sudo tc qdisc add dev lo root handle 1: prio
sudo tc qdisc add dev lo parent 1:3 handle 30: netem loss 100%
for port in "${PORTS[@]}"; do
sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip dport "$port" 0xffff flowid 1:3
sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport "$port" 0xffff flowid 1:3
done
sleep "$DURATION"