有没有办法仅在未使用 VPN 时阻止访问某些域?

有没有办法仅在未使用 VPN 时阻止访问某些域?

我想要的是当我忘记使用 VPN 隐藏我的 IP 时阻止某些网站。因此这些网站需要用我自己的 IP 阻止,但可以通过 VPN 访问。

我的路由器有家长控制功能,它可以给我提供这个功能,但只有当我在家时才有。如果我把笔记本电脑带到某个地方,我仍然会忘记使用 VPN 并访问那些网站。这就是为什么如果有软件方法的话我更喜欢它。此外,我希望这些域名在我的整个电脑上被阻止,所以仅限浏览器的方法对我来说不起作用。

有没有应用程序或类似的东西可以做到这一点?如果没有,我也愿意开发一个,所以如果我能得到一些关于如何实现这一点的建议就太好了。例如,有什么local virtual DNS东西?比如,我可以制作一个在我自己电脑上运行的 DNS,充当中间人并处理这些被阻止的网站,然后将其他所有事情委托给普通 DNS 吗?

答案1

是的,本地 DNS 确实存在,但对于 Windows 10 来说并非如此;如果您在 Linux 或 BSD 上运行它,您会有更好的选择。(它实际上并不“虚拟”,它与许多 ISP 使用的软件相同,并且按照相同的原理工作。)

各种 DNS 解析器都支持覆盖某些查询(包括 Unbound 和 Dnsmasq)或至少直接阻止它们(BIND 9 使用其“RPZ”功能)。例如,在 unbound.conf 中:

server:
    # Block queries outright
    local-zone: "example.com." refuse
    # Override with a fake IP address
    local-zone: "example.net." redirect
    local-data: "example.net. A 192.168.0.1"

看起来dnscrypt-代理运行于 Windows 和有支持用于阻止特定域名。

(对于 Windows 也有 MaraDNS Deadwood,但我不确定它是否有类似的东西。)


还有另一种机制DNS – “/etc/hosts”文件,在 Windows 上也存在%SystemRoot%\System32\Drivers\etc\hosts。它不需要任何新服务,而且确实经常用于阻止网站。

以管理员权限运行文本编辑器,打开“hosts”文件,并添加将这些域名重定向到某些不存在的 IP 地址的行:

240.0.0.0   example.com www.example.com
240.0.0.0   example.org
240.0.0.0   mail.example.org

hosts 文件有一个缺点,即无法匹配任意子域名– 因此您无法阻止“ *.example.com”,尽管您分别阻止“ example.com”和“ www.example.com”。

相关内容