首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VPN连接上自动获取新的名称服务器

问如何在VPN连接上自动获取新的名称服务器
EN

Unix & Linux用户
提问于 2016-05-26 18:01:35
回答 2查看 14.8K关注 0票数 14

我运行的是ubuntu xenial 16.04

我们使用openvpn连接到虚拟私有云。云有自己的DNS服务器(本地路由--家庭或办公室)。

当我连接到VPN时,该网络中的所有I都是可用的,但我无法通过主机名到达任何I。原因很简单: resolv.conf文件仍然显示我的本地办公名称服务器。如果我手动覆盖resolv.conf以获得正确的名称服务器,那么一切都是好的。

那么,如何使它在连接到虚拟专用网时自动重新配置resolv.conf?

我可以连接到系统事件并执行脚本吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-06-07 23:21:09

OpenVPN包在/etc/openvpn/update-resolv-conf中有一个脚本。您需要将其配置为:

代码语言:javascript
复制
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

这将从dhcp-option DNS对等/服务器传递的OpenVPN选项中获取DNS服务器地址,并相应地配置resolvconf。它也处理dhcp-option DOMAIN。

但是,这并不完美,因为这将将这些名称服务器放在现有名称服务器列表的前面,而不是覆盖名称服务器列表。如果您使用的是openresolv,则可以使用-x覆盖DNS配置,而不是对其进行前置。

如果您使用的是systemd-resolved,您可以使用连接到systemd-revolved而不是resolvconf的/etc/openvpn/update-systemd-resolved。

代码语言:javascript
复制
script-security 2 
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre

在Debian上,这个脚本在openvpn-systemd-resolved中。

票数 9
EN

Unix & Linux用户

发布于 2016-05-29 17:20:45

下面是我想出的解决方案:有一个开关,允许您在隧道启动和运行时运行脚本。我使用这个开关在本质上覆盖resolv.conf文件,其中一个我知道是正确的。我知道这完全是黑客行为。

代码语言:javascript
复制
sudo openvpn --up reset-dns.sh --client client.ovpn

脚本(重置-dns):

代码语言:javascript
复制
#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf

还有,那些人说:“天哪!你在把那条隧道当成根!”它不会以任何其他方式运行;甚至在我的DNS攻击之前。

我肯定会有更好的选择。ubuntu的网络管理器根本无法工作。我已经多次在这个问题上剪去乌本图的票

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/285735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档