背景

背景

背景

我们的客户在防火墙后面有一个开发环境。他们希望我们能够访问开发环境中的资源,但不想授予我们 VPN 访问权限。相反,他们将我们控制的 IP 列入了白名单。在该 IP 地址的机器上,我安装了 openVPN,以便我们到他们开发机器的所有流量都来自该 IP 地址。但是,DNS 仍然失败,因为他们的开发子域未在开发环境之外的名称服务器上注册。所以我的计划是让 VPN 盒也充当 DNS 服务器。

客户说我们应该将 id.dev.client.com 的 CNAME 改为 id.client.edgekey.net,以使 DNS 正常工作。因此,我在运行 openVPN 的同一台机器上安装了 bind9,并创建了以下文件:

/etc/bind/named.conf.options

options {
        directory "/var/cache/bind";

        forwarders {
                185.121.177.177;
         };

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

/etc/bind/named.conf

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

/etc/bind/named.conf.local

zone "dev.client.com" {
  type master;
  file "/etc/bind/zones/dev.client.com";
};

/etc/bind/zones/dev.client.com

id.dev.client.com.     IN      SOA     my.dns.server.com.  admin.example.com.(
        2019041103
        28800
        3600
        604800
        38400
)

id.dev.client.com.      IN      CNAME   id.client.edgekey.net.

问题

如果我通过 ssh 进入 vpn 框并执行 nslookup,将框自己的名称指定为名称服务器,这似乎会产生所需的结果。 nslookup id.dev.client.com my.dns.server.com产生以下内容:

Server:     my.dns.server.com
Address:    123.45.67.10#53

id.dev.client.com   canonical name = id.client.edgekey.net.
id.client.edgekey.net   canonical name = e5555.x.akamaiedge.net.
Name:   e5555.x.akamaiedge.net
Address: 55.55.55.55

但是,如果不指定名称服务器而只是运行,nslookup id.dev.client.com我会得到结果:

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find id.dev.client.com: NXDOMAIN

并且尝试在开发环境中卷曲站点会失败。

我已允许端口 53 上的传入和传出流量,并将机器自己的 IP 添加到 netplan 配置的名称服务器部分,因此它应该使用自身作为 DNS,对吗?我还需要做什么才能使 DNS 在这台机器上正常运行?

答案1

据我所知,唯一缺少的是您需要使用 PUSH 选项将 DNS 选项推送到 VPN 客户端。这应该添加到服务器配置中:

push "dhcp-option DNS <local IP of the OpenVPN IP>"

可以使用或类似方法找到本地 IP ifconfig- 您正在寻找接口的 IP tun

这将确保 DNS 由正确的服务器托管,并且 DNS 通过 VPN 调用。

相关内容