21.12.2019, 17:39 | #1 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 |
Ограничение доступа к сайтам на OpenWRT
Нигде не нашел сабжа с белым листом и удобной настройкой. Например показывать последние 20-30 заблокированных запросов и добавлять в белый лист одним кликом.
Есть AdBlock, но его (в дефолтном исполнении) нельзя привязать к определенному MAC'у Нет ли желающих поразмышлять над реализацией и интеграцией в Luci? |
03.04.2020, 21:14 | #2 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 |
Появилась мысль. на lan поднимаем виртуальный интерфейс на котором запускается вторая копия dnsmasq с альтернативным конфигом.
Для dhcp клиентов можно задать второй интерфейс, который будет возвращать страницу заглушку с локального uhttpd о том что доступ заблокирован. На заглушке сделать кнопку "запросить доступ", которая пишет в лог запрошенный hostname и mac клиента. В люсю добавить страничку с обработкой этих запросов. Файерволом заблочить передачу наружу запросов на 53 порт. Пока ни разу не представляю как все это реализовать. 1. Сложность с IPv6. виртуальный интерфейс должен подхватывать и адрес 6й версии, но он зависит от того что мне выдал провайдер, я создал интерфейс br-lan.1, попытался получить на него адреса с br-lan с помощью udhcpc, но он не подхватывается. подозреваю что что-то делаю не так... 2. у штатного dnsmasq в openwrt запутанный init.d скрипт. в котором я не нашел ссылку на /etc/config/dnsmasq. как правильно запустить его второй раз в системе с указанием пути к альтернативному конфигу? 3. ...следующие вопросы буду задавать по мере понимания ответов на предыдущие... Последний раз редактировалось Tohin; 04.04.2020 в 20:26. |
04.04.2020, 20:45 | #3 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 |
Так. а тут буду отвечать на свои вопросы.
1. Поднимаем второй ip в локалке. без vlan /etc/config/network Код:
config interface 'Virtual' option proto 'static' option ipaddr '192.168.1.10' option netmask '255.255.255.0' option ip6addr 'fd12:3456:789a:1::1' option ifname 'br-lan' |
05.04.2020, 00:11 | #4 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 |
Настройка DNS для host выглядит заморочно:
/etc/config/dhcp Код:
config host option name 'test' option mac 'A0:B6:C6:0B:2D:9E' option ip '192.168.1.154' option tag 'test' Код:
dhcp-option=net:test,6,192.168.1.2 dhcp-option=net:test,option6:6,2620:119:35::3 5,2001:4860:4860::8888 UPD: Оказывается dnsmasq в качестве DHCP сервера работает только на IPv4. а на IPv6 трудится odhcpd. Что за жесть? Последний раз редактировалось Tohin; 05.04.2020 в 17:51. |
28.02.2021, 20:08 | #5 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 |
Вроде получилось. Криво конечно.
Развернуть для просмотраСозданы правила iptables (все строки надо повторять для каждого фильтруемого устройства):
Заблокирован трафик IPv6 через web Luci Код:
IPv6-traffic From any host in lan with source 00:00:00:00:00:01 To any host in wan Refuse forward Код:
iptables -t nat -I PREROUTING -i br-lan -m mac --mac-source 00:00:00:00:00:01 -p udp -m udp --dport 53 -j REDIRECT --to-port 585 #Повторить строки для всех фильтруемых устройств Создана страница заглушка для заблокированных сайтов: Код:
/etc/config/uhttpd config uhttpd 'second' list listen_http '0.0.0.0:80' list listen_https '0.0.0.0:443' list listen_http '[::]:80' list listen_https '[::]:443' # Server document root option home '/mnt/www/uhttpd' option error_page '/index.html' option rfc1918_filter '1' option max_requests '3' option cert '/etc/uhttpd.crt' option key '/etc/uhttpd.key' option cgi_prefix '/cgi-bin' option script_timeout '60' option network_timeout '30' option tcp_keepalive '1' Создан конфиг для фэйкового ДНС сервера /etc/dnsmasq2.conf Код:
# fake dns for parent filter resolv-file=/tmp/resolv.conf.auto user=dnsmasq group=dnsmasq log-queries log-facility=/var/log/dnsmasq.log no-poll domain-needed bogus-priv #listen-address=192.168.1.10 cache-size=150 #allowed sites server=/yandex.ru/# server=/googleapis.com/# server=/wikipedia.org/# server=/mos.ru/# server=/dnevnik.ru/# server=/microsoft.com/# server=/google.com/# #restrict all other address=/#/192.168.1.1 Код:
/usr/sbin/dnsmasq -C /etc/dnsmasq2.conf -x /var/run/dnsmasq/dnsmasq.restrict.pid -p 585 -k --log-facility=/mnt/data/dns-logs/dnsqueres.log& [свернуть] Косяки: Почему-то не логируются запросы. Нет удобного веб-интерфейса. Очень интересно как это реализовано в заводских прошивках роутеров. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|