什么是 resolv.conf 以及为什么 VPN 客户端会破解它?

什么是 resolv.conf 以及为什么 VPN 客户端会破解它?

正如之前所述问题我想同时连接到 2 个 VPN 服务器,并为每个连接指定我想要访问的计算机的 IP。其中一个 VPN 连接是通过vpnc一个default.conf文件完成的,另一个是通过 Cisco 客户端完成的(我目前无法连接,至少目前无法连接,vpnc因为我没有连接所需的 IPSecret 元素)。

我可以通过以下方式完成连接vpnc:我可以连接配置目标 IP 以使用创建的接口,如下所示:

#!/bin/sh

#Get default gateway
DEFGW=`ip route list | grep default | awk -F' ' '{print $3 }'`
DEVICE=`ip route list | grep default | awk -F' ' '{print $5 }'`

echo "Default Gatway is: $DEFGW on device $DEVICE"

echo "Starting vpnc"
sudo vpnc

echo "Adding routes to known computers through VPN network interface"
sudo route add -net 132.181.11.0  netmask 255.255.255.0 dev tun0

echo "Adding all other routes through standard network interface"
sudo route del default
sudo route add default gw $DEFGW dev $DEVICE

现在,在同时运行两个连接之前,我尝试对 Cisco 客户端执行相同的操作,但我遇到了resolv.conf. VPN 客户端使用域值和 DNS 服务器值修改此文件。运行以下脚本会导致 DNS 解析错误(由 chrome 报告)

#!/bin/sh

#Get default gateway
DEFGW=`ip route list | grep default | awk -F' ' '{print $3 }'`
DEVICE=`ip route list | grep default | awk -F' ' '{print $5 }'`

echo "Default Gatway is: $DEFGW on device $DEVICE"

echo "Starting cisco"
sudo /opt/cisco/vpn/bin/vpn connect 134.214.244.203

echo "Adding routes to computers through VPN network interface"
sudo route add -net 132.212.146.156  netmask 255.255.255.255 dev cscotun0

echo "Adding all other routes through standard network interface"
sudo route del default
sudo route add default gw $DEFGW dev $DEVICE

欢迎对此提供任何帮助和评论,并解决问题。

谢谢

答案1

/etc/resolv.conf定义计算机如何解析主机名(例如,当您尝试解析非 FQDN 主机名时,将搜索哪些默认域名(如果有)......裸露的查找www变为www.yourdomain.example.com),以及使用哪些名称服务器进行查找。

VPN 客户端可能修改 /etc/resolv.conf 的原因之一(也是最有可能的)是让 VPN 客户端计算机使用特定的名称服务器进行主机名解析 - 例如,如果 VPN 路由器运行缓存名称服务器。

没有什么可以阻止您将 /etc/resolv.conf 更改回您想要的内容,VPN 客户端软件甚至可以为您提供一些自动化方法来执行此操作(否则只需将 resolv.conf 的备份副本复制回来即可)但您可能难以解析某些名称(例如,某些域设置了公共和私有视图 - 外部人员只能看到“公共”名称,而内部人员 - 包括 VPN 客户端 - 可以看到所有内部、私有名称以及)。

解决此问题的一种方法是 cp 不是原始 resolv.conf 的备份副本,而是包含您首选的名称服务器和搜索域以及 VPN 客户端软件所需内容的修改副本。

答案2

/etc/resolv.conf列出了名称服务器您的计算机用来查找的域名系统名称。要将数据包发送到计算机,您需要知道它的IP地址,但 IP 地址(或多或少)与特定的 Internet 服务提供商和位置相关联,并且可以更改,因此它们通常不用于指定计算机。相反,使用 DNS 名称。

通常,为您提供 Internet 访问的任何人(例如您的 ISP)都会提供可供使用的名称服务器。当然,名称服务器本身必须通过其 IP 地址进行访问。通常,当您连接动态主机配置协议或者购买力平价,您的计算机会接收 DNS 服务器地址,并且软件会/etc/resolv.conf自动更新以添加提供商的 DNS 服务器地址,并在您断开连接时将其删除。

在简单的情况下,您只需要 中列出的单个 DNS 服务器/etc/resolv.conf。如果该服务器没有查询的答案,它将根据需要询问其他服务器。通常,当您通过提供商或在大型组织内部进行连接时,您会看到两个地址:主服务器和备用服务器(以防主服务器脱机)。

对于基于 Debian 的发行版,请确保您已resolvconf安装该软件包(现在在 Ubuntu 下默认安装),因为它负责管理/etc/resolv.conf.它通常会自动把事情做好,如果没有,也很容易进行调整。

如果通过您的两个 VPN,您可以使用单个名称服务器,请安排一些工作名称服务器最终位于/etc/resolv.conf.最好将您不希望 DNS 覆盖的 VPN 客户端配置为不覆盖/etc/resolv.conf(任何好的 VPN 客户端都应在其配置文件或配套脚本中将此作为选项)。

如果您需要多个名称服务器,例如因为每个 VPN 都允许您访问不同的内部网络,则您需要连接到一个用于调度请求的名称服务器。我建议域名解析,它重量轻、易于配置且功能强大,足以满足大多数单机和小型网络设置的需要。如果您运行自己的名称服务器,则/etc/resolv.conf必须包含nameserver 127.0.0.1且不包含其他nameserver指令,因此请确保您的 VPN 客户端不会覆盖该指令。

相关内容