iptables превышает квоту при добавлении нового правила

У меня есть 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

Даже если оно не превышено, такое поведение всегда добавляет к правилу сумму квоты, Мой единственный обходной путь - сам захватить байты и добавить их в квоту нового правила. Это хорошо работает, когда он уже превышен, но если нет, я могу пропустить байты из-за разрыва между чтением, вычислением, удалением и добавлением.

3
задан 13 April 2017 в 15:14
1 ответ

Читая другой вопрос, который вы связали и тестируете, я могу только сделать вывод, что модуль квоты не очень полезен: сбрасывается всякий раз, когда что-то изменяется.

Вот почему есть другой модуль под названием quota2 ! Это не часть iptables, а часть xtables-addons. В Debian он доступен и компилируется при установке с помощью xtables-addons-dkms. Я думаю, вам придется скомпилировать его самостоятельно в CentOS7.

Три выдержки из справочной страницы (можно найти здесь: xtables-addons.8 )

Значение счетчика можно прочитать и сбросить через procfs, тем самым сделав это сопоставление минималистичным бухгалтерским инструментом.

.

- name name
Присвойте счетчику определенное имя. Эта опция должна присутствовать,

Квота отображается в / proc / net / xt_quota / имя и является чтение / запись

- квота iq
Укажите начальную квоту для этого счетчика. Если счетчик уже существует, он не сбрасывается.

Это означает, что должна использоваться некоторая логика вне самого iptables (например, сохранение оставшихся квот и восстановление при загрузке, если вам пришлось перезагружать сервер), но это наверняка решит вашу проблему. проблемы.

2
ответ дан 3 December 2019 в 06:57

Теги

Похожие вопросы