У меня есть iptables, работающие на Centos 7, использующие версию v1.4.21, но также протестированные на v1.6.0 (заметьте, я не перестраивал ядро, так как он говорит, что мне больше не нужно для расширений).
Я установил квоту, и она используется:
# iptables -nvx -L 192.168.2.5
Chain 192.168.2.5 (2 references)
pkts bytes target prot opt in out source destination
3639 3999378 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 quota: 4000000 bytes
142 175468 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
#
Затем, когда я добавляю любое другое правило в эту цепочку, существующее правило «сбрасывает» использование байтов и снова использует квоту:
# iptables -I 192.168.2.5 -m quota --quota 1000 -j ACCEPT
# iptables -nvx -L 192.168.2.5
Chain 192.168.2.5 (2 references)
pkts bytes target prot opt in out source destination
2 168 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 quota: 1000 bytes
7239 7998334 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 quota: 4000000 bytes
890 387931 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Даже если оно не превышено, такое поведение всегда добавляет к правилу сумму квоты, Мой единственный обходной путь - сам захватить байты и добавить их в квоту нового правила. Это хорошо работает, когда он уже превышен, но если нет, я могу пропустить байты из-за разрыва между чтением, вычислением, удалением и добавлением.
Читая другой вопрос, который вы связали и тестируете, я могу только сделать вывод, что модуль квоты не очень полезен: сбрасывается всякий раз, когда что-то изменяется.
Вот почему есть другой модуль под названием quota2 ! Это не часть iptables, а часть xtables-addons. В Debian он доступен и компилируется при установке с помощью xtables-addons-dkms. Я думаю, вам придется скомпилировать его самостоятельно в CentOS7.
Три выдержки из справочной страницы (можно найти здесь: xtables-addons.8 )
Значение счетчика можно прочитать и сбросить через procfs, тем самым сделав это сопоставление минималистичным бухгалтерским инструментом.
.
- name name
Присвойте счетчику определенное имя. Эта опция должна присутствовать,
Квота отображается в / proc / net / xt_quota / имя и является чтение / запись
- квота iq
Укажите начальную квоту для этого счетчика. Если счетчик уже существует, он не сбрасывается.
Это означает, что должна использоваться некоторая логика вне самого iptables (например, сохранение оставшихся квот и восстановление при загрузке, если вам пришлось перезагружать сервер), но это наверняка решит вашу проблему. проблемы.