LINUX.ORG.RU
ФорумAdmin

Parental Control Openwrt

 ,


1

1

По найденым скриншотам, в заводских прошивках роутеров есть инетерсный (для меня) функционал родительского контроля. Он позволяет в веб интерфейсе заблокировать доступ к сайту по хостнейму и source-mac. То есть определенное устройство лишается доступа к определенному сайту.

По идее на OpenWRT должно быть что-то похожее. Я нагуглил:

iptables -I FORWARD -i br-lan -m mac --mac-source 98:12:80:34:84:56 -d youtube.com -j DROP

Но в цепочку подтягиваются только 4 ip-адреса ютуба. Ютуб продолжает спокойно работать.

Как еще это может быть реализовано в заводских прошивках? Можно ли допилить dnsmask до проверки mac и hosntame в запросе?


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

Anoxemian ★★★★★
()
  1. что-нибудь резолвит youtube.com или subdomain.youtube.com
  2. dnsmasq резолвит и тегает нарезолвенные IP-адреса ipsetом
  3. iptables режет доступ

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

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

Повторить для всех доменов второго уровня, используемых YouTube.

Если заблочить весь пул гугла это тоже плохо.
Лучше бы так:
что-нибудь резолвит youtube.com или subdomain.youtube.com dnsmasq отдает IP-адрес заглушки

Но с проверкой mac.

Осознать, что дети все равно найдут, как это обойти.

Даже если это и называется Родительский контроль, то используется он не всегда для детей… Да и развитие детей в поисках обхода это не плохо.

Самое эффективное для тебя на уровне днс работать.

Это с dnsmasq возможно или нужно bind ставить?

Tohin
() автор топика

Заблокировать Ютуб по ip - это задача порой сравнимая с запуском человека в космос. Проще сразу вырвать интернет.

curufinwe ★★★★★
()

А если поднять второй экземпляр dnsmasq на нестандартном порту, который подменяет ip тытрубы и перенаправлять туда запросы по mac с помощью iptables?

anonymous
()
Ответ на: комментарий от anonymous

Прямо мои мысли, ровно то же самое хотел предложить.

anc ★★★★★
()
Ответ на: комментарий от t184256

Это с dnsmasq возможно

Если есть ссылочки на подходящие HOWTO, был бы очень благодарен. а то везде натыкаюсь только на iptables -m string –string «youtube», а под мою платформу iptables видимо без string скомпилирован.

iptables v1.6.2: Couldn't load matchstring’:No such file or directory`

Tohin
() автор топика
Последнее исправление: Tohin (всего исправлений: 1)
Ответ на: комментарий от t184256

Кстати точно!!! Всегда забываю что у dnsmasq есть ipset

anc ★★★★★
()
Ответ на: Это с dnsmasq возможно от Tohin

1. ipset -N DROPSET hash:ip family inet
2. dnsmasq.conf добавить строку
ipset=/youtube.com/DROPSET Доменов можно перечилять много, например ipset=/youtube.com/yandex.ru/google.com/DROPSET
3. iptables -I FORWARD -i br-lan -m mac --mac-source 98:12:80:34:84:56 -m set --match-set DROPSET dst -j DROP Только лучше не DROP а REJECT

Общий смысл такой.
1. Мы создаем ipset с названием DROPSET.
2. dnsmasq при запросе резолва доменов(и всех поддоменов) прописанных в параметре ipset добавляет их ip адреса в этот set. Просмотреть добавленные можно используя ipset -L DROPSET
3. А дальше используя модуль set iptables можно уже делать все что вам хочется.

PS И я бы еще добавил правило перенаправляющее dns запросы на ваш dns
iptables -t nat -I PREROUTING -p udp --dport 53 -j DNAT --to-destination $IPDNSMASQ:53
iptables -t nat -I PREROUTING -p tcp --dport 53 -j DNAT --to-destination $IPDNSMASQ:53
Это тоже не сильно спасет от детей, но хотя бы самый очевидный вариант не будет работать.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 3)
Ответ на: комментарий от anc

Спасибо огромное за потраченное на меня время. Но у меня ipset не работает:

# ipset -N DROPSET hash:ip family inet
ipset v6.38: Cannot open session to kernel.
# modprobe ipt_set
failed to find dependency nfnetlink
2 modules could not be probed
- ip_set
- xt_set

У меня ограниченная поддержка платформы, поэтому если модулей нет в дефолтной сборке - нужно пересобирать всю систему самому. Пойду гуглить еще про dnsmasq.

Это тоже не сильно спасет от детей, но хотя бы самый очевидный вариант не будет работать.

До сих пор хватало включенного в браузере прокси-сервера, с внесенным «белым списком» исключений aka «не использовать прокси для локальных адресов». Просто стало сложно администрировать этот список на нескольких устройствах.

Tohin
() автор топика
Последнее исправление: Tohin (всего исправлений: 3)
Ответ на: комментарий от Tohin

Появилась мысль:

  1. Поднять второй экземпляр dnsmasq с отдельным конфигом на отдельном ip.
  2. Раздавать этот DNS определенным устройствам по DHCP.

C IPv4 все вроде начало получаться. Но тут грабли, на строчку: dhcp-option=net:test,option6:6,2620:119:35::3 5,2001:4860:4860::8888 dnsmasq ругнулся: daemon.crit dnsmasq[8606]: bad dhcp-option at line 45 of /etc/dnsmasq.conf и не взлетел.

Выяснилось, что для IPv6 в Openwrt другой демон - odhcpd. Кажется проще пересобрать прошивку с ipset.

Tohin
() автор топика

Фильтровать доступ до сайтов на уровне L3 безблагодатное дело. Филтровать нужно на уровне L7, прозрачно заворачивать HTTP в прокси (если есть возможность - squid, если железка под openwrt более чем скромная - tinyproxy)

фтыкать сюда

https://openwrt.org/docs/guide-user/services/proxy/tinyproxy https://github.com/tinyproxy/tinyproxy/blob/master/docs/filter-howto.txt

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.