Запретите IP, когда сервер получил объем данных от него

Это - Общие принтеры, не принтеры TCP/IP. Когда сервер, размещающий те общие принтеры, снизится, пользователи не смогут распечатать к тем принтерам. Вы могли бы рассмотреть добавление принтеров как принтеры TCP/IP. Тем путем пользователи должны только подключить к доле одно время, чтобы загрузить драйвер и затем после этого соединить и распечатать непосредственно к принтеру.

5
задан 9 May 2014 в 02:35
1 ответ

Вы можете использовать IPSET с параметрами тайм-аута и счетчика. Это будет выглядеть так:

#create ipset for accounting with default lifetime 300 secs
ipset create IP_QUOTA_SET hash:ip timeout 300 counters

#create separated rule chain
iptables --new-chain PER_IP_QOUTING

#send packets to chain
iptables -t filter -A INPUT \
  -i <in-iface> --dst <ip>  \
  -p tcp --dport <dstport>  \
  -j PER_IP_QUOTING

#if ip doesn't exist in the set, add it
iptables -t filter -A PER_IP_QUOTING    \
  -m set ! --match-set IP_QUOTA_SET src \
  -j SET --add-set IP_QUOTA_SET src --timeout 300

#if packet exists in the set, check bytes
#if byte counter > quota then close connection
#by sending of tcp-reset packet.
iptables -t filter -A PER_IP_QUOTING    \
  -m set --match-set IP_QUOTA_SET src   \
  --bytes-gt 1000 -j REJECT --reject-with tcp-rst

#pass other packets (for debug purpose)
iptables -t filter -A PER_IP_QUOTING \
  -j RETURN

В этом случае вы можете проверить список и отредактировать его с помощью команды ipset. Показать текущий список со счетчиками и таймаутами: ipset list IP_QUOTA_SET.

Подробнее читайте в документации.

3
ответ дан 3 December 2019 в 01:51

Теги

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