Jump to content
Калькуляторы
Блокировка веб ресурса  

553 members have voted

  1. 1. Для блокировка используем



Блокировка сайтов провайдерами маневры с DNS

6 минут назад, flow-control сказал:

extfilter будет всегда занимать 100% и

вроде плохо работает с 2 процессорами....

+ нужно настроить

; Порт для отправки уведомлений через dpdk
;[port 1]
;type = sender
; На какой mac адрес отправлять пакеты

;mac = 00:01:02:03:04:05

 

У вас ответы посылает сетевая карта которая находится в системе, а не в dpdk. возможно дело в этом.

Читал, что с многопроцессорными системами не дружит. Но и вешал специально только на один процессор. Сетевая на одной шине с 0-процессором. Т.е. загрузка 100% это нормально? Получается мониторить нужно только статистику, а не загрузку CPU?

 

А вот с этим не понял 

Цитата

; Порт для отправки уведомлений через dpdk

Что это и для чего нужно? Речь о пакетах, которые летят в ответ на запрос к заблокированному ресурсу?

Share this post


Link to post
Share on other sites
1 час назад, SokolovS сказал:

загрузка 100% это нормально?

Да

 

1 час назад, SokolovS сказал:

Речь о пакетах, которые летят в ответ на запрос к заблокированному ресурсу?

Да. + через dpdk ответ уйдет быстрее.

 

Главное что бы в логе missed packets был равен 0, думаю одного X5675 для 100kpps достаточно .

У меня i5-3450 и ~80kpps, missed packets: 0. на ночных проверках ревизором имею 3-6 пропусков , грешу на говноДелинк dgs-3627g, с которого зеркалирую трафик.

PS на форуме советуют связку extfilter + отдельно для ревизора nfqfilter.

Edited by flow-control

Share this post


Link to post
Share on other sites
8 часов назад, flow-control сказал:

Да

 

Да. + через dpdk ответ уйдет быстрее.

 

Главное что бы в логе missed packets был равен 0, думаю одного X5675 для 100kpps достаточно .

У меня i5-3450 и ~80kpps, missed packets: 0. на ночных проверках ревизором имею 3-6 пропусков , грешу на говноДелинк dgs-3627g, с которого зеркалирую трафик.

PS на форуме советуют связку extfilter + отдельно для ревизора nfqfilter.

 

можете поделиться своим конфигом?

Share this post


Link to post
Share on other sites

конфиг

 

 


; Переводить имя хоста в прописные буквы.
lower_host = true

domainlist = /root/rkn/files/domains
urllist = /root/rkn/files/urls
ssllist = /root/rkn/files/ssl_host

hostlist = /root/rkn/files/hosts

; Список ip адресов/сетей для блокировки ssl если нет server_name в ssl hello пакете. Загружается если block_undetected_ssl = true.
sslips = /root/rkn/files/ssl_ips

; если false, то будет послан rst пакет вместо редиректа. Default: false
http_redirect = true

redirect_url = http://zapret.local.ru/

; HTTP код ответа. default: 302 Moved Temporarily
http_code = 301 Moved Permanently

; Что добавлять в redirect_url, line - строка из файла url, url - запрещенный url, none - ничего
url_additional_info=none

; посылать tcp rst в сторону сервера от имени клиента. Default: false
rst_to_server = true

; Default: 0 - disable
statistic_interval = 60

; файл статистики (для extfilter-cacti)
statisticsfile = /var/run/extFilter_stat

match_url_exactly = false
url_normalization = true
remove_dot = false
num_of_senders = 4
memory_channels = 2

; Default: false
;block_undetected_ssl = true

;block_ssl_no_sni = true

core_mask = 7

;cli_port = 9999
;cli_address = 127.0.0.1

; dpdk порт, где анализировать трафик
;dpdk_port = 0

[port 0]
queues = 0,1; 1,2

[port 1]
type = sender
mac = 01:35:56:f3:f4:01

