-1

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

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

到目前为止,我已经查看了 iptables 预路由和 apache2 代理。

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

4

1 回答 1

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";
   };
}
于 2013-07-11T08:38:33.417 回答