В настоящее время я пытаюсь заблокировать некоторые веб-сайты по их доменным именам для всех клиентов моего сервера OpenVPN.
Моей первой идеей было использовать /etc/hosts
файл. Но его эффекты, похоже, ограничиваются только хостом и не принимаются во внимание OpenVPN.
Затем я попытался настроить bind9 и связать его с OpenVPN, но это решение оказалось безуспешным и неудобным в использовании.
После этого я подумал об использовании iptables для сброса всех пакетов с / на эти веб-сайты, но эта ветка форума заставило меня подумать иначе, поскольку поведение iptables с FQDN может вызвать сложные проблемы.
У вас есть решение для блокировки веб-сайтов для всех клиентов, использующих сервер OpenVPN, на котором я являюсь root?
Вы делаете это так же, как блокируете веб-сайты для пользователей в сети вашей компании: запускаете прокси-сервер и пропускаете через него весь веб-трафик.
Я столкнулся с подобной проблемой. Я просто изменил DNS в файле server.conf OpenVPN на
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
то есть OpenDNS И из панели управления OpenDNS я заблокировал сайты, к которым клиенты не хотели получать доступ через VPN. P.S. Потребуется бесплатная домашняя учетная запись OpenDNS вместе со статическим IP-адресом VPN-сервера.
Вы также можете попробовать фильтровать с помощью iptables и возможностей фильтрации строк. Должно получиться примерно так:
iptables -A FORWARD -m string --string 'Host: facebook.com' -j DROP
Это было бы довольно сложно (поскольку вам нужно вести список имен DNS и создавать такую команду для каждого из них), но, как уже указывал @LucasKauffman, вы не контролируете DNS, поэтому никакой фильтрации там нет.
Также обратите внимание, что это будет работать только для HTTP, а не для HTTPS, поскольку все запросы зашифрованы в HTTPS.
Это вполне логично, поскольку DNS-сервер, используемый клиентом, вероятно, не является вашим хостом. Что вы можете сделать, так это получить все их IP-адреса и заблокировать эти IP-адреса вместо имен хостов.
Даже когда вы настраиваете DNS-сервер, который «блокирует» эти доменные имена, клиент все равно может выбрать работу с другим DNS-сервером, и он сможет обойти этот контроль.