Jump to content
  • 0

Запрет DHCP в EoIP


Leks

Question

Добрый день. Возникла необходимость объединить на уровне L2 удаленные сети посредством EoIP. Туннель поднял, но есть проблема в том что в каждой удаленной сети есть свой сервер DHCP, как запретить хождение DHCP в EoIP? Как правильно настроить межсетевой экран?

Link to comment
Share on other sites

Recommended Posts

  • 2

Разобрался, все заработало. Всем спасибо!

Напомню, с чего все начиналось - Объединил две сети через публичную сеть Интернет с помощью туннеля EoIP. 2 сети после объединения имеют одну общую сеть 192.168.0.0/23 (все сетевые устройства видят друг друга на канальном уровне - доступны все локальные ресурсы, даже LG Smart TV видит и воспроизводит DLNA и xupnpd-IPTV, которые подняты на соседнем маршрутизаторе). В сети 2 маршрутизатора, каждый из от которых является шлюзом выхода в Интернет и DHCP-сервером (каждый DHCP раздает часть общего пула IP, т.е. маршрутизатор 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). Любой компьютер в сети получая IP адрес посылает широковещательный запрос, и принимает настройки того DHCP который первый ответит и пришлет конфигурацию IP - в связи с этим возникает проблема, что компьютеры подключенные к одному маршрутизатору получают настройки другого и в интернет выходят через соседний шлюз (интернет трафик начинает бегать через туннель EoIP). Для того чтобы не происходило данной ситуации устанавливаем и настраиваем ebtables. Ниже написал инструкцию, может кому пригодится.:)

Инструкция для запрета DHCP в EoIP с помощью пакета OPKG Entware - ebtables:
1) Устанавливаем из репозитория пакет ebtables:
~ # opkg install ebtables
2) Устанавливаем модули ядра:
~ # insmod /lib/modules/3.4.113/ebtables.ko
~ # insmod /lib/modules/3.4.113/ebtable_filter.ko
~ # insmod /lib/modules/3.4.113/ebt_ip.ko
P.S. Список модулей ядра можно посмотреть командой:
find /lib/modules
3) Создаем правила:
~ # ebtables -A INPUT -i EoIP0 -p ipv4 --ip-proto udp --ip-sport 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

Edited by Leks
  • Thanks 4
  • Upvote 1
Link to comment
Share on other sites

  • 1

Сам же и отвечу.

1. После установки ebtables вводим ifconfig и смотрим точное название EOIP интерфейса. У меня он был eoip0 маленькими буквами. Насколько я помню это регистрозависимые команды.

2. в /opt/etc/init.d копируем любой исполняемый скрипт (файл со звёздочкой) туда-же в папку с именем S88eoip

делаем его содержимое таким:

#!/bin/sh

insmod /lib/modules/3.4.113/ebtables.ko
insmod /lib/modules/3.4.113/ebtable_filter.ko
insmod /lib/modules/3.4.113/ebt_ip.ko
insmod /lib/modules/3.4.113/ebtable_nat.ko
ebtables -A INPUT -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-sport 67:68 -j DROP
ebtables -A FORWARD -i eoip0 -p ipv4 --ip-proto udp --ip-dport 67:68 -j DROP

3. Единоразово стартуем /opt/etc/init.d/S88eoip start

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

Такой командой ebtables -L --Lc 

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

Зачем я копировал а не создавал новый:

мне было лень писать команду чтобы сделать скрипт исполняемым

 

Edited by karimovrt
  • Thanks 3
Link to comment
Share on other sites

  • 0

Нужно, чтобы клиенты выходили в интернет через сеть своего сегмента сети. А не через соседний сегмент.

Сеть используется / 23. Первый роутер по протоколу dhcp раздает 192.168.0.x / 23, второй роутер 192.168.1.x / 23. Клиент взаимодействует между собой на уровне l2. Т.к. DHCP работает в EoIP, устройство может получить адрес из соседнего сегмента.

Edited by Leks
  • Upvote 2
Link to comment
Share on other sites

  • 0
19 минут назад, Leks сказал:

Нужно, чтобы клиенты выходили в интернет через сеть своего сегмента сети. А не через соседний сегмент.

