vovansgz Posted March 20, 2018 (edited) Добрый день! Есть микротик RB2011, прошивка 6.41.3. Хочу заблокировать интернет, кроме определенных сайтов, но возникает проблема, становятся недоступны ВСЕ сайты, даже те, что разрешены. Тестирую на своем ПК. Создаю адресс-лист с разрешенными сайтами Allowed, например гугл, яндекс. Появляются динамические ip. Создаю разрешающие правило /ip firewall filter add chain=forward src-address=Мой ИП dst-address-list=Allowed action=accept Создаю запрещающие правило /ip firewall filter add chain=forward src-address=Мой ИП dst-address-list=!Allowed action=drop В итоге в браузере ни один сайт не открывается, в логах микротика только сообщения о том, что NAT гоняет запросы. Менял время TTL, размер кэша, ребутил микротик, менял DNS. Если делаю пинг до сайта, то пинги проходят. Что я делаю не так??? Делал от обратного, то есть блокировал только определенные сайты - работает нормально. Но хочу именно разрешить только определенные сайты. Edited March 20, 2018 by vovansgz Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Constantin Posted March 20, 2018 по мне я бы сделал 1 правило /ip firewall filter add chain=input src-address=Мой ИП action=accept и 2 правило add chain=forward action=drop dst-address=Мой ИП layer7-protocol=drop далее как написать layer7-protocol это думаю разберетесь wiki mikrotik вам в помощь или гугл тоже много есть примеров кстати есть еще проще принудительно завернуть все днс запросы на микротик, и просто создать список блокируемых сайтов со стат записью на адрес 127,0,0,1 например или на ip адрес porno.ru ))) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vovansgz Posted March 20, 2018 3 минуты назад, Constantin сказал: далее как написать layer7-protocol это думаю разберетесь wiki mikrotik вам в помощь или гугл тоже много есть примеров Во-первых, я хочу запретить ВСЕ сайты, кроме определенных из списка. А через layer7-protocol придется плодить кучу правил. Во-вторых, layer7-protocol не рекомендуется использовать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Constantin Posted March 20, 2018 6 минут назад, vovansgz сказал: Во-вторых, layer7-protocol не рекомендуется использовать. бред ну вам виднее разница в правиле только "!" и список уже белых сайтов ))) что проще и нет головной боли с выяснением ip адресов которые меняются бывает и на одном ип может куча сайтов сидеть Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vovansgz Posted March 20, 2018 32 минуты назад, Constantin сказал: разница в правиле только "!" и список уже белых сайтов ))) что проще и нет головной боли с выяснением ip адресов которые меняются бывает и на одном ип может куча сайтов сидеть Есть рабочий вариант через layer7-protocol или нет? С HTTPS работает? Сейчас попробовал, либо блокируется все, либо ничего. Хотя бы на примере любого сайта на HTTPS mail.ru. Чтобы Только он открывался, а все остальное блокировалось Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Constantin Posted March 20, 2018 ТС а вы ленивы.... )))) Как закрыть все сайты кроме одного/нескольких Сразу скажу, что использовать нужно L7 Protocol. Казалось бы, чего сложного: просто применить правило «все кроме». Но нет, это не работает. Если хотите, проверьте сами. Что делать? Одним фильтром разрешить нужные ресурсы и вторым запретить все остальные. Разрешающий L7 имеет вид ^.+(какой-то_сайт|еще какой-то_сайт).*$. С запрещающими сложнее. Можно зафильтровать вообще все через ^.+$. Но я бы посоветовал фильтровать протокол HTTP по URI, то есть так — ^.+(HTTP\/[0-2]).+$. К сожалению, через терминал необходимые L7-фильтры добавляются с пустым полем regexp. Используйте вместо этого Winbox. /ip firewall layer7-protocol add name=Allow regexp="^.+(какой-то_сайт|еще_какой-то_сайт).*$" /ip firewall layer7-protocol add name=Deny regexp="^.+(HTTP\/[0-2]).+$" Добавление самих фильтры, по 2 на 'разрешить' и 'запретить' согласно вики Микротик /ip firewall filter add chain=forward protocol=tcp out-interface=ваш_интерфейс layer7-protocol=Allow action=accept /ip firewall filter add chain=forward protocol=tcp in-interface=ваш_интерфейс layer7-protocol=Allow action=accept /ip firewall filter add chain=forward protocol=tcp out-interface=ваш_интерфейс layer7-protocol=Deny action=reject reject-with=tcp-reset /ip firewall filter add chain=forward protocol=tcp in-interface=ваш_интерфейс layer7-protocol=Deny action=reject reject-with=tcp-reset Небольшое уточнение для тех, кому все-таки требуется разрешить строго определенные сайты: проверяйте, какие еще ресурсы задействованы на сайте. К примеру, это могут быть подгружаемые карты. Я использую Opera для серфинга в сети, а так же входящий в нее DevTools, вкладка «Console» для определения ошибок. Доменные имена в адресных листах И на сладкое: начиная с версии v6.36, в адресные листы можно добавлять доменные имена! *) firewall — allow to add domain name to address-lists (dynamic entries for resolved addresses will be added to specified list); Если вы еще не прыгаете от радости как я, то самое время начать. Эта фича позволяет практически полностью уйти от использования затратного L7 с его ограничениями. В качестве примера приведу маршрутизацию разных сайтов в разные шлюзы. Это актуально в связи с действительностью в нашей стране. Заворачивать будем web-интерфейсы почтовых серверов mail.google.com и e.mail.ru. В почту Google будем ходить по OVPN, а в Mail — по L2TP. /ip firewall address-list add list=ovpn address=mail.google.com /ip firewall address-list add list=l2tp address=e.mail.ru /ip firewall mangle add chain=prerouting protocol=tcp src-address=192.168.1.0/24 dst-address-list=ovpn action=mark-routing new-routing-mark=ovpn-route /ip firewall mangle add chain=prerouting protocol=tcp src-address=192.168.1.0/24 dst-address-list=l2tp action=mark-routing new-routing-mark=l2tp-route /ip route add dst-address=0.0.0.0/0 gateway=ovpn-out1 distance=1 routing-mark=ovpn-route /ip route add dst-address=0.0.0.0/0 gateway=l2tp-out1 distance=1 routing-mark=l2tp-route Таким образом, при добавлении нужного имени в определенный лист, мы фактически определяем по какому каналу будет установлена связь. Еще один пример, который многим пригодится: перенаправлять все TCP-соединения в шлюз OVPN, а rkn.gov.ru — в шлюз по умолчанию. /ip firewall address-list add list=RKN address=rkn.gov.ru /ip firewall mangle add chain=prerouting protocol=tcp src-address=192.168.1.0/24 dst-address-list=RKN action=accept /ip firewall mangle add chain=prerouting protocol=tcp src-address=192.168.1.0/24 dst-address=!192.168.0.0/16 action=mark-routing new-routing-mark=ovpn-route /ip route add dst-address=0.0.0.0/0 gateway=ovpn-out1 distance=1 routing-mark=ovpn-route Важное замечание: если вы используете Fasttrack, то обязательно смотрите его описание. А именно: Fasttracked packets bypass firewall, connection tracking, simple queues, queue tree with parent=global, ip traffic-flow(restriction removed in 6.33), ip accounting, ipsec, hotspot universal client, vrf assignment, so it is up to administrator to make sure fasttrack does not interfere with other configuration; Что значит, что соединения такого типа не попадают в файервол, обработку пакетов, очереди и т.д. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vovansgz Posted March 20, 2018 4 минуты назад, Constantin сказал: Но нет, это не работает. Подытожили много букв, мало по делу. 5 минут назад, Constantin сказал: ТС а вы ленивы.... )))) Хм, наверно L7 Protocol я уже пробовал ранее, и убедился, что работает это криво и только для конкретных сайтов. Я в первом сообщении писал, блокировка всего, кроме списка...Предложил свой вариант, который почему-то теоретически работает пинги проходят, а браузер не открывает. Мне интересно где косяк? Да делал я вот так /ip firewall layer7-protocol add name=VK regexp="^.+(vk.com).*$" И два правила, на разрешение открытия и блокировку всего как Вы ранее писали 16 минут назад, Constantin сказал: Разрешающий L7 имеет вид ^.+(какой-то_сайт|еще какой-то_сайт).*$. Только вот как быстро открываются сайты...вечное вращение загрузки, причем запросы идут например к m.vk.com или uquq4.vk.com и это на примере 1 сайта, а если их будет скажем, 40.... 20 минут назад, Constantin сказал: И на сладкое: начиная с версии v6.36, в адресные листы можно добавлять доменные имена! *) firewall — allow to add domain name to address-lists (dynamic entries for resolved addresses will be added to specified list); А то, что я делал в самом первом посту не наводит на мысль, что это одно и то же??? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted March 20, 2018 Скорее всего вам нужно что-то вроде web-proxy. Там легко закрывать все и разрешать то, что надо. На микротике есть такой прокси. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vovansgz Posted March 20, 2018 3 минуты назад, Saab95 сказал: Скорее всего вам нужно что-то вроде web-proxy Где-то пару лет назад я его поднимал, но сразу же отвалились такие сервисы как сбербанк онлайн и т.п. Как сейчас дела с этим обстоят? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
DRiVen Posted March 20, 2018 Запретите обращения из LAN по 53 порту на любые адреса, кроме самого МТ (если это ограничение не для всех - можно через Address List), отключите получение пиринговыхс ДНС с аплинка, впишите статические ДНС-записи для "разрешенных" сайтов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...