如何使短(非完全限定)主机名与 Mountain Lion、Tunnelblick、pfSense、OpenVPN 一起使用

ric*_*ler 3 vpn openvpn mac-osx pfsense

我在 Mac OS X 10.8.2 (Mountain Lion) 上使用 Tunnelblick 3.3beta21b 连接到 pfSense/OpenVPN 虚拟专用网络。当连接到 VPN 时,我可以访问我们数据中心中的机器。这是 pfSense 2.0.1。

数据中心的机器运行 Ubuntu 12.04 Precise。当我在数据中心的一台机器上时,我可以用短(非完全限定)主机名 ping 其他机器:

web1:~  $ ping web2
PING web2 (10.10.160.6) 56(84) bytes of data.
64 bytes from web2 (10.10.160.6): icmp_req=1 ttl=64 time=0.380 ms
Run Code Online (Sandbox Code Playgroud)

数据中心中任何给定 Ubuntu 机器上的 resolv.conf 文件如下所示:

web1:~  $ cat /etc/resolv.conf 
nameserver 10.10.160.2
nameserver 10.10.160.45
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在家通过 TunnelBlick/OpenVPN 连接时,短名称在我的 Mac 上不起作用:

mac:~  $ ping web2
ping: cannot resolve web2: Unknown host
Run Code Online (Sandbox Code Playgroud)

但是,nslookup 会为“web2”返回正确的 IP 地址,如果我使用尾随点 ping,它会起作用:

mac:~  $ ping web2.
PING web2 (10.10.160.6) 56(84) bytes of data.
64 bytes from web2 (10.10.160.6): icmp_req=1 ttl=64 time=0.380 ms
Run Code Online (Sandbox Code Playgroud)

当通过 Tunnelblick 连接时,我的 Mac 的 resolv.conf 看起来像这样。请注意,Tunnelblick 添加了“搜索”行;当我与 VPN 断开连接时它不存在:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
search company.com
nameserver 10.10.160.45
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

如何配置 Mac OS X 或 Pfsense/OpenVPN 或 Tunnelblick,以便我可以使用我的 Mac 上的短主机名?

ric*_*ler 5

选项 1:重新配置 pfSense

在 pfSense 中配置 OpenVPN 时,字段“DNS 默认域”作为“搜索”域传递给客户端。如果该字段未选中或留空,OpenVPN 将传递“dhcp-option DOMAIN openvpn”,这会导致 resolv.conf 看起来像这样,这无济于事:

search openvpn
nameserver 10.10.160.45
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

我们的解决方案是将“DNS 默认域”设置为简单的点:“.”。

在 pfSense 中设置为点的 DNS 默认域字段的屏幕截图

这会导致 resolv.conf 看起来像这样,这很有效!

search .
nameserver 10.10.160.45
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

我现在可以使用短主机名 ping。

mac:~  $ ping web2
PING web2 (10.10.160.6) 56(84) bytes of data.
64 bytes from web2 (10.10.160.6): icmp_req=1 ttl=64 time=0.380 ms
Run Code Online (Sandbox Code Playgroud)

这是一个简单的解决方案,因为它不需要重新配置每个客户端。

选项 2:重新配置 Mac OS X

我还没有尝试过,但有可能将Apple 的 DNS 解析器重新配置为不附加搜索域,从而使其更像 Ubuntu。Lion 或 Mountain Lion 中的某些内容似乎发生了变化,导致MAC OS X DNS 无法按预期工作

选项 3:重新配置 OpenVPN

看来pfSense 只是将“DNS 默认域”字段传递给 OpenVPN,它将其添加为推送配置选项,如下所示:

dhcp-option DOMAIN company.com
Run Code Online (Sandbox Code Playgroud)

如果未设置 DOMAIN,OpenVPN 会将其设置为“openvpn”。这不是 pfSense 问题。

IMO,如果可以配置 OpenVPN(或者我可以学习如何配置它)不强制设置 DOMAIN,那就太好了。理论上,这会导致搜索域在 resolv.conf 中保持未设置状态,并允许使用短主机名。