基于本地或远程网络连接的DNS重定向

时间:2013-07-10 17:48:30

标签: apache dns debian iptables openvpn

我有一个域名mysite.com指向我的专用服务器(debian 7)。 经过身份验证的用户将支持具有本地地址和伪装的OpenVPN。

我想要做的是将未经身份验证的用户发送到服务器的远程IP,将经过身份验证的用户发送到本地IP。为了使事情变得更有趣,我有一个反向代理设置来将子域发送到不同的端口。

到目前为止,我已经看过iptables prerouting和apache2 proxy。

基本思路是如果用户可以达到10.8.0.1域mysite.com应该解析为10.8.0.1否则应该解析为远程ip。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

openVPN允许您指定DNS服务器以及VPN-IP地址。如果您控制此DNS服务器,则可以轻松创建一个ACL,该ACL将返回10.8.0.1来自VPN网络的查询,以及查询来自此网络外的公共IP地址。

在openVPN配置中,您将添加如下内容(假设您的DNS服务器具有IP 10.8.0.53

push "dhcp-option DNS 10.8.0.53"

如何配置DNS服务器显然取决于您使用的实际服务器(您没有提及)。 在bind9中,它看起来类似于以下内容:

acl authenticated { 10.8.0.0/24; };

view "authenticated" {
   match-clients { authenticated; };
   zone "mysite.com" {
      type master;
      file "/etc/bind/db.authenticated";
   };
};
view "anonymous" {
   match-clients { any; }
   zone "mysite.com" {
      type master;
      file "/etc/bind/db.anonymous";
   };
}