我在接口上使用 VPN,例如tun0 (2.2.2.0/24),而 LAN 网络在接口上eth0(1.1.1.0/24)。
我用域名系统将特定地址路由到我的 LAN,并且这些地址具有它们的 VPN 网络对应地址,它们应该链接到驻留在同一台机器上的相同主机名,该机器也是 DNS。(接口有防火墙,因此 eth0 无法与 tun0 通信,反之亦然)
因此我们将有两个如下的主机文件:
主机.eth0:
1.1.1.1 example.com
主机.tun0:
2.2.2.1 example.com
我发现有些困难,需要告诉 dnsmasq 对特定接口使用特定的主机文件,而无需以类似于以下的方式启动 dnsmasq 两次:
dnsmasq -I lo -i eth0 -H hosts.eth0
及其对应物
dnsmasq -I lo -i tun0 -H hosts.tun0
这种方法在 Debian 8 上不太好,我认为一定有更好的方法来实现我想要做的事情。我该怎么办?
答案1
这能满足您的要求吗?
-y, --本地化查询
返回来自 /etc/hosts 的 DNS 查询的答案,这些答案取决于接收查询的接口。如果 /etc/hosts 中的名称有多个与之关联的地址,并且这些地址中至少有一个与查询发送到的接口位于同一子网,则仅返回该子网上的地址。这允许服务器在 /etc/hosts 中拥有与其每个接口相对应的多个地址,并且主机将根据它们所连接的网络获取正确的地址。目前此功能仅限于 IPv4。