にゃんきち(੭ˊ꒳​ˋ)੭✧

はっひゃー!借金返済がんばるば~ଘ(੭ˊ꒳​ˋ)੭✧

YouTubeを一定時間見れなくする パケット量を検知して通信を遮断するスクリプト

概要

  • https通信が1000パケット届いたら1分間パケット転送を無効化し、通信を遮断する。
  • 1分経過したら、パケット転送を有効化し、通信を再開する。

効果

  • 子供のYouTube、ゲームの熱中がとても心配である。
  • なのでこのスクリプトを仕掛けておき、一定の通信量を検知したら通信を遮断する。

TrafficGuard.sh

#!/bin/bash

# インターフェースと条件を設定
INTERFACE="any"
PACKET_THRESHOLD=1000

# tcpdumpでパケットをキャプチャし、awkでフィルタリング
tcpdump -i $INTERFACE port 443 -l | awk -v threshold=$PACKET_THRESHOLD '
{
    count++;
    if (count >= threshold) {
        system("echo \"パケット数が" count "を超えました\"")
        system("echo \"net.ipv4.ip_forward = 0\" > /etc/sysctl.d/net.ipv4.ip_forward.conf")
        system("sysctl -p /etc/sysctl.d/net.ipv4.ip_forward.conf")
        system("sleep " 60) #1min sleep

        count = 0; # カウントをリセット
        system("echo \"net.ipv4.ip_forward = 1\" > /etc/sysctl.d/net.ipv4.ip_forward.conf")
        system("sysctl -p /etc/sysctl.d/net.ipv4.ip_forward.conf")
    }
    fflush(stdout);
}'