Сеть используется / 23. Первый роутер по протоколу dhcp раздает 192.168.0.x / 23, второй роутер 192.168.1.x / 23. Клиент взаимодействует между собой на уровне l2. Т.к. DHCP работает в EoIP, устройство может получить адрес из соседнего сегмента.

ebtables из opkg по идее должен справиться с задачей

  • Thanks 2
Link to comment
Share on other sites

  • 0
1 минуту назад, Leks сказал:

Не нашел в Entware ebtables. Есть ли возможность ее добавить в пакет?

BusyBox v1.30.1 () built-in shell (ash)

~ # opkg list ebtables
ebtables - 2018-06-27-48cff25d-1a - The ebtables program is a filtering tool for a bridging firewall. The
 filtering is focussed on the Link Layer Ethernet frame fields. Apart
 from filtering, it also gives the ability to alter the Ethernet MAC
 addresses and implement a brouter.

 

  • Thanks 1
Link to comment
Share on other sites

  • 0
Поддержка открытых пакетов
Обязательный
 
Модули ядра для поддержки файловых систем
Установлен
 
Модули ядра для поддержки USB-видео
Установлен
 
Модули ядра для поддержки USB-аудио
Установлен
 
Модули ядра подсистемы Netfilter
Обязательный
 
Модули ядра подсистемы Traffic Control
Установлен
Модули ядра подсистемы USB over IP
Установлен
Пакет расширения Xtables-addons для Netfilter
Установлен
Link to comment
Share on other sites

  • 0

~ # insmod /lib/modules/3.4.113/ebtable_filter.ko
~ # insmod /lib/modules/3.4.113/ebtable_nat.ko
~ # insmod /lib/modules/3.4.113/ebtable_broute.ko
~ # insmod /lib/modules/3.4.113/ebtables.ko
Я так понимаю только вот эти?

Link to comment
Share on other sites

  • 0

ПРОБЛЕМА - после перезагрузки маршрутизатора слетают модули ядра и правила ebtables. Приходится ручками делать все заново.

Что можно сделать?

Link to comment
Share on other sites

  • 0
6 минут назад, Leks сказал:

ПРОБЛЕМА - после перезагрузки маршрутизатора слетают модули ядра и правила ebtables. Приходится ручками делать все заново.

Что можно сделать?

Добавлять в автозагрузку

https://github.com/ndmsystems/packages/wiki/Opkg-Component

Link to comment
Share on other sites

  • 0
В 17.07.2019 в 10:54, Le ecureuil сказал:

У нас не включена опция netfilter в bridge для повышения скорости, потому блокировка 67/68 UDP не поможет. Скорее всего только ebtables в opkg.

А если создать новый сегмент сети, в него забриджевать eoip и пускать dhcp-запросы только в него.

Link to comment
Share on other sites

  • 0
В 27.07.2019 в 10:01, stefbarinov@mail.ru сказал:

А если создать новый сегмент сети, в него забриджевать eoip и пускать dhcp-запросы только в него.

Можно, но это не всегда возможно. Плюс в таком случае обычно вообще проще использовать L3-туннель, а не L2.

Link to comment
Share on other sites

  • 0
В 24.07.2019 в 18:27, Leks сказал:

Разобрался, все заработало. Всем спасибо!

Спасибо что разобрались в том, что меня давно интересовало) Есть вопросик:

"после перезагрузки маршрутизатора слетают модули ядра и правила ebtables" с этим разобрались? Можете написать инструкцию про решению данного вопроса через "добавление в автозагрузку"?)

Edited by karimovrt
Link to comment
Share on other sites

  • 0
10 часов назад, karimovrt сказал:

делаем его содержимое таким:

Справедливо для 2.15 (более ранние версии уже не рассматриваем), но для 3.х путь к ядерным модулям другой. Унифицируем:

#!/bin/sh

MOD="/lib/modules/`uname -r`" # путь до модулей

insmod $MOD/ebtables.ko
insmod $MOD/ebtable_filter.ko
insmod $MOD/ebt_ip.ko
insmod $MOD/ebtable_nat.ko
... # <= ниже, остальной код
BusyBox v1.30.1 () built-in shell (ash)

~ # lsmod | grep ebt

