Назад | Перейти на главную страницу

Метод сброса 50% пакетов от общего количества

Я хочу, чтобы на моей машине приходило только 50% пакетов.

Я работаю над CentOS 5.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 в двух экземплярах, чтобы увеличить трафик)

while [ 1 ]; do
    rsh a.b.c.d pwd;
done

на двух системах. Но журнала не формируется.

  1. / var / log / messages разрешение -rw ------- root: root.
  2. / var / log / syslog нет.

Что мне не хватает?

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 на мосту или маршрутизаторе.

хотя это, очевидно, не применимо, пока вы просто DROPping в цепочке 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). Нет соответствия ipt_statistic общий объект для iptables исполняемый файл пользователя.