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

568 members have voted

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



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

Да cmake теоретически тоже умеет, осталось только понять, как :) Или, по-хорошему, найти (если есть) обьявление версии в хидерах либы и #ifdef / #else / #endif ...

 

--

Подчистил код, убрал лишние зависимости (boost), завернул и ютуб, который до этого не фильтровали от греха подальше :)

За пару часов распарсил ~5кк http-запросов, отфильтровано из них ~1к

 

В топе в среднем 4-8%, очень редко вылазит до 12-14%. Потенциал получается очень неплохой, особенно если направить трафик не в одну queue, а в range, и запустить несколько инстансов софтинки по числу ядер, например

 

йа доволен :)

Share this post


Link to post
Share on other sites

добрый день, пытаюсь собрать:

root@server:~/nfq_filter/build# cmake ../
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Checking for C++11 compiler
-- Checking for C++11 compiler - available
-- Looking for include files HAVE_NFQUEUE_H
-- Looking for include files HAVE_NFQUEUE_H - found
-- Configuring done
CMake Error at CMakeLists.txt:29 (add_executable):
 Cannot find source file:

   config.cpp

 Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
 .hxx .in .txx


-- Build files have been written to: /home/zeleniy/nfq_filter/build

 

Где взять этот файл? скачивал как описано git clone https://github.com/ircop/nfq_filter.git

Edited by zeleniy

Share this post


Link to post
Share on other sites

добрый день, пытаюсь собрать:

root@server:~/nfq_filter/build# cmake ../
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Checking for C++11 compiler
-- Checking for C++11 compiler - available
-- Looking for include files HAVE_NFQUEUE_H
-- Looking for include files HAVE_NFQUEUE_H - found
-- Configuring done
CMake Error at CMakeLists.txt:29 (add_executable):
 Cannot find source file:

   config.cpp

 Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
 .hxx .in .txx


-- Build files have been written to: /home/zeleniy/nfq_filter/build

 

Где взять этот файл? скачивал как описано git clone https://github.com/ircop/nfq_filter.git

 

Таже проблема , ubuntu 12.04

Share this post


Link to post
Share on other sites

Упс... Перекачайте заново, не добавил пару файлов в гит, пардон

теперь вылазит:

root@server:~/nfq_filter/build# make
Scanning dependencies of target nfq_filter
[ 25%] Building CXX object CMakeFiles/nfq_filter.dir/nfq.cpp.o
[ 50%] Building CXX object CMakeFiles/nfq_filter.dir/config.cpp.o
[ 75%] Building CXX object CMakeFiles/nfq_filter.dir/sender.cpp.o
[100%] Building CXX object CMakeFiles/nfq_filter.dir/parser.cpp.o
Linking CXX executable nfq_filter
/usr/bin/ld: CMakeFiles/nfq_filter.dir/nfq.cpp.o: undefined reference to symbol 'nfnl_fd'
/usr/bin/ld: note: 'nfnl_fd' is defined in DSO /usr/lib/libnfnetlink.so.0 so try adding it to the linker command line
/usr/lib/libnfnetlink.so.0: could not read symbols: Invalid operation
collect2: выполнение ld завершилось с кодом возврата 1
make[2]: *** [nfq_filter] Ошибка 1
make[1]: *** [CMakeFiles/nfq_filter.dir/all] Ошибка 2
make: *** [all] Ошибка 2

Версия libnetfilter_queue:

root@server:~/nfq_filter/build# apt-cache show libnetfilter-queue-dev 
Package: libnetfilter-queue-dev
Priority: optional
Section: universe/libdevel
Installed-Size: 72
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Original-Maintainer: netfilter maintainers <netfilter-maintainers@ned.snow-crash.org>
Architecture: amd64
Source: libnetfilter-queue
Version: 0.0.17-1
Depends: pkg-config, libnetfilter-queue1 (= 0.0.17-1), libnfnetlink-dev (>= 0.0.25)
Filename: pool/universe/libn/libnetfilter-queue/libnetfilter-queue-dev_0.0.17-1_amd64.deb
Size: 8740

В файлике nfq.cpp заменил строчки на:

++              size = nfq_get_payload(nfa, (char **)&full_packet);
++              len = nfq_get_payload(nfa, (char **)&data);

Share this post


Link to post
Share on other sites

Тоже заменил

 

В файлике nfq.cpp заменил строчки на:

++              size = nfq_get_payload(nfa, (char **)&full_packet);
++              len = nfq_get_payload(nfa, (char **)&data);

 

Ругается теперь на символ

root@pppoe3a:/opt/billing/work/nfq_filter/build# make
[ 25%] Building CXX object CMakeFiles/nfq_filter.dir/nfq.cpp.o
[ 50%] Building CXX object CMakeFiles/nfq_filter.dir/config.cpp.o
[ 75%] Building CXX object CMakeFiles/nfq_filter.dir/sender.cpp.o
[100%] Building CXX object CMakeFiles/nfq_filter.dir/parser.cpp.o
Linking CXX executable nfq_filter
/usr/bin/ld: CMakeFiles/nfq_filter.dir/nfq.cpp.o: undefined reference to symbol 'nfnl_fd'
/usr/bin/ld: note: 'nfnl_fd' is defined in DSO /usr/lib/libnfnetlink.so.0 so try adding it to the linker command line
/usr/lib/libnfnetlink.so.0: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[2]: *** [nfq_filter] Error 1
make[1]: *** [CMakeFiles/nfq_filter.dir/all] Error 2
make: *** [all] Error 2

Share this post


Link to post
Share on other sites

попробовал собрать на Ubuntu 13.10, там версия libnetfilter-queue 1.0.2, ругается на отсутствие:

root@server:~/nfq_filter/build# cmake ../
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Checking for C++11 compiler
-- Checking for C++11 compiler - available
-- Looking for include files HAVE_NFQUEUE_H
-- Looking for include files HAVE_NFQUEUE_H - not found.
CMake Error at CMakeLists.txt:21 (message):
 libnetfilter_queue.h not found!


-- Configuring incomplete, errors occurred!

Хотя:

root@server:~# find / -name libnetfilter_queue.h
/usr/include/libnetfilter_queue/libnetfilter_queue.h

Edited by zeleniy

Share this post


Link to post
Share on other sites

попробовал собрать на Ubuntu 13.10, там версия libnetfilter-queue 1.0.2, ругается на отсутствие:

Попробуйте сейчас перекачать: чуть изменил CMakeLists

Share this post


Link to post
Share on other sites

попробовал собрать на Ubuntu 13.10, там версия libnetfilter-queue 1.0.2, ругается на отсутствие:

Попробуйте сейчас перекачать: чуть изменил CMakeLists

то же самое:

root@server:~/nfq_filter/build# cmake ../
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Checking for C++11 compiler
-- Checking for C++11 compiler - available
-- Looking for include files HAVE_NFQUEUE_H
-- Looking for include files HAVE_NFQUEUE_H - not found.
CMake Error at CMakeLists.txt:23 (message):
 libnetfilter_queue.h not found!


-- Configuring incomplete, errors occurred!

Share this post


Link to post
Share on other sites

Скачал

 

Ubuntu 12.04

root@pppoe3a:/opt/billing/work/nfq_filter/build# make
[ 25%] Building CXX object CMakeFiles/nfq_filter.dir/nfq.cpp.o
[ 50%] Building CXX object CMakeFiles/nfq_filter.dir/config.cpp.o
[ 75%] Building CXX object CMakeFiles/nfq_filter.dir/sender.cpp.o
[100%] Building CXX object CMakeFiles/nfq_filter.dir/parser.cpp.o
Linking CXX executable nfq_filter
/usr/bin/ld: CMakeFiles/nfq_filter.dir/nfq.cpp.o: undefined reference to symbol 'nfnl_fd'
/usr/bin/ld: note: 'nfnl_fd' is defined in DSO /usr/lib/libnfnetlink.so.0 so try adding it to the linker command line
/usr/lib/libnfnetlink.so.0: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[2]: *** [nfq_filter] Error 1
make[1]: *** [CMakeFiles/nfq_filter.dir/all] Error 2
make: *** [all] Error 2

Share this post


Link to post
Share on other sites

roysbike, zeleniy

Вроде бы всё пофиксил, попробуйте сейчас

Ту же ошибку выдает. А у Вас на 13.04 собралось?

Edited by zeleniy

Share this post


Link to post
Share on other sites

Да, собралось:

 

oot@Workmashine:/home/wingman/nfq_filter-master/build# make

Scanning dependencies of target nfq_filter

[ 25%] Building CXX object CMakeFiles/nfq_filter.dir/nfq.cpp.o