; Группа оповещения 0
;[notify 0]
;http_code = 302 Found
;redirect_url = http://announce.example.com/?
;rst_to_server = false
; через какое время делать редирект (секунды)
;period = 1800
; количество редиректов, если 0 - не ограничено
;repeat = 0

[dpi]
max_active_flows_ipv4 = 100000
max_active_flows_ipv6 = 4000

[logging]
loggers.root.level = information
;loggers.root.level = debug
loggers.root.channel = fileChannel
channels.fileChannel.class = FileChannel
channels.fileChannel.path = /var/log/extFilter.log
channels.fileChannel.rotation = 10 M
channels.fileChannel.purgeCount = 4
channels.fileChannel.archive = timestamp
channels.fileChannel.formatter.class = PatternFormatter
channels.fileChannel.formatter.pattern = %Y-%m-%d %H:%M:%S.%i [%P] %p %s - %t
channels.fileChannel.formatter.times = local

 

Edited by flow-control

Share this post


Link to post
Share on other sites
10 часов назад, flow-control сказал:

У меня i5-3450 и ~80kpps, missed packets: 0. на ночных проверках ревизором имею 3-6 пропусков , грешу на говноДелинк dgs-3627g, с которого зеркалирую трафик.

У вас ревизор находится за NAT ?

Share this post


Link to post
Share on other sites
Только что, max1976 сказал:

У вас ревизор находится за NAT ?

нет, сразу в интернете

Share this post


Link to post
Share on other sites
Только что, flow-control сказал:

нет, сразу в интернете

Тогда не должно быть пропусков, если все пакеты попадают на фильтр и ответы гарантированно доходят до ревизора. В новой версии фильтра (ветка exp) есть опция:

; Количество повторных пакетов в сторону клиента (от 1 до 3)
; answer_duplication = 1

позволяющая дублировать ответы от фильтра в случае их возможной потери в сети.

Share this post


Link to post
Share on other sites
12 часов назад, SokolovS сказал:

Читал, что с многопроцессорными системами не дружит. Но и вешал специально только на один процессор. Сетевая на одной шине с 0-процессором. Т.е. загрузка 100% это нормально? Получается мониторить нужно только статистику, а не загрузку CPU?

Дружит. У меня xen 2х5620 выделено по 2 ядра с каждого процессора. Все ОК. По собственным проверкам 2-6(скриптом, это же руками не пускает ) , по ревизору от 0-20. Причем я списывался с проверяющими, они сказали что прилетает 200ОК но содержимое пустое, и это не считается пропуском. Ревизор за натом, в качестве ната используется mikrotik 941.

Edited by big-town

Share this post


Link to post
Share on other sites
21 час назад, big-town сказал:

Вероятно этот вопрос адресовался мне. На специальной выделенной машинке, постоянно крутится скрипт вида(автор скрипта не я, его здесь кто то выкладывал на форуме):

Не совсем хорошо этот скрипт отрабатывать будет. Много случаев, когда сотни/тысячи адресов на одном хосте, и после ~5 запросов в секунду ваша машинка блокируется, оставшиеся адреса фактически проверены не будут.

 

Ради простой проверки работоспособности достаточно проверить десяток случайных адресов из списка.

Share this post


Link to post
Share on other sites

