如何让 DNS 和 VPN 良好地协同运行?

如何让 DNS 和 VPN 良好地协同运行?

当我在工作时,用电缆连接笔记本电脑,我立即进入了我们的内部网络。因此,我可以直接连接到内部计算机,无需域名:ssh host1,使用域名:ssh host1.example.com或直接通过 IP ssh 192.168.100.101:。

但在家时我需要先登录我们的 vpn。之后我就可以安全地
连接ssh host1.example.comssh 192.168.100.101但是我怎样才能去ssh host1上班呢?

我在 Ubuntu 18.04.3 LTS 上,我使用 OpenVPN 2.4.4 连接到 VPN。

直到最近我才开始使用它,但事实证明我已经全部我的流量通过 VPN 路由,这当然让我感觉好像在办公室,但它也为非
办公室流量增加了一些额外的往返。因此,在 NetworkManager->编辑 VPN 连接->“IPv4
设置”->“路由...”中有一个复选框“仅将此连接用于其网络上的资源”。

在此处输入图片描述

如果未选中,我会得到一条将所有流量导向 vpn 接口(tun0)的默认路由:

$ ip route
default via 172.30.0.25 dev tun0 proto static metric 50 
default via 192.168.1.1 dev enxc8f750cc2555 proto dhcp metric 100 
...

如果选中,第一个默认规则就会消失:

$ ip route
default via 192.168.1.1 dev enxc8f750cc2555 proto dhcp metric 100
...

当然还有其他路由规则可以完成 vpn 配置,但我认为对于问题描述来说这里不需要这些规则。

因此,选中该框后,我可以使一切正常工作(DNS查找除外),并且网络的其余部分可以获得更快的体验(我认为)。

我一直在摆弄 resolve,但还没有弄清楚如何让它
工作。我尝试指出/etc/resolve.conf以下两个方面:

/run/systemd/resolve/resolv.conf
/run/systemd/resolve/stub-resolv.conf

但行为上似乎没有任何改变。

search我猜想这与设置有关,resolve.conf但我无法弄清楚具体是如何有关的。

所以我想要的(我认为)是:

  • 无论我在哪里连接,都可以通过 DHCP 获取网络配置(有效)
  • 如果我登录到 VPN,VPN 内的 DNS 应该是默认的。

我可以如何更改、检查和验证哪些内容?有什么建议?有疑问吗?

或者我在这里问错了问题?

答案1

VPN 接口需要添加本地工作 DNS 地址和搜索域。通过 VPN 远程连接到您的主站点的机器并检查 DNS 地址。您还需要您的 DNS 后缀,也称为搜索域。(例如,如果您的完全合格域名是 computer1.xyz.com 或 comp1.abc.local,则搜索域/后缀将是 xyz.com 或 abc.local)

获得此信息后,更改 netplan 中的设置,添加名称服务器(dns 服务器)和 dns 搜索后缀。如下所示:

$ sudo vi /etc/netplan/50-cloud-init.yaml

ethernets:
        vpn0:
            addresses: [192.168.86.30/24]
            dhcp4: no
            dhcp6: no
            gateway4: 192.168.86.1
            nameservers:
                    addresses: [192.168.86.10] #dns server address goes here
                    search: [xyz.com] #end of FQDN goes here


$ sudo netplan apply

仅添加名称服务器/地址/搜索值。忽略其他。此后可能必须打开和关闭 VPN 接口。

相关内容