我不确定是否可以做到,但这就是我想做的。我使用的是 Mac,但首先尝试解决 Linux 的问题,这可能更通用,也更容易。
我希望我的系统配置
8.8.8.8
为在每种用途下使用通用 DNS。我希望一个进程(即 Plex 服务器)使用另一个 DNS 服务器 - 即允许我绕过付费内容订阅的区域限制的 DNS(嘿,至少我说得没错)。我们将其称为 DNS 服务器
3.3.3.3
。
这样做的原因是,如果 DNS 出现问题,我不希望损害整个系统的稳定性3.3.3.3
。是的,我更信任 Google 的 DNS。
有可能实现这种诡计吗?或者,还有其他聪明的方法来实现这个目标吗?
我周围还有其他几台机器,如果有人能想到一个有创意的解决方案,我也愿意进行路由欺骗等:)
非常感谢!
约纳坦
答案1
我想你需要的是一种“类似容器”的技术。
看一下docker(现在非常著名的容器技术)。
它在单独的容器中运行该进程,该容器可能具有不同的控制组、资源命名空间等,并且可能具有不同的 DNS 服务器配置。
答案2
使用 Linux 的 mount 命名空间覆盖/etc/resolv.conf
您想要的内容。Bubblewrap 是一款无需 root 权限即可完成此操作的好工具。
bwrap --dev-bind / / --ro-bind-data {FD} /etc/resolv.conf
FD 是包含的文件描述符nameserver {the-dns-you-need}
。
请记住使您的进程(Plex服务器)无法访问系统的DNS缓存(例如bwrap --tmpfs /var/run/nscd/
)
整个命令:
bwrap --dev-bind / / --ro-bind-data {fd} /etc/resolv.conf --tmpfs /var/run/nscd/ sh -c "your command and arguments"
我编写了一个 bash 脚本来完成所有步骤。给你