~ # ls -1 /lib/modules/4.9-ndm-2/ebt*
/lib/modules/4.9-ndm-2/ebt_802_3.ko
/lib/modules/4.9-ndm-2/ebt_among.ko
/lib/modules/4.9-ndm-2/ebt_arp.ko
...
/lib/modules/4.9-ndm-2/ebtable_filter.ko
/lib/modules/4.9-ndm-2/ebtable_nat.ko
/lib/modules/4.9-ndm-2/ebtables.ko

~ # /opt/etc/init.d/S88eoip start

~ # lsmod | grep ebt
ebtable_broute           848  0 
ebtable_nat              976  0 
ebt_ip                  1360  0 
ebtable_filter           976  0 
ebtables               16917  3 ebtable_filter,ebtable_nat,ebtable_broute
~ # 

 

  • Thanks 1
Link to comment
Share on other sites

  • 0

Наверное проще поставить "kmod"

# opkg list | grep kmod
kmod - 20-1 - Linux kernel module handling kmod is a set of tools to handle common tasks with Linux kernel modules like insert, remove, list, check properties, resolve dependencies and aliases.

Будет запускаться "S00kmod_config"

А далее просто набрать например в качестве примера интерфейс ra4 и получить что надо

/ # lsmod | grep ebt
/ # ebtables -A INPUT -i ra4 -p ipv4 --ip-proto udp --ip-sport 67:68 -j DROP
/ # lsmod | grep ebt
ebt_ip                  1360  1
ebtable_filter           976  1
ebtables               16917  1 ebtable_filter
/ # 

без написания строчек для запуска " *.ko "

Link to comment
Share on other sites

  • 0
18 минут назад, vasek00 сказал:

Наверное проще поставить "kmod"

~ # opkg list | grep '^kmod'
kmod - 20-1 - Linux kernel module handling kmod is a set of tools to handle common tasks with Linux kernel modules like insert, remove, list, check properties, resolve dependencies and aliases.
kmod_ndms - 24-5 - Linux kernel module handling kmod is a set of tools to handle common tasks with Linux kernel modules like insert, remove, list, check properties, resolve dependencies and aliases.
~ #

'kmod_ndms' "заточен" под Keenetic`и, но тянет по зависимостям 'dvb-firmware'

Link to comment
Share on other sites

  • 0
4 часа назад, TheBB сказал:

'kmod_ndms' "заточен" под Keenetic`и, но тянет по зависимостям 'dvb-firmware'

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

[I] Aug  5 18:40:46 ndm: Opkg::Manager: /opt/etc/ndm/usb.d/000-kmod_loader.sh: modinfo: ERROR: Module /opt/lib/modules/4.9-ndm-2/kernel/compat.ko not found.

 

Link to comment
Share on other sites

  • 0

Столкнулся с проблемой в работе клиентской сети. Если использовать классическую схему eoip, когда клиенты клиентской сети работают через серверную сеть, то всё хорошо. Но если клиенты клиентской сети работают через свой родной шлюз, то сеть работает нестабильно. Внешне похоже на проблемы с DNS, т.е. браузер становится очень задумчивым и долго думает перед открытием страниц. Прописывание всевозможных DNS не решает проблему. Если сделать "no include EoIP0" и перезагрузить роутер, то всё снова работает хорошо. Такое явление наблюдается как по проводу, так и по wifi. Сначала грешил на ebtables, но и без него картина аналогичная, тем более он вообще установлен на сервере, а проблема в клиентской сети. Пикантность ситуации в том, что подклинивание сети наблюдается только на Винде (7х64), на Андроиде 9 всё хорошо, персональный DNS при этом отключен.

Что может быть причиной такого поведения Винды? Кто-нибудь сталкивался с подобным явлением? Прошивка 2.15.C.5.0-1

Link to comment
Share on other sites

  • 0

Keenetic Omni, прошивка 3.1.4. Не получается, нет модулей (

~ # opkg install ebtables
Installing ebtables (2018-06-27-48cff25d-1a) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/ebtables_2018-06-27-48cff25d-1a_mipsel-3.4.ipk
Configuring ebtables.
~ # lsmod | grep ebt
~ # ls -1 /lib/modules/4.9-ndm-2/ebt*
ls: /lib/modules/4.9-ndm-2/ebt*: No such file or directory
 

Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...