Перейти к содержимому
Калькуляторы
Блокировка веб ресурса  

565 пользователей проголосовало

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



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

https не переводит на страницу с объяснением блокировки, а пишет, что ошибка при установлении защищённого соединения.

 

Https не редиректит. nfqfilter отсылает rst пакет клиенту, поэтому и возникает ошибка при установлении защищенного соединения с запрещенным сайтом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

max1976

Спасибо за софтину.

Фильтр прекрасно работал до вчерашнего вечера, но теперь nfqfilter падает после запуска, при включенном дебаге последние записи в логах - добавление записей из файла /contrib/hosts и все...ошибок нет.

Если уровень логов по умолчанию, то последняя запись: "Warning Application - Pattern '247.caivp.biz/?▒▒▒▒▒_▒▒▒▒▒▒/' already present database from file /usr/local/etc/contrib/urls"

Может, у кого то аналогичная проблема?

Изменено пользователем oret

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

max1976

Спасибо за софтину.

Фильтр прекрасно работал до вчерашнего вечера, но теперь nfqfilter падает после запуска, при включенном дебаге последние записи в логах - добавление записей из файла /contrib/hosts и все...ошибок нет.

Если уровень логов по умолчанию, то последняя запись: "Warning Application - Pattern '247.caivp.biz/?▒▒▒▒▒_▒▒▒▒▒▒/' already present database from file /usr/local/etc/contrib/urls"

Может, у кого то аналогичная проблема?

 

У меня работает без проблем. Попробуйте запустить в режиме приложения (запуск из консоли с указанием файла конфигурации -c /path/to/file) и посмотреть из-за чего происходит выход из программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня работает без проблем. Попробуйте запустить в режиме приложения (запуск из консоли с указанием файла конфигурации -c /path/to/file) и посмотреть из-за чего происходит выход из программы.

Перелопатил все возможные причины - вроде все нормально. Восстановил виртуалку с фильтром из снапшота - все работает. По всей видимости, есть бэд-блоки на винтах, и либо сам nfqfilter либо необходимые ему файлы попадали туда.

Спасибо за совет, посмотрю как дальше будет себя вести.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Есть предложение по небольшой оптимизации конфига для квагги:

- встроить агрегацию IP в генератор конфига make_files.pl,

 

на списке IP только из реестра при агрегации список сокращается примерно на 5% (~ на 1100 записей)

по списку IP с дополнительным резолвом эффект будет чуть выше.

Можно использовать например код из Net::CIDR::Lite; (что-то вроде $cidr=Net::CIDR::Lite->new(); $cidr->add_any($_); $cidr->list();)

 

Также по опыту в последних кваггах vtysh нормально берет конфиг разом из STDIN (исключиться построчный вызов vtysh)

 

 

 

P.S. возможная проблема при агрегации - удаление IP из реестра при ранее агрегированном блоке

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а есть какието альтернативные наработки в плане генерации списка адресов для квагги?

пробовал на двух разных виртуалках и физических серверах, так и не получилось запустить адекватный резолвинг, оно сутками набирает свой кэш и все равно никак не угонится за актуальным состоянием адресов сервисов

 

К самому фильтру претензий нет, все ок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а есть какието альтернативные наработки в плане генерации списка адресов для квагги?

пробовал на двух разных виртуалках и физических серверах, так и не получилось запустить адекватный резолвинг, оно сутками набирает свой кэш и все равно никак не угонится за актуальным состоянием адресов сервисов

 

По собственному опыту проблемы возникают с ресурсами, которые хостятся на амазоне (52.х.х.х и 54.х.х.х) и с youtube. Решение - прогонять весь трафик идущий на амазон и youtube через фильтр путем добавления соответствующих префиксов в конфиг квагги и в файлы из каталога /contrib для того, чтобы nfqfilter мог посылать rst серверам с ip адресами из диапазона адресов, прописанных в файлах /contrib.

Но, насколько я понимаю, сейчас скрипт zapret.pl работает только с одиночными ip (к сожалению, не могу добавить данный функционал сам, т.к. совсем не знаю perl).

Главный вопрос - сможет ли nfqfilter переварить такой объем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть предложение по небольшой оптимизации конфига для квагги:

- встроить агрегацию IP в генератор конфига make_files.pl,

 

на списке IP только из реестра при агрегации список сокращается примерно на 5% (~ на 1100 записей)

по списку IP с дополнительным резолвом эффект будет чуть выше.

