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

Man*_*lva 6 linux kernel dns vpn cisco

如上一个问题所述,我想同时连接到 2 个 VPN 服务器,并为每个连接指定我想使用它访问的计算机的 IP。这个 VPN 连接之一是用vpnc一个default.conf文件完成的,另一个是用 Cisco 客户端完成的(我现在无法连接,vpnc因为我没有连接所需的 IPSecrete 元素)。

我可以通过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
Run Code Online (Sandbox Code Playgroud)

现在,在同时运行这两个连接之前,我尝试对 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
Run Code Online (Sandbox Code Playgroud)

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

谢谢

cas*_*cas 6

/etc/resolv.conf定义了计算机主机名解析(例如,如果有的话,当你尝试解决非FQDN主机名缺省域名搜索....查找的裸www变成www.yourdomain.example.com),并以该服务器被用来做查询.

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

没有什么能阻止你将 /etc/resolv.conf 改回你想要的样子,VPN 客户端软件甚至可以为你提供一些自动化的方法来做到这一点(否则只需 cp resolv.conf 的备份副本回来到位......但您可能难以解析某些名称(例如,某些域设置有公共和私有视图 - 外部人员只能看到“公共”名称,而内部人员 - 包括 VPN 客户端 - 查看所有内部私有名称同样)。

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