我想要的是当我忘记使用 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
”。