Можно использовать например код из Net::CIDR::Lite; (что-то вроде $cidr=Net::CIDR::Lite->new(); $cidr->add_any($_); $cidr->list();)

 

Также по опыту в последних кваггах vtysh нормально берет конфиг разом из STDIN (исключиться построчный вызов vtysh)

 

Добавил данный функционал. Изменения опубликованы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

max1976

Спасибо, агрегация работает.

А есть возможность добавить в nfqfilter обработку префиксов как опцию, т.е., допустим, в отдельном файле задавать список префиксов, для примера - 52.0.0.0/8, и добавлять эти префиксы в /contrib/ssl_ips, а в nfqfilter добавить проверку - если dst ip пакета входит в одну из подсетей и нельзя перенаправить на заглушку, то посылать rst?

Чтобы не заморачиваться с конфигом квагги, трафик на эти префиксы можно перенаправлять статическими маршрутами на бордере, таким образом можно будет блочить казино, которые хостятся на амазоне и меняют ip раз в 5-10 минут (кеширование ip из более 1000 префиксов амазона займет очень много времени).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добавил данный функционал. Изменения опубликованы.

 

У меня новый скрипт подвисает на выполнении.

Видно, что в квагу агрегированные маршруты залились, но 'wr mem' не сделан и скрипт висит.

Возможно 2*exit после address-family ipv6 неправильно срабатывают.

В конце заливки конфига вместо exit (в print $wtr "exit\n";) лучше использовать "end\n" для выхода их конфига в командный CLI кваги (перед wr mem)

 

P.S.

Переставил строки с добавлением/удалением маршрутов перед router bgp и закончил конфиг "end\n" вместо exit.

Прошло нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня новый скрипт подвисает на выполнении.

Видно, что в квагу агрегированные маршруты залились, но 'wr mem' не сделан и скрипт висит.

Возможно 2*exit после address-family ipv6 неправильно срабатывают.

В конце заливки конфига вместо exit (в print $wtr "exit\n";) лучше использовать "end\n" для выхода их конфига в командный CLI кваги (перед wr mem)

 

Причина не в этом, а в самом vtysh. Видимо при большом количестве изменений он подвисает. Второй и последующий запуски проходят без проблем, т.к. изменений мало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно 2*exit после address-family ipv6 неправильно срабатывают.

В конце заливки конфига вместо exit (в print $wtr "exit\n";) лучше использовать "end\n" для выхода их конфига в командный CLI кваги (перед wr mem)

 

Причина не в этом, а в самом vtysh. Видимо при большом количестве изменений он подвисает. Второй и последующий запуски проходят без проблем, т.к. изменений мало.

Сомневаюсь.

Заливаю на другой машине несколько раз в день с начала введения zapret-info в quagga полный конфиг на STDIN vtysh

Ни разу проблем не было.

 

Предлагаю переместить стоки с добавлением/удалением роутинга перед строками с router bgp и закончить "end" вместо "exit"

 

примерно так:

print $wtr "configure terminal\n";

#-перенесенный блок-

# delete routes

foreach my $ip (keys %ips_to_del_null)

{ print $wtr "no ip route $ip Null0\n"; }

foreach my $ip (keys %ips6_to_del_null)

{ print $wtr "no ip route $ip Null0\n"; }

# add routes

foreach my $ip (keys %ips_to_add_null)

{ print $wtr "ip route $ip Null0\n"; }

foreach my $ip (keys %ips6_to_add_null)

{ print $wtr "ip route $ip Null0\n"; }

#-конец перенесенного блока-

print $wtr "router bgp $bgp_as\n";

# delete networks

foreach my $ip (keys %ips_to_del)

{

print $wtr "no network $ip\n";

}

# add networks

foreach my $ip (keys %ips_to_add)

{

print $wtr "network $ip\n";

}

 

print $wtr "address-family ipv6\n";

foreach my $ip (keys %ips6_to_del)

{

print $wtr "no network $ip\n";

}

foreach my $ip (keys %ips6_to_add)

{

print $wtr "network $ip\n";

}

#-end вместо 2*exit-

print $wtr "end\n";

print $wtr "write mem\n";

close($wtr);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно 2*exit после address-family ipv6 неправильно срабатывают.

В конце заливки конфига вместо exit (в print $wtr "exit\n";) лучше использовать "end\n" для выхода их конфига в командный CLI кваги (перед wr mem)

 

Причина не в этом, а в самом vtysh. Видимо при большом количестве изменений он подвисает. Второй и последующий запуски проходят без проблем, т.к. изменений мало.

Сомневаюсь.