[ 50%] Building CXX object CMakeFiles/nfq_filter.dir/config.cpp.o

[ 75%] Building CXX object CMakeFiles/nfq_filter.dir/sender.cpp.o

[100%] Building CXX object CMakeFiles/nfq_filter.dir/parser.cpp.o

Linking CXX executable nfq_filter

[100%] Built target nfq_filter

root@Workmashine:/home/wingman/nfq_filter-master/build# ^C

root@Workmashine:/home/wingman/nfq_filter-master/build# ./nfq_filter

 

nfq_filter Version 0.11

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

 

А вы точно скачали всё заново с гитхаба? Мало ли :)

Share this post


Link to post
Share on other sites

Взял чистую машину с 12.04, изменил две строчки в nfq.cpp - собралось. А какой у Вас сейчас трафик? Хочу попробовать на 800-900 Мбитах/сек

Share this post


Link to post
Share on other sites

У нас трафик гигабит 15 в пиках :) Но сквозь хост с фильтрацией отправляется только трафик на ip-адреса из реестра, выходит до 30 мбит/с

 

Кстати, как вариант, если вы хотите на шлюзе это дело мастрячить, можно попробовать, например, ip-адреса из реестра загонять в ipset, и в nfqueue загонять тоже тольео трафик на них

Share this post


Link to post
Share on other sites

У нас трафик гигабит 15 в пиках :) Но сквозь хост с фильтрацией отправляется только трафик на ip-адреса из реестра, выходит до 30 мбит/с

 

Кстати, как вариант, если вы хотите на шлюзе это дело мастрячить, можно попробовать, например, ip-адреса из реестра загонять в ipset, и в nfqueue загонять тоже тольео трафик на них

Я пока не определился со схемой, пока поставил на отдельный роутер, но мне более нравится Ваша схема. Вы на шлюзе трафик по dst отправляете на сервер с nfq_filter или как? Ну в смысле как вы разделяете трафик?

Edited by zeleniy

Share this post


Link to post
Share on other sites

Я пока не определился со схемой, пока поставил на отдельный роутер, но мне более нравится Ваша схема. Вы на шлюзе трафик по dst отправляете на сервер с nfq_filter или как? Ну в смысле как вы разделяете трафик?

 

На хосте-фильтре нужные IP-адреса загоняются в bgpd и анонсируются на все имеющиеся шлюзы, соответственно, трафик со шлюзов на эти адреса идёт через фильтрующий хост.

Ну и уже на нём весь трафик по 80 порту проходит через софтину, остальной - прозрачно роутится

Share this post


Link to post
Share on other sites

Я пока не определился со схемой, пока поставил на отдельный роутер, но мне более нравится Ваша схема. Вы на шлюзе трафик по dst отправляете на сервер с nfq_filter или как? Ну в смысле как вы разделяете трафик?

 

На хосте-фильтре нужные IP-адреса загоняются в bgpd и анонсируются на все имеющиеся шлюзы, соответственно, трафик со шлюзов на эти адреса идёт через фильтрующий хост.

Ну и уже на нём весь трафик по 80 порту проходит через софтину, остальной - прозрачно роутится

Я так и думал сделать, трафик с 80 порта отправляем на фильтр, а все остальное прозрачно пропускаем. У нас 1 шлюз - попроще. Спасибо

Share this post


Link to post
Share on other sites

Подскажите пожалуйста, что нужно еще добавить в iptables, после bsd еще пока не въехал .

 

$IPTABLES -A PREROUTING -s 172.30.0.0/16 -p tcp -m tcp --dport 80 -j NFQUEUE --queue-num 0 --queue-bypass

 

Ругается

iptables: No chain/target/match by that name.

 

Как я понял, нужен модуль? NFQUEUE

Edited by roysbike

Share this post


Link to post
Share on other sites

Подскажите пожалуйста, что нужно еще добавить в iptables, после bsd еще пока не въехал .

 

$IPTABLES -A PREROUTING -s 172.30.0.0/16 -p tcp -m tcp --dport 80 -j NFQUEUE --queue-num 0 --queue-bypass

 

Ругается

iptables: No chain/target/match by that name.

$IPTABLES -t mangle -A PREROUTING -s 172.30.0.0/16 -p tcp -m tcp --dport 80 -j NFQUEUE --queue-num 0 --queue-bypass

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.