我们正在运行一个有数百个(成千上万个)远程主机的研究项目。 每个主机运行OpenVPN,所以我们可以find他们,不pipe他们的“分配”的IP是什么。 我们一直在使用DynDNS来pipe理这个,但是我们遇到了一些问题(API弱/不存在,大小限制等)。
我正在寻找build立一个只有内部域(EG“our.stuff”,所以主机将是“site1.our.stuff”或“site3.net4.our.stuff”),我可以configurationOpenVPN的信息服务器。
由于我们必须将内部DNS指向这台机器,因此它必须能够路由/caching对“外部”机器的请求。 我一直在尝试阅读关于“内部DNS”,“私人”,“非路由”,但我没有太多的成功。
简介:需要关于内部cachingDNS服务器的信息。 开源的东西是理想的。 如果不是的话,我可以编写.conf的更改。
我会使用绑定,开源的DNS根服务器和安全性的尝试和certificate(每周,我会说)。
configuration一个简单的服务器recursion和一个简单的内部域(你可以称之为任何你想要的),将由这个域服务。 recursion只能用于某些IP地址,这是一个很好的做法,即使你的DNS服务器不会暴露在互联网上:
acl recurseallow { xxxx; xxxx; xxxx; }; options { <some other options you have already> allow-recursion { recurseallow; }; };
绑定还支持dynamic dns更新,您可以使用nsupdate工具使openvpn客户端更新名称服务器的名称。 它使用encryption密钥来安全地做一切事情,并创造奇迹。 这里是一个关于nsupdate的简短教程 ,一个关于dynamicDNS的 教程 。
你想要的是一个DNS服务器,既可以做“recursion查询”,也可以对你想要build立的这个域进行授权。 我build议忽略“内部DNS”的想法,只是认为它是一个具有权威和recursion能力的常规DNS服务器。 这是“内部的”,因为你只允许它从你的networking访问,比如把它放在你的防火墙后面或限制它的访问,这实际上不影响configuration。
我可能会select“BIND”,这是开源的,非常广泛的,主要是因为我熟悉它。 但几乎任何不是仅caching的服务器都可以工作。 例如,您可以使用“PowerDNS”,但不能使用名为“pdns-recursor”的仅caching变体。
在BIND中,您希望将“allow-recursion”设置为您希望能够访问的IP地址列表,然后为OpenVPN IP设置一个区域。 您可以使用dynamicDNS更新工具来修改区域(确保区域文件及其所在目录可由DNS服务器写入 – 这是用户在此configuration中遇到的问题),也可以使用shell脚本或直接更新区域文件。
当OpenVPN客户端连接到本地或客户端可以通过VPN隧道查询时,可以dynamic创buildDNS条目。
一种这样的方法可能是通过LDAP设置DNS后端
http://freshmeat.net/projects/ldap2dns/
然后,您可以使用OpenVPN中的预发布脚本添加或修改DNS条目。 看到类似这样的例子,说明如何使用LDAP前/后脚本与LDAP交互工作
否则,你可以用MySQL来后端,这可能会使用类似的方法更简单一些。