我们对一些内部域进行了 DNS 设置,如下所示:
service.company.com CNAME service.company.lan
service.company.lan CNAME service01.company.lan
service01.company.lan A 10.0.3.4
这意味着我们已经设置了一个公共 DNS(.company.com) 条目指向内部条目 (.company.lan),因为 (*.company.com) 上存在受信任的 SSL 证书。
内部服务只能通过建立的 OpenVPN 连接才能连接和解析内部服务器,并且 OpenVPN 配置为使用我们的内部 DNS 服务器(10.0.0.5)。
这在 Mac 上运行良好,但对于我家里的 Ubuntu 16.04 来说却不行 :(
问题是,在已建立的 OpenVPN 连接上,内部 DNS 仅用于 *.comapany.lan 域,但不用于 CNAME 为 *.company.lan 的 *.company.com。
$ dig service-testing.company.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> service-testing.company.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 27522
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;service-testing.company.com. IN A
;; ANSWER SECTION:
service-testing.company.com. 0 IN CNAME service.testing.company.lan.
;; AUTHORITY SECTION:
. 856 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017052600 1800 900 604800 86400
;; Query time: 3 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Fri May 26 12:13:53 CEST 2017
;; MSG SIZE rcvd: 155
-
$ dig service.testing.company.lan
; <<>> DiG 9.10.3-P4-Ubuntu <<>> service.testing.company.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56868
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;service.testing.company.lan. IN A
;; ANSWER SECTION:
service.testing.company.lan. 60 IN CNAME service01.testing.company.lan.
service01.testing.company.lan. 60 IN A 10.0.40.60
;; Query time: 51 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Fri May 26 12:14:52 CEST 2017
;; MSG SIZE rcvd: 85
如果我强制使用内部 DNS 服务器,它就会起作用:
$ dig @10.0.0.5 service-testing.company.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @10.0.0.5 service-testing.company.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13259
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;service-testing.company.com. IN A
;; ANSWER SECTION:
service-testing.company.com. 60 IN CNAME service.testing.company.lan.
service.testing.company.lan. 60 IN CNAME service01.testing.company.lan.
service01.testing.company.lan. 60 IN A 10.0.40.60
;; Query time: 127 msec
;; SERVER: 10.0.0.5#53(10.0.0.5)
;; WHEN: Fri May 26 12:17:51 CEST 2017
;; MSG SIZE rcvd: 119
我可以添加我们的内部 DNS 以/etc/resolv.conf
使其工作,但每次连接时都会重写此文件。
有什么想法吗?
答案1
当您的 OpenVPN 客户端配置文件包含以下内容时,OpenVPN 的 Update resolv-conf 脚本/etc/openvpn/update-resolv-conf
应自动更新您的/etc/resolv.conf
连接:
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
某些 GUI 网络管理器可能有自动更新脚本来更新它们。Ubuntu 似乎有网络管理器。我认为如果 NetworkManager 通过network-manager-openvpn
模块处理你的 OpenVPN 连接,它就会知道如何处理/etc/resolv.conf
。
如果 NetworkManager 已经处理了连接,你可能需要通过更改网络连接配置文件来解决此问题自动 (DHCP)到仅限自动 (DHCP) 地址。