Linuxでは、次の目的で、tc
、iptables
などのツールを使用して、ネットワークインターフェイス上のネットワークトラフィックを制御/形成できますか?
もしそうなら、それをどのように行うのですか?
Nrには答えがありません。 2(下記参照)。 1.と3.では、limitモジュールを使用できます。
ネットワークパケット数のレートを制御します。
iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT
開いている接続の総数を制御するTCP接続(1秒あたり)):
iptables -A INPUT -m state -m tcp -p tcp --dport 80 --state RELATED,ESTABLISHED -m limit --limit 10/second -j ACCEPT
またはhashlimitモジュールを使用できます。
ネットワークパケット数のレートを制御します。
iptables -A INPUT -m hashlimit -m tcp -p tcp --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-above 10/sec --hashlimit-burst 2 --hashlimit-htable-expire 30000 --hashlimit-name pktlimit -j DROP
開いている接続の総数を制御するTCP接続(1秒あたり)):
iptables -I INPUT -m hashlimit -m tcp -p tcp --dport 80 --hashlimit-above 10/sec --hashlimit-mode srcip --hashlimit-name connlimit -m state --state RELATED,ESTABLISHED -j DROP
次の項目を確認することで、hashlimitのパフォーマンスを監視できます。
cat /proc/net/ipt_hashlimit/pktlimit
cat /proc/net/ipt_hashlimit/connlimit
[〜#〜]編集[〜#〜]:
NAT=が支配的である世界では、nr。2で行うように、送信元IPアドレスの数を制限することは本当に意味がありますか?合計を制限する方が理にかなっていると思いますオープンの数TCP接続、このように:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
あなたの質問について1.)
ツールtc
を理解している限り、kbit
またはmbit
でレート/スループットを制御できます。 tc
のマンページには、
bまたはバイト単位の裸数。
質問の背景、意図、達成しようとしていること、および広範な解決策/トピックが明確でないため、 Archlinux のようなトラフィック制御のチュートリアルを参照したいと思います。
OpenVPNクライアントごとにTCでトラフィックシェーピング(レート制限)を行う方法 または 特定のIPアドレスのLinux制御パケットサイズ など、Serverfaultにもスレッドがあります。
彼らはあなたの質問にヒントを与えるかもしれません2.)と3.)も。