Как заблокировать некоторые сайты при подключении через VPN?
Настраиваю VPN-сервер на VLESS + Reality через 3x-ui. Нужно заблокировать доступ к ряду сайтов для подключённых пользователей. Блокировка через 3x-ui не помогла. Подскажите рабочее решение.
На маршрутизаторе добавляешь DNS
www.intel.com - 127.0.0.1 для примера
Естественно всем DNS раздать указывая свой маршрутизатор а не 8888
Если микрот, то просто. Правило в фаерволе на адреслист Blocked_Sites.
Hardoman, Благодарю. Проблема в том, что у меня VLESS + Reality, и трафик не идёт через tun, у клиентов нет отдельных IP, всё приходит через сокет.
Потому route и iptables по IP не работают, /etc/hosts не влияет.
Думаю идти в сторону DNS hijack или локального фильтрующего DNS, но надо еще разобраться как оно работает и поможет ли оно мне.
Nutelka, ок, даже если у клиентов нет своего ip, запретить для всех через iptables, hosts файл или маршруту по-прежнему реально
Потому что vless все равно резолвит все, абсолютно все запросы сначала через hosts, а потом через DNS и отдаёт в сервис. Эти сетевые службы работают на более низком уровне и обслуживают более верхние протоколы.
iptables вообще работает на сетевом уровне модели osi, и ему пофиг от какого прикладного протокола приходят пакеты.
Для него это vless все равно, что http, разницы нет
Hardoman, Да, iptables и /etc/hosts работают на нижнем уровне.
Но я уже пробовал добавить домен в /etc/hosts, он не сработал, потому что клиент сам резолвит у себя и стучится сразу по IP.
В таком случае /etc/hosts на сервере не участвует, и блокировка не срабатывает.
С iptables тоже можно, но тогда нужно знать IP-назначения, что очень запарно. Пропинговав 2ip.ru, я не смог заблокировать его по ip, но вот уже 2ip.io получилось, но я все таки хочу найти возможность блокировки по доменам.
использовал эти команды для блокировки 2ip.io:
iptables -A OUTPUT -d 188.40.167.81 -j DROP
iptables -A FORWARD -d 188.40.167.81 -j DROP
Nutelka, все верно.
Вы можете (должны) заставить клиента использовать ваш DNS
И второе - для большинства крупных ресурсов отдаётся не один адрес, а несколько.
Кроме того, для популярных ресурсов типа ютуб/инста и пр будет большой сабнет. Его можно заблокировать целиком.
Также, если целевой сайт за cloudflare, то вам и клиенту могут возвращаться разные IP CF, в зависимости от региона.
Поэтому надо блокировать все :)
Hardoman, я вот пробовал перехватывать днс запросы на сервере через dnsmasq, но у меня ничего не получилось. Буду благодарен, если расскажете как это можно сделать
Nutelka, все, что вы и делали. Узнать список ip адресов и сабнетов, котрвие хотите заблокировать и через iptables их запретить.
Я просто перечислил, откуда вытащить информацию по IP адресам вместо перехвата