Заливаю на другой машине несколько раз в день с начала введения zapret-info в quagga полный конфиг на STDIN vtysh

Ни разу проблем не было.

 

Предлагаю переместить стоки с добавлением/удалением роутинга перед строками с router bgp и закончить "end" вместо "exit"

 

примерно так:

print $wtr "configure terminal\n";

#-перенесенный блок-

# delete routes

foreach my $ip (keys %ips_to_del_null)

{ print $wtr "no ip route $ip Null0\n"; }

foreach my $ip (keys %ips6_to_del_null)

{ print $wtr "no ip route $ip Null0\n"; }

# add routes

foreach my $ip (keys %ips_to_add_null)

{ print $wtr "ip route $ip Null0\n"; }

foreach my $ip (keys %ips6_to_add_null)

{ print $wtr "ip route $ip Null0\n"; }

#-конец перенесенного блока-

print $wtr "router bgp $bgp_as\n";

# delete networks

foreach my $ip (keys %ips_to_del)

{

print $wtr "no network $ip\n";

}

# add networks

foreach my $ip (keys %ips_to_add)

{

print $wtr "network $ip\n";

}

 

print $wtr "address-family ipv6\n";

foreach my $ip (keys %ips6_to_del)

{

print $wtr "no network $ip\n";

}

foreach my $ip (keys %ips6_to_add)

{

print $wtr "network $ip\n";

}

#-end вместо 2*exit-

print $wtr "end\n";

print $wtr "write mem\n";

close($wtr);

Попробовал обновить код с Вашими указаниями - результат тот же, выполнение конфигуратора подвисает на стадии работы с vtysh. Несколько раз запускать также пробовал.

Кто может подсказать, если в первый раз запускать конфигуратор , сколько примерно по времени занимает работа?

 

Автору огромная благодарность за проделанные труды!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто может подсказать, если в первый раз запускать конфигуратор , сколько примерно по времени занимает работа?

У меня 40 минут работал скрипт без видимых изменений, прервал работу, запустил второй раз - полминуты и готово.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно 2*exit после address-family ipv6 неправильно срабатывают.

В конце заливки конфига вместо exit (в print $wtr "exit\n";) лучше использовать "end\n" для выхода их конфига в командный CLI кваги (перед wr mem)

Предлагаю переместить строки с добавлением/удалением роутинга перед строками с router bgp и закончить "end" вместо "exit"

то же, в виде diff для удобства сравнения (извиняюсь за много букв), у меня работает стабильно.

 

--- make_files.pl.AGGR 2016-05-17 19:03:28.456330187 +0500

+++ make_files.pl.AGGR.change 2016-05-17 20:05:52.273294484 +0500

@@ -471,6 +471,16 @@

my ($rdr,$wtr);

my $pid=open2($rdr,$wtr, "$vtysh");

print $wtr "configure terminal\n";

+ # delete routes

+ foreach my $ip (keys %ips_to_del_null)

+ { print $wtr "no ip route $ip Null0\n"; }

+ foreach my $ip (keys %ips6_to_del_null)

+ { print $wtr "no ip route $ip Null0\n"; }

+ # add routes

+ foreach my $ip (keys %ips_to_add_null)

+ { print $wtr "ip route $ip Null0\n"; }

+ foreach my $ip (keys %ips6_to_add_null)

+ { print $wtr "ip route $ip Null0\n"; }

print $wtr "router bgp $bgp_as\n";

# delete networks

foreach my $ip (keys %ips_to_del)

@@ -492,31 +502,7 @@

{

print $wtr "network $ip\n";

}

- print $wtr "exit\n";

- print $wtr "exit\n";

- # delete routes

- foreach my $ip (keys %ips_to_del_null)

- {

- print $wtr "no ip route $ip Null0\n";

- }

-

- foreach my $ip (keys %ips6_to_del_null)

- {

- print $wtr "no ip route $ip Null0\n";

- }

-

- # add routes

- foreach my $ip (keys %ips_to_add_null)

- {

- print $wtr "ip route $ip Null0\n";

- }

-

- foreach my $ip (keys %ips6_to_add_null)

- {

- print $wtr "ip route $ip Null0\n";

- }

-

- print $wtr "exit\n";

+ print $wtr "end\n";

print $wtr "write mem\n";

close($wtr);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

возможно ли научить nfqfilter_config работать без кваги? поставить её и путь генерит конфиги в холостую как то не по фуншую

 

P.S. подтверждаю, ОС центос 7, ./make_files.pl подвисает

