Jump to content

manson

Forum Members
  • Posts

    10
  • Joined

  • Last visited

Posts posted by manson

  1. Ошибка can't insert возникала (и будет возникать при повторном запуске) на строках с insmod.

    А ошибка not found возникала на строках ebtables, так как модуль не был установлен.

  2. insmod: can't insert '/lib/modules/4.9-ndm-5/ebtables.ko': File exists

    Как раз эта "ошибка" показывает, что все нормально -  модуль успешно инсталлирован (при запуске или вручную) и второй раз система не хочет его инсталлировать.

     

  3. Сказ о том, как я локальные сети объединял.

     

    Имеется

    1. Локальная сеть в квартире с Keenetic Viva KN-1910 во главе.

    2. Локальная сеть на даче с Keenetic Extra KN-1711 во главе.

     

    Цель объединения:

    1.               Возможность в квартире смотреть ТВ через приемник SML-482HD Base. Подключение должно осуществляться через провайдера на даче. Телевидение фактически бесплатное, но там 300 каналов, почти на всех каналах есть 7-ми дневный архив. В городе таких цен нет…

    2.               Еще на даче есть приемник-сервер Триколор GS-B527, подключенный к спутнику. Там тоже есть интересные каналы и несколько UHD каналов. Через клиента GS-C593 (GS-591) каналы можно смотреть без дополнительной оплаты.

    3.               Подключение из города к служебным роутерам провайдера на даче и к маршрутизатору соседа на даче (я беру у него резервный канал через Wi-Fi).

    4.               Спортивный интерес 😉

     

    Если первый пункт и третий пункт удалось решить с помощью L2TP/IPsec, то приемники Триколор требуют, чтобы они был в одной локальной сети (для трансляции используется Multicast, который не удалось прокинуть между сетями). Ну и спортивный интерес…

    Такое объединение описано в статье Настройка туннелей IPIP, GRE и EoIP https://help.keenetic.com/hc/ru/articles/115002715029-Настройка-туннелей-IPIP-GRE-и-EoIP.

    Естественно хотелось, чтобы по умолчанию устройства выходили через свой роутер и IP получали через DHCP, но тут возникает проблема, так как DHCP запросы свободно ходят через канал и устройство может подцепиться к «чужому» роутеру.

     

    И так. Глаза бояться, а руки делают (бьют в бубен).

    Делал на основании форума https://forum.keenetic.com/topic/7031-%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82-dhcp-%D0%B2-eoip/ (далее Форум), но там не очень последовательно и не всегда правильно.

     

    1.               Получаем у одного из провайдеров белый IP.

    Достаточно белого IP на одном из роутеров.

    Keenetic, на котором будет белый IP, должен быть подключен к провайдеру напрямую, а не через промежуточный роутер от провайдера. В последнем случае подключение тоже возможно, но придется делать публикацию сервера, а не всегда провайдер дает доступ к своему оборудованию.

    Белый IP может быть на любой из сторон, так что выбираем провайдера с лучшими условиями по подключению и ежемесячной платой.

    Мне подключение обошлось бесплатно, плачу 150 руб. в месяц. Выдали IP за 5 минут (вот за что я люблю небольших провайдеров!)

     

    2.               Делаем общее адресное пространство у маршрутизаторов

    Устройства должны быть в одной подсети.

    На Форуме один из авторов сделал «маршрутизатор 1 - раздает 192.168.0.1-192.168.0.254 255.255.254.0, а маршрутизатор 2 - 192.168.1.1-192.168.1.254 255.255.254.0».

    Я сделал

    - маршрутизатор 1 - 192.168.Х.1 с маской 255.255.255.0, раздает 99 адресов

    - маршрутизатор 2 - 192.168.Х.101 с маской 255.255.255.0, раздает 99 адресов

    - адреса 192.168.Х.201 - 192.168.Х.254 оставляем для статической адресации. В качестве шлюза на устройстве можно вручную прописать либо 192.168.Х.1 либо 192.168.Х.101, в зависимости от кого, в какой сети нужно присутствовать устройству.

    X – ваше любимое число, которое не пересекается с подсетями провайдера, рабочими подсетями и подсетями соседей

     

    3.               Подключаем KeenDNS на обоих маршрутизаторах.

    Нужен, чтобы добраться до конфигуратора в случае, если канал не работает.

    Я поставил режим работы = «через облако», так как почему-то иногда доступ на маршрутизаторе с белым IP режим «авто» не всегда переключался в нужный режим.

    Кроме того, основной провайдер с белым IP может сбойнуть и роутер переключится на резервного провайдера.

    Терять доступ к Web интерфейсу не приятно…

    image.png.b4ab7a994c75886cbf670748b98cf842.png 

     

    4.               Настаиваем канал.

    Описано в статье Настройка туннелей IPIP, GRE и EoIP, но в последних версиях это можно делать через Web интерфейс через Интернет – Другие подключения – IP туннели.

    Ставим компонент «Туннели EoIP» и настраиваем

     

    На сервере (где белый IP)

    image.png.4ee45377ad9e559f1fb1416e4925b5ba.png

     

    На клиенте

    image.png.e0438d4ee51e88bec6eff32ba36d5cff.png

    В поле «Удаленная сторона» прописываем белый IP адрес.

    ID интерфейса влияет на наименование интерфейса в CLI (оно может отличать от Название). В моем случае это будет EoIP0.

    Включаем и радуемся объединенной сети.

    По DHCP устройства переподключаются не сразу, а если переподключаются, то «родной» DHCP сервер отвечает в 90% случаев быстрее. Если подключились и канал быстрый, то устройства могут и не заметить, что они работают через канал через другого провайдера.

    Но в моем случае радость была недолгой.

    В какой момент я начал понимать, что не работает Speedtest и некоторые сайт (например, rbc.ru). Причем сайт keenetic.ru работал. Ping до сайтов проходил.

    Пришлось отключить интерфейсы и перегрузить.

    На Форуме вычитал, что виной тому MTU.

     

    5.               MTU.

    Оказалось, что интерфейсу EoIP0 нужно было прописать MTU 1500 и после этого только включать в Bridge с домашний интерфейсом.

    В 3.7.4 это не реализовано. Обещают в 3.9, т. е. не скоро.

    Проблему можно, наверное, решить через CLI (отключить интерфейс от bridge, прописать MTU и включить снова), но это сложно и не всегда есть доступ к удаленному CLI.

    Я поступил так.

    - сохраняем конфигурацию в файл

    - находим секцию interface EoIP0 и перед up добавляем строчку «ip mtu 1500»

    - загружаем конфигурацию

     

    Это нужно проделать на всех маршрутизаторах.

    После этого нельзя исправлять настройку интерфейса через Web, иначе все слетит и надо будет повторить процедуру.

     

    После исправления MTU запускаем интерфейс и наслаждаемся жизнью.

     

    Все прекрасно, но иногда все-таки устройства подключаются не к тому роутеру.

    Чтобы исправить это, нужно запретить DHCP трафик через канал.

    Поскольку у нас интерфейсы объединены в бридж, то IP фильтрация не поможет.

    Нужна фильтрация на 2-м уровне, а это может только ebtables из открытых пакетов…

    Приступаем к следующей части танцев с бубном (к рукам подключаем ноги).

     

    6.               Выбираем маршрутизатор для OPKG.

    Фильтрацию достаточно сделать на одном из маршрутизаторов.

    Ставить лучше на флэшку – поэтому нужен маршрутизатор с USB.

    Видимо надо выбирать более производительный маршрутизатор.

     

    7.               Ставим нужные компоненты Keenetic

    - Протокол IPv6 (нужен зачем-то для Модули ядра подсистемы Netfilter)

    - Файловая система Ext (чтобы читать флэшку)

    - Сервер SSH (чтобы подключаться к командной строке OPKG через SSH 222, как все уважаемые люди)

    - Поддержка открытых пакетов

    - Модули ядра для поддержки файловых систем

    - Модули ядра подсистемы Netfilter (как раз там, насколько я понимаю, есть поддержка ebtables)

    - Модули ядра подсистемы Traffic Control – возможно не нужен

    - Пакет расширения Xtables-addons для Netfilter – возможно не нужен

     

    Возможно какие-то лишние, а может чего-то и забыл😉.

     

    8.               Ставим OPKG

    Подробно описано в «OPKG» https://help.keenetic.com/hc/ru/articles/360000948719-OPKG и в «Установка системы пакетов репозитория Entware на USB-накопитель» https://help.keenetic.com/hc/ru/articles/360021214160.

    Ставим на USB.

    Можно поставить на встроенную память, но размера ее может не хватить (у меня инсталляция заняла 61,5МБ) и потом с ней какие-то проблемы.

     

    9.               Ставим ebtables.

    Через BusyBox ставим ebtables

    opkg install ebtables

    9.1               Ставим mc (midnight commander).

    Через BusyBox ставим MC, если не поставили на предыдущем этапе

    opkg install mc

    Потребуется для копирования и редактирования файлов).

    10.            Проверяем наличие необходимых модулей.

    В BusyBox пишем

    find /lib/modules

     

    Нас интересуют модули (папка может быть другая)

    /lib/modules/4.9-ndm-5/ebt_802_3.ko

    /lib/modules/4.9-ndm-5/ebt_among.ko

    /lib/modules/4.9-ndm-5/ebt_arp.ko

    /lib/modules/4.9-ndm-5/ebt_arpreply.ko

    /lib/modules/4.9-ndm-5/ebt_dnat.ko

    /lib/modules/4.9-ndm-5/ebt_ip.ko

    /lib/modules/4.9-ndm-5/ebt_ip6.ko

    /lib/modules/4.9-ndm-5/ebt_limit.ko

    /lib/modules/4.9-ndm-5/ebt_mark.ko

    /lib/modules/4.9-ndm-5/ebt_mark_m.ko

    /lib/modules/4.9-ndm-5/ebt_pkttype.ko

    /lib/modules/4.9-ndm-5/ebt_redirect.ko

    /lib/modules/4.9-ndm-5/ebt_snat.ko

    /lib/modules/4.9-ndm-5/ebt_stp.ko

    /lib/modules/4.9-ndm-5/ebt_vlan.ko

    /lib/modules/4.9-ndm-5/ebtable_broute.ko

    /lib/modules/4.9-ndm-5/ebtable_filter.ko

    /lib/modules/4.9-ndm-5/ebtable_nat.ko

    /lib/modules/4.9-ndm-5/ebtables.ko

     

    Если их нет, то возможно не доставили какие компоненты в keenetic.

    Доставляем.

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

    Возможно есть способ проще.

     

    11.            Узнаем имя интерфейса.

    Это важно.

    В CLI интерфейсы могут быть с большими и маленькими буквами.

    В OPKG может быть по-другому.

    Узнать это можно через команду ifconfig в BusyBox.

    У меня он называется eoip0 – т. е. все маленькими буквами.

     

    12.            Готовим файл-скрипт с командами.

    Можно запустить фильтр через команды вручную, но «магия» пропадает после перезагрузки.

    Поэтому лучше через файл.

    Я дал имя файлу Sebt. Главное, чтобы в начале была S, потом не важно (rc.unslung запускает все файлы на S при старте)

     

    Содержимое файла

    #!/bin/sh

     

    insmod /lib/modules/4.9-ndm-5/ebtables.ko

    insmod /lib/modules/4.9-ndm-5/ebtable_filter.ko

    insmod /lib/modules/4.9-ndm-5/ebt_ip.ko

    insmod /lib/modules/4.9-ndm-5/ebtable_nat.ko

     

    ebtables -F

    ebtables -A INPUT -i eoip0 -p ipv4 --ip-proto udp --ip-sport 68 --ip-dport 67 -j DROP

    ebtables -A INPUT -i eoip0 -p ipv4 --ip-proto udp --ip-sport 67 --ip-dport 68 -j DROP

    ebtables -A FORWARD -i eoip0 -p ipv4 --ip-proto udp --ip-sport 68 --ip-dport 67 -j DROP

    ebtables -A FORWARD -i eoip0 -p ipv4 --ip-proto udp --ip-sport 67 --ip-dport 68 -j DROP

     

    Для создания файла использовал Notepad++

    Конец строк должен быть Unix (LF) (можно исправить через редактор в MC).

     

    Команды insmod ставят модули (при повторном запуске будет ругаться, что модули уже есть, но это не страшно).

    Команда ebtables -F чистит таблицу разрешений, чтобы можно было менять через повторный запуск скрипта (в противном случае таблица просто дополнится).

    Ну а далее сами правила.

     

    На форуме предлагают

    ebtables -A INPUT -i eoip0 -p ipv4 --ip-proto udp --ip-dport 67:68 -j DROP

    ebtables -A INPUT -i eoip0 -p ipv4 --ip-proto udp --ip-sport 67:68 -j DROP

    ebtables -A FORWARD -i eoip0 -p ipv4 --ip-proto udp --ip-dport 67:68 -j DROP

    ebtables -A FORWARD -i eoip0 -p ipv4 --ip-proto udp --ip-sport 67:68 -j DROP

     

    Там описки (исправлены и выделены жирным). Кроме того, работать будет только первое и третье правило.

    Можно сделать просто

    ebtables -A INPUT -i eoip0 -p ipv4 --ip-proto udp --ip-dport 67:68 -j DROP

    ebtables -A FORWARD -i eoip0 -p ipv4 --ip-proto udp --ip-dport 67:68 -j DROP

     

    Мои правила, мне кажется, более правильные и показывают, сколько пакетов заблокировано от клиента и от сервера, и из какой сети.

    В общем «gillyweed» могут быть разного происхождения – главное, чтобы работали.

     

    13.            Закидываем файл в папку /opt/etc/init.d

    Я закидывал через Приложения – Диск и принтеры.

    Если не дает закинуть в нужную папку сразу, то можно закинуть в home, а потом скопировать через mc.

     

    14.            Делаем разрешение на запуск.

    Можно через команду chmod, а можно через mc (File- Chmod). Даем права execute.

    image.png.99fcf0bb7e8524ec9c2191f59ec7858c.png

    Если все правильно, то перед именем файла появится знак *.

     

    15.            Запускаем Sebt

    Переходим в папку /opt/etc/init.d и запускаем.

    Не должно быть ошибок типа, что модули не найдены или что нет таблицы filter.

     

    16.            Проверяем работу правил.

    - на смартфоне включаем и выключаем Wi-Fi

    В BusyBox запускаем команду ebtables -L --Lc

    Следим за циферками – они должны нарастать …

    Bridge table: filter

     

    Bridge chain: INPUT, entries: 2, policy: ACCEPT

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 68 --ip-dport 67 -j DROP , pcnt = 0 -- bcnt = 0

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 67 --ip-dport 68 -j DROP , pcnt = 0 -- bcnt = 0

     

    Bridge chain: FORWARD, entries: 2, policy: ACCEPT

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 68 --ip-dport 67 -j DROP , pcnt = 0 -- bcnt = 0

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 67 --ip-dport 68 -j DROP , pcnt = 1 -- bcnt = 328

     

    Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

     

    Со временем цифры растут

    Bridge table: filter

     

    Bridge chain: INPUT, entries: 2, policy: ACCEPT

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 68 --ip-dport 67 -j DROP , pcnt = 7 -- bcnt = 2296

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 67 --ip-dport 68 -j DROP , pcnt = 1 -- bcnt = 328

     

    Bridge chain: FORWARD, entries: 2, policy: ACCEPT

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 68 --ip-dport 67 -j DROP , pcnt = 35 -- bcnt = 11480

    -p IPv4 -i eoip0 --ip-proto udp --ip-sport 67 --ip-dport 68 -j DROP , pcnt = 6 -- bcnt = 1968

     

    Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

     

    17.            Перегружаем роутер, чтобы убедиться, что все работает после загрузки.

    Проверяем через ebtables -L –Lc

     

    18.            Настраиваем устройства, которые должны работать в «чужой» сети.

    Настраиваем Ip руками.

    Ip 192.168.Х.201 - 192.168.Х.254 (эти адреса не раздаются по DHCP)

    Маска 255.255.255.0

    Шлюз 192.168.Х.1 или 192.168.Х.101

     

    Через какого провайдера пускать наружу, рулим на keenetic.

     

    19.            Наслаждаемся жизнью

    У меня все работает отлично.

    Нагрузка на Extra не превышает 80%, если даже смотришь UHD канал.

    Устройства Триколор прекрасно видят друг друга.

     

    Не удобно только то, что все устройства показываются в разделе Список устройств.

    Понять, какие чужие, а какие свои, можно только по IP.

     

     

    объединение сетей.docx

    • Upvote 5
  4. В 12.05.2022 в 17:33, Le ecureuil сказал:

    ndm-opkg-kmod-netfilter

    А можно для "чайников"?

    Это команда в терминале или надо какие-то компоненты доставить в keenetic?

    У меня после танцами с бубном модули появились в папке /lib/modules/4.9-ndm-5/.
    "Помогло" подключение всех упомянутых компонентов в интерфейсе keeneticа и переустановка opkg.
    Хотелось бы понять, в чем была причина без магии "бубна"....

     

  5. Добрый день

    >P.S. Список модулей ядра можно посмотреть командой:
    >find /lib/modules

    Почему-то при установке пакета ebtables не скачиваются эти модули...
    Может их надо руками откуда-то скопировать.

    Проблема такая упоминается в сообщениях, но как ее решили умалчивается...

     

  6. А интерфейс EoIP0 доступен в Web интерфейсе для выбора?

    Можно же сделать запрет UDP 67,68 на этом интерфейсе и DHCP трафик не будет ходить между сетями.
    Или так не сработает?

×
×
  • Create New...