我有一个 tinc VPN 网状网络,它被世界各地各种类型的主机使用,我想部署一个 dockerized dnsmasq 名称服务器以供该 tinc 网状网络内使用。
我已经成功构建并配置了一个“胖”多进程 docker 容器(使用 runit),它可以满足我的要求。它同时运行 tinc 进程和 dnsmasq 进程,并且 dnsmasq 配置为绑定到容器中的 tinc 网络接口。但现在我正尝试使用 1 进程容器构建相同的功能。
我知道如何构建和配置基本的 1 进程 dnsmasq 容器,也知道如何构建和配置基本的 1 进程 tinc 容器。我可以编写一个简单的 docker-compose 文件来启动它们。
我不知道如何使用 tinc 容器作为网关,将 dnsmasq 容器暴露给网状网络,从而允许该 tinc 网络上的其他主机针对 dnsmasq 运行 DNS 查询。这可能吗?
答案1
在进行了一些深入的谷歌搜索并适应了 openVPN 的类似用例之后,我找到了一个可行的设置。从概念上讲,你将 dnsmasq 容器的网络绑定到 tinc 容器。以下是简短的 docker-compose.yml,显示了基本内容:
version: '3'
services:
tinc:
...
dnsmasq:
depends_on:
- tinc
network_mode: "service:tinc"
如果您docker exec -ti dnsmasq /bin/sh
在启动后ifconfig
在 dnsmasq 容器内执行操作,您将看到 tinc 容器创建的 tinc 网络接口。因此,如果您的 dnsmasq 配置绑定到该网络接口,它就会正常工作。
凉爽的。