ネットワークインターフェイスのクォータを設定し、必要に応じてリセットできますか?
私の意図は、クォータ(500 MBなど)に達した場合、eth0がアウトバウンドネットワークトラフィックをブロックすることです。必要に応じてリセットすることもできます(おそらくクールダウン期間が過ぎた後)。
答え1
iptables~のquota
簡単にリセットできるように、専用のユーザーチェーンでmatchを使用できましたが、長い間破損しています(修正されたかどうかはわかりません)。アップデートがあるたびにリセットされます。無関係なルールが設定されました。これを見てください
あなたが使用できる:
quota2
~からxtablesプラグイン追加提供iptablesモジュールの場合、コンパイルが必要になる場合があります(通常はDebianにxtables-addons-dkmsをインストールすると自動的に処理されますが、dkms mkbmdeb
(他のシステムでは).debバイナリバージョンビルドなどの特殊機能を使用しない限り、完全なコンパイルスイートをインポートします。 )))。これは/proc/net/xt_quota/
、クォータを取得するために読み取りまたはクォータをリセットするために書き込みを介していくつかの対話を実行します。最新技術に対応して
quota
使用nftables。で使用する場合名前付き(他の同様のオブジェクトから)独立してリセットできるステートフルオブジェクトです。以下は緩く適用された例です。nftables wiki:nft add table inet quotahandling nft add quota inet quotahandling eth0output over 500 mbytes nft add chain inet quotahandling dropafterquota '{ type filter hook output priority 0; policy accept; }' nft add rule inet quotahandling dropafterquota oif eth0 quota name "eth0output" drop
これシェア一致します(それで実行を続けます)減らす)これらはすべて定義されたクォータに達した場合にのみ制限されます。イーサネット0相互作用。
次の方法でクォータを一覧表示できます。
# nft list quota inet quotahandling eth0output table inet quotahandling { quota eth0output { over 500 mbytes used 991177 bytes } }
そして原子的にリストしてリセットします。
nft reset quota inet quotahandling eth0output