2019-06-03 Настороженно Относиться К Необкатанным Решениям
Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
правила_разработки:как_не_надо_делать:2019-06-03_настороженно_относиться_к_необкатанным_решениям [03.06.2019 11:22] nikolay_carbonsoft1 создано |
правила_разработки:как_не_надо_делать:2019-06-03_настороженно_относиться_к_необкатанным_решениям [03.06.2019 11:34] nikolay_carbonsoft1 Approved(nikolay_carbonsoft1 2019/06/03 11:34) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | **Постановка задачи:** Нужно было добавить LOG-правило в iptables для логирования определенного трафика. | ||
+ | |||
+ | **Как сделали:** Чтобы защитить логи от флуда - было решено использовать лимит, наиболее гибко под задачу можно было настроить hashlimit. Так и сделали: | ||
+ | |||
+ | <code bash> | ||
+ | iptables -A reductor_forward -p tcp -m hashlimit --hashlimit-upto 10/min --hashlimit-mode srcip,dstip --hashlimit-name service1_log --hashlimit-htable-expire 120000 -m set --match-set service1_dst dst,dst -j LOG --log-prefix "Service1: " | ||
+ | </code> | ||
+ | |||
+ | **В чем была проблема:** Есть простое и "обкатанное в продакшене" правило limit, опыта поведения правила hashlimit у нас не было. Нарушили много правил, таких как "не усложняй" и "не используй не обкатанные технологии". Но подвоха ни кто не ждал, тем более что модуль hashlimit идет в стандартной поставке. | ||
+ | |||
+ | После изменений и отладки цепочки в iptables на большом трафике, заподозрили, что пакеты где-то теряются. Добавили правила-счетчики, увидели: | ||
+ | |||
+ | <code bash> | ||
+ | 22 3571 all -- * * 0.0.0.0/0 10.90.1.23 | ||
+ | 453 35254 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 limit: up to 10/min burst 5 mode srcip-dstip htable-expire 120000 match-set service1_dst dst,dst LOG flags 0 level 4 prefix 'Service1: ' | ||
+ | 0 0 all -- * * 0.0.0.0/0 10.90.1.23 | ||
+ | </code> | ||
+ | |||
+ | Т.е. из-за правила log дропались пакеты в форварде! | ||
+ | |||
+ | **Как нужно было сделать:** нужно было использовать простое правило limit. | ||
+ | |||
+ | ~~OWNERAPPROVE~~ /*Не удаляйте эту строку и ниже!*/ | ||
+ | |||
+ | {(rater>id=1|name=Прочитал_правила_разработки:2019-06-03_настороженно_относиться_к_необкатанным_решениям|type=vote|trace=user|tracedetails=1)} | ||
+ | |||