Версия с гита от 16 февраля. В последние время почти раз в сутки уходит в coredump :(

Не могу понять в чем причина. Трейс такой:

 

Spoiler

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/local/bin/extFilter --daemon --pidfile=/var/run/extFilter.pid --config-fil'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007fe9d2b95428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
54    ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
[Current thread is 1 (Thread 0x7fe9d166d700 (LWP 7853))]
(gdb) bt
#0  0x00007fe9d2b95428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00007fe9d2b9702a in __GI_abort () at abort.c:89
#2  0x00007fe9d3afb365 in Poco::SignalHandler::handleSignal(int) () from /usr/local/lib/libPocoFoundation.so.46
#3  <signal handler called>
#4  0x0000000000592740 in ac_trie_settext(ac_trie*, ac_text*, int) ()
#5  0x000000000058f6b8 in WorkerThread::checkHTTP(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, dpi_pkt_infos*) ()
#6  0x000000000059063e in host_cb(dpi_http_message_informations*, unsigned char const*, unsigned int, dpi_pkt_infos*, void**, void*) ()
#7  0x00000000005aec3c in on_value ()
#8  0x00000000005b1a25 in http_parser_execute ()
#9  0x00000000005af312 in check_http ()
#10 0x00000000005ade5a in dpi_stateless_get_app_protocol ()
#11 0x000000000058949d in WorkerThread::getAppProtocol(unsigned char*, unsigned long, unsigned int, dpi_pkt_infos*) ()
#12 0x000000000058ad8d in WorkerThread::identifyAppProtocol(unsigned char const*, unsigned int, unsigned int, unsigned char*, unsigned int) ()
#13 0x000000000058c3bd in WorkerThread::analyzePacket(rte_mbuf*, unsigned long) ()
#14 0x000000000058d80b in WorkerThread::run(unsigned int) ()
#15 0x00000000005858a4 in dpdkWorkerThreadStart(void*) ()
#16 0x00000000005528fb in eal_thread_loop ()
#17 0x00007fe9d2f316ba in start_thread (arg=0x7fe9d166d700) at pthread_create.c:333
#18 0x00007fe9d2c673dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:74
#19 0x0000000000000000 in ?? ()
(gdb) 


 

 

Share this post


Link to post
Share on other sites
25 минут назад, Huko сказал:

Версия с гита от 16 февраля. В последние время почти раз в сутки уходит в coredump :(

Это происходит в момент подачи сигнала HUP ?

Share this post


Link to post
Share on other sites
8 minutes ago, max1976 said:

то происходит в момент подачи сигнала HUP ?

Чаще всего да, по крайне мере именно это coredump

Edited by Huko

Share this post


Link to post
Share on other sites
3 минуты назад, Huko сказал:

Чаще всего да

В логах есть что-то похожее на:

Цитата

Something wrong with worker thread

 

?

Share this post


Link to post
Share on other sites
3 часа назад, ixi сказал:

Не совсем хорошо этот скрипт отрабатывать будет. Много случаев, когда сотни/тысячи адресов на одном хосте, и после ~5 запросов в секунду ваша машинка блокируется, оставшиеся адреса фактически проверены не будут.

 

Ради простой проверки работоспособности достаточно проверить десяток случайных адресов из списка.

Бред полный.

Share this post


Link to post
Share on other sites
21 minutes ago, max1976 said:

В логах есть что-то похожее на:

Something wrong with worker thread

?

Нет, ничего подозрительного в логах нет

Share this post


Link to post
Share on other sites
2 часа назад, Huko сказал:

Нет, ничего подозрительного в логах нет

Остается только один вариант - нет свободной памяти (обычной, не для DPDK).

Share this post


Link to post
Share on other sites
8 часов назад, max1976 сказал:

Тогда не должно быть пропусков, если все пакеты попадают на фильтр и ответы гарантированно доходят до ревизора. В новой версии фильтра (ветка exp) есть опция:


; Количество повторных пакетов в сторону клиента (от 1 до 3)
; answer_duplication = 1

позволяющая дублировать ответы от фильтра в случае их возможной потери в сети.

exp это экспериментальная ветка?

 

19 часов назад, flow-control сказал:

Да

 

Да. + через dpdk ответ уйдет быстрее.

 

Главное что бы в логе missed packets был равен 0, думаю одного X5675 для 100kpps достаточно .

У меня i5-3450 и ~80kpps, missed packets: 0. на ночных проверках ревизором имею 3-6 пропусков , грешу на говноДелинк dgs-3627g, с которого зеркалирую трафик.

PS на форуме советуют связку extfilter + отдельно для ревизора nfqfilter.

 

Прошу прощения, но еще кучка вопросов :)
Можно ответы отправлять на один из портов, которые анализируются или отдельный выделять?

MAC-адрес в конфиге это адрес назначения или источника?

Сколько памяти (hugapages) выделять под DPDK?

Как должен быть настроен интерфейс с обратной стороны? Сейчас у меня там просто:

interface GigabitEthernet3/29
 description ExtFilter_Mirror
 switchport
 switchport mode trunk

interface GigabitEthernet3/30
 description ExtFilter_Mirror
 switchport
 switchport mode trunk

monitor session 1 source vlan 15 tx
monitor session 1 destination interface Gi3/29
monitor session 2 source vlan 304 , 1128 tx
monitor session 2 destination interface Gi3/30

VLAN: 15, 304, 1128 это аплинки. Сама железка это BGP-бордер.

 

P.S.: 100% загрузка это что эмуляция realtime такая? Там бесконечный цикл(ы)?

Этот вопрос снимается. Почитал как работает DPDK.

Edited by SokolovS

Share this post


Link to post
Share on other sites
4 часа назад, SokolovS сказал:

MAC-адрес в конфиге это адрес назначения или источника?

Сколько памяти (hugapages) выделять под DPDK?

MAC-адрес интерфейса который смотрит в сторону абонентов

Я выделил под dpdk 8Gb ram. (~80k pps)

Про остальное не понял... Вам, наверное ,лучше зеркалировать rx трафик с порта который смотрит в сторону абонентов и направлять ответы extfilter в тот же vlan .

 

У меня, примерно такая схема:

 

ext.jpg

Edited by flow-control

Share this post


Link to post
Share on other sites
2 часа назад, flow-control сказал:

MAC-адрес интерфейса который смотрит в сторону абонентов

Так, уже понятней. Только у нас на BGP-бордере в сторону абонентов смотрят 2 L3-интерфейса и соответственно два шлюза (один для тех кто за NAT-ом). Для такого варианта есть какое-то решение?

Памяти выделил 4Гб, missed по  нулям, в пике сегодня до 150 kpps.

Share this post


Link to post
Share on other sites
6 минут назад, SokolovS сказал:

на BGP-бордере в сторону абонентов смотрят 2 L3-интерфейса

тут наверно нужно или два extfilter или два порта настроенных как sender в vlan для юзеров с NAT и в vlan юзеров с рельными.

даже не знаю, может Max подскажет....

Share this post


Link to post
Share on other sites

тогда вариант с ответами через dpdk не годится и нужны обычные настроенные интерфейсы под контролем ядра. Я отдаю ответы в бордер. А уже он отдает кому надо

Share this post


Link to post
Share on other sites
16 hours ago, max1976 said:

Остается только один вариант - нет свободной памяти (обычной, не для DPDK).

Подскажите, а что должен показывать вывод 

# hugeadm --pool-list

Такое впечатление, что у меня не отработали параметры загрузки "default_hugepagesz=1G hugepagesz=1G hugepages=4" и hugepages установлены по дефолту на 2Мб

Share this post


Link to post
Share on other sites
19 часов назад, big-town сказал:

Бред полный.

И тем не менее, в статистике есть хосты, где [без интервала между запросами] после N блокировок идут сплошные таймауты на connect

 

35 минут назад, Huko сказал:

Такое впечатление, что у меня не отработали параметры загрузки "default_hugepagesz=1G hugepagesz=1G hugepages=4" и hugepages установлены по дефолту на 2Мб

Не все процессоры поддерживают 1G

Share this post


Link to post
Share on other sites
4 minutes ago, ixi said:

И тем не менее, в статистике есть хосты, где [без интервала между запросами] после N блокировок идут сплошные таймауты на connect

 

Не все процессоры поддерживают 1G

А как узнать сколько поддерживает Intel(R) Xeon(R) CPU  E5520  @ 2.27GHz ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now