私のマシンでは、50%のパケットだけを受信するようにしたいと思います。
私はcentOS5.5に取り組んでいます。
そのために私はネットで検索しました。 IPtablesを入手しました。 IPtablesのランダムパッチを使用しました。
コマンド
Sudo iptables -A INPUT -p icmp --icmp-type echo-request -m random --average 50 -j DROP
出力
iptables v1.3.5: Couldn't load match `random':/lib64/iptables/libipt_random.so: cannot open shared object file: No such file or directory
Try `iptables -h' or 'iptables --help' for more information.
しかし、上記はそのライブラリが欠落していることを示しています。
次に、合計の50%のパケットをドロップするにはどうすればよいですか。上記の方法を修正するか、新しい方法を提案してください。
これらのライブラリをIPtablesの既存のパッケージに追加する方法を教えてください。 [試しましたが、これらのライブラリはインターネット上にありません]
編集番号1
ドロップされたパケットのログをさらに記録する必要があるため、iptablesルールセットを次のように変更しました。
iptables -L -n -v
出力は[これはシステム1で実行されています]
Chain INPUT (policy ACCEPT 1875K packets, 114M bytes)
pkts bytes target prot opt in out source destination
23 2392 random_drops icmp -- * * 0.0.0.0/0 0.0.0.0/0 statistic mode random probability 0.500000
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 2121K packets, 206M bytes)
pkts bytes target prot opt in out source destination
Chain random_drops (1 references)
pkts bytes target prot opt in out source destination
23 2392 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix `dropped randomly: '
23 2392 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
次に、スクリプトを実行します(このスクリプトは、トラフィックを増やすために2つのインスタンスでシステム2で実行されています)
while [ 1 ]; do
rsh a.b.c.d pwd;
done
2つのシステムで。しかし、ログは形成されません。
何が足りないのですか?
CentOS 5.5には、ipt_randomモジュールもipt_statisticモジュールもプリインストールされていません。 CentosALTリポジトリ (ロシア語を失礼します)に戻り、そこから簡単にコンパイルできる統計モジュールを使用できます。
wget http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
# [...]
rpm -Uvh centalt-release*rpm
# [...]
yum install ipt_statistic
と実行中
Sudo iptables -A INPUT -p icmp --icmp-type echo-request -m statistic --mode random --probability 0.50 -j DROP
必要なルールが得られるはずです。
Netemのドキュメントからの注意:
警告
損失がローカルで(ブリッジやルーターではなく)使用される場合、損失は上位レベルのプロトコルに報告されます。これにより、TCPが再送信され、損失がなかったかのように動作する可能性があります。損失に対するプロトコルの応答をテストする場合は、ブリッジまたはルーターでnetemを使用するのが最適です。
ただし、INPUTチェーンでドロップしている限り、これは明らかに適用されません。
これはカーネル構成の問題です。 iptables-extensions(8)
を参照してください。statistic
モジュールについて説明しています。
iptables ... -m statistic --mode random --probability 0.5 ...
(必要に応じて...
を入力してください)。
これはカーネル構成CONFIG_NETFILTER_XT_MATCH_STATISTIC
であり、ここでモジュールに設定されています(Fedora 18、kernel-3.8.3-201.fc18.x86_64、iptables-1.4.16.2-5.fc18.x86_64)。 iptables
ユーザーランド実行可能ファイルに一致するipt_statistic
共有オブジェクトはありません。