【问题标题】:DNS redirect based on local or remote network connection [closed]基于本地或远程网络连接的 DNS 重定向 [关闭]
【发布时间】:2013-07-10 17:48:30
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: apache dns debian iptables openvpn


    【解决方案1】:

    openVPN 允许您指定 DNS 服务器以及 VPN-IP 地址。如果您控制此 DNS 服务器,则可以轻松创建一个 ACL,该 ACL 将为来自 VPN 网络的查询返回 10.8.0.1,当查询来自此网络之外时返回公共 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";
       };
    }
    

    【讨论】:

    • 感谢您的回复!我实际上不想为此托管我自己的 DNS 服务器,但似乎它可能是唯一的方法。 GoDaddy 托管我的域,因此我没有太多控制权。我目前正在推动 google 的公共 dns wigth OpenVPN,但我会对此进行调查。
    • 您可以为经过身份验证的主机设置 DNS 服务器(跳过“匿名”视图),它会覆盖 GoDaddy 解析器。
    • 花了一些时间来学习 DNS 和 Bind,但使用上述方法进行了设置和工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2013-12-10
    • 2023-02-07
    相关资源
    最近更新 更多