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

Apache 基于本地或远程网络连接的DNS重定向,apache,dns,debian,iptables,openvpn,Apache,Dns,Debian,Iptables,Openvpn,我有一个域名mysite.com指向我的专用服务器(debian 7)。 经过身份验证的用户将使用本地地址和伪装的OpenVPN 我要做的是将未经身份验证的用户发送到服务器的远程ip,并将经过身份验证的用户发送到本地ip。为了让事情变得更有趣,我设置了一个反向代理,将一个子域发送到另一个端口 到目前为止,我已经研究了iptables预路由和apache2代理 基本思路是,如果用户可以访问10.8.0.1,则域mysite.com应解析为10.8.0.1,否则应解析为远程ip。如何实现这一点?op

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

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

到目前为止,我已经研究了iptables预路由和apache2代理


基本思路是,如果用户可以访问10.8.0.1,则域mysite.com应解析为10.8.0.1,否则应解析为远程ip。如何实现这一点?

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

在openVPN配置中,您可以添加如下内容(假设您的DNS服务器具有IP
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";
   };
}

谢谢你的回复!实际上,我不想为此托管自己的DNS服务器,但这似乎是唯一的办法。GoDaddy正在托管我的域名,因此我没有太多的控制权。我目前正在推动谷歌的公共dns wigth OpenVPN,但我将对此进行研究。您可以仅为经过身份验证的主机设置dns服务器(跳过“匿名”视图),以覆盖GoDaddy解析程序。花了一些时间学习dns和绑定,但使用上述方法进行了设置和工作。谢谢
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";
   };
}