Изменено пользователем yKpon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Там же голый перл. Закомментируйте те куски, где идет работа с vtysh, и всего делов. У себя вместо работы с кваггов поставил генерацию файлов для ipset и bird. Там возни на 10 минут с перекурами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще замечено: в новой версии скрипта при изменении в файлах не проходит проверка

if($domains_file_hash ne $domains_file_hash_old || $urls_file_hash ne $urls_file_hash_old || $ssl_host_file_hash ne $ssl_host_file_hash_old)

 

Соответственно nfqfilter не рестартует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще замечено: в новой версии скрипта при изменении в файлах не проходит проверка

if($domains_file_hash ne $domains_file_hash_old || $urls_file_hash ne $urls_file_hash_old || $ssl_host_file_hash ne $ssl_host_file_hash_old)

 

Соответственно nfqfilter не рестартует.

 

С этим проблем не замечено, nfqfilter перезапускается при изменениях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще замечено: в новой версии скрипта при изменении в файлах не проходит проверка

if($domains_file_hash ne $domains_file_hash_old || $urls_file_hash ne $urls_file_hash_old || $ssl_host_file_hash ne $ssl_host_file_hash_old)

 

Соответственно nfqfilter не рестартует.

Проблем с перезапуском нет, только что посмотрел лог выполнения: в случае изменений в файлах, nfqfilter перезапускается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:18 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: net_ratelimit: 546 callbacks suppressed
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:23 nfqfilter kernel: nf_queue: full at 4096 entries, dropping packets(s)
May 21 23:05:28 nfqfilter kernel: net_ratelimit: 509 callbacks suppressed

..........
..........
..........

May 21 23:35:24 nfqfilter systemd: nfqfilter.service stop-sigterm timed out. Killing.
May 21 23:35:24 nfqfilter systemd: nfqfilter.service: main process exited, code=killed, status=9/KILL
May 21 23:35:24 nfqfilter systemd: Unit nfqfilter.service entered failed state.
May 21 23:35:24 nfqfilter systemd: nfqfilter.service failed.
May 21 23:35:24 nfqfilter systemd: Starting Nfqilter filtering daemon...
May 21 23:35:24 nfqfilter systemd: Started Nfqilter filtering daemon.

 

; номер очереди
queue = 0

 

-A PREROUTING -s 10.0.0.0/8 -i enp5s0f0 -p tcp -m tcp -j NFQUEUE --queue-num 0 --queue-bypass
-A PREROUTING -s x.x.x.0/22 -i enp5s0f0 -p tcp -m tcp -j NFQUEUE --queue-num 0 --queue-bypass
-A PREROUTING -s x.x.x.0/22 -i enp5s0f0 -p tcp -m tcp -j NFQUEUE --queue-num 0 --queue-bypass

cat /proc/net/netfilter/nfnetlink_queue
   0  19026     0 2 65531     0     0    43746  1

 

Почему то переполнилась очередь и стал падать, что можно подкрутить, сделать побольше очередей?

Это кстати произошло на следующий день после обновления на последний make_files.pl

Изменено пользователем hsvt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

через этот интерфейс еще случаем не ходит ли много всякого? посмотрите, что туда летит.. и уберите лишний трафик)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

через этот интерфейс еще случаем не ходит ли много всякого? посмотрите, что туда летит.. и уберите лишний трафик)

 

Да uptime месяц был, ничего не менялось, кроме обновление make_files.pl. Левого трафика особо не вижу, много yuotube с https/http. Единственное что, как тут выше уже указывали, трафик который заворачивается на заглушку видимо тоже попадает в nfqueue так как заглушка на этой же машине и находится. Как бы сделать исключение через "!" или перенести на другую машину? И может быть есть смысл добавить в правила --dport 80,443 и еще какие то нестандартные порты для картшаринга например, + --queue-balance ?

Изменено пользователем hsvt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables -t mangle -I PREROUTING 1 -d <ip тазика> -j ACCEPT попробуйте так.. трафик, который идет на сервер не нужно обрабатывать..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables -t mangle -I PREROUTING 1 -d <ip тазика> -j ACCEPT попробуйте так.. трафик, который идет на сервер не нужно обрабатывать..

 

Спасибо, сделал тоже самое, но запихал служебные IP в ipset.

 

-A PREROUTING -m set --match-set no_queue dst -j ACCEPT

 

А как увеличить в sysctl.conf длину очереди?

 

2016-05-23 12:52:19.800 [11209] Information nfqThread - Setting queue length to 4096

Изменено пользователем hsvt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.