Ограничить частоту запросов к DNS серверу через iptables. Помогите с модулем recent

Я озадачился предотвращением использования моего публичного рекурсивного DNS сервера в качестве плеча для DDOSa. С PowerDNS Recursor RRL мне пока недоступны (в стабильной версии), поэтому решил ограничить количество запросов с одного IP с помощью iptables. Тестирую с помощью dnsperf. Правила следующие (вырезка касательно DNS):

Chain INPUT:
pkts bytes target prot opt in out source destination
5830 486K my-service all — * * 0.0.0.0/0 <my_ip> ctstate NEW

Chain my-service (1 references):
2429 161K rec-dns udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
Chain rec-dns (1 references)
pkts bytes target prot opt in out source destination
289 18908 DROP all — * * 0.0.0.0/0 0.0.0.0/0 recent: CHECK seconds: 20 name: DNSQF side: source mask: 255.255.255.255
25 1666 ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 recent: SET name: DNSQF side: source mask: 255.255.255.255

Настройка синтетическая, по логике должен проходить один запрос в 20 секунд. Но на практике имею следующее:
tail -n 1000 < queryfile-example-current | ./dnsperf -s <my_ip>
DNS Performance Testing Tool
Nominum Version 2.0.0.0

[Status] Command line: dnsperf -s <my_ip>
[Status] Sending queries (to <my_ip>)
[Status] Started at: Tue Apr 2 17:36:22 2013
[Status] Stopping after 1 run through file
[Timeout] Query timed out: msg id 88
[Timeout] Query timed out: msg id 89
[Timeout] Query timed out: msg id 90
[Timeout] Query timed out: msg id 91
[Timeout] Query timed out: msg id 92
[Timeout] Query timed out: msg id 93
[Timeout] Query timed out: msg id 94
[Timeout] Query timed out: msg id 95
[Timeout] Query timed out: msg id 96
[Timeout] Query timed out: msg id 97
[Timeout] Query timed out: msg id 98
[Timeout] Query timed out: msg id 99
[Timeout] Query timed out: msg id 100
[Timeout] Query timed out: msg id 431
[Timeout] Query timed out: msg id 538
Warning: received a response with an unexpected (maybe timed out) id: 538
[Status] Testing complete (end of file)

Statistics:

Queries sent: 1000
Queries completed: 985 (98.50%)
Queries lost: 15 (1.50%)

Response codes: NOERROR 850 (86.29%), SERVFAIL 11 (1.12%), NXDOMAIN 124 (12.59%)
Average packet size: request 37, response 101
Run time (s): 7.061558
Queries per second: 139.487631

Average Latency (s): 0.328673 (min 0.010320, max 4.438407)
Latency StdDev (s): 0.466997

Откуда 139 запросов в секунду? оО Как так? При сразу же повторенном запросе ситуация не меняется. Если сделать iptables -Z, то при первом после этого запросе статы в iptables будут следующие:
pkts bytes target prot opt in out source destination
0 0 DROP all — * * 0.0.0.0/0 0.0.0.0/0 recent: CHECK seconds: 20 name: DNSQF side: source mask: 255.255.255.255
1 86 ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 recent: SET name: DNSQF side: source mask: 255.255.255.255

То есть либо я нифига не понял с правилами модуля recent, либо где-то что-то кешируется. Запущенный unscd я отключил на всякий случай. Мозги уже плавятся, подскажите, пожалуйста.
  • Вопрос задан
  • 4981 просмотр
Пригласить эксперта
Ответы на вопрос 1
@1x1
25 1666 ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 recent: SET name: DNSQF side: source mask: 255.255.255.255

Уберите -j ACCEPT из этого правила
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы