首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenVPN、解析器和DNS域解析

OpenVPN、解析器和DNS域解析
EN

Unix & Linux用户
提问于 2015-06-15 10:06:44
回答 3查看 4.7K关注 0票数 10

在site1期间,我需要通过OpenVPN连接到site2。连接后,OpenVPN site2将推送DNS名称服务器和域搜索选项。这将导致site1的所有名称解析都失败。

示例:

  1. 在site1物理连接时,DHCP推送DNS选项并对其进行解析管理。 /etc/presv.conf# Dynamic resolv.conf(5)文件,由解析器(8)#生成的glibc解析器(3)不手工编辑此文件--您的更改将被覆盖名称服务器172.16.1.101名称服务器172.16.1.102搜索site1.internal.domain
  2. 打开OpenVPN隧道到site2,OpenVPN推送dhcp选项DNS,site2和/etc/openvpn/update-resolv-conf的域将它们推送到解析。 /etc/presv.conf#动态resolv.conf(5)文件
  3. DNS解析对server.site2.internal.domain有效,但对server.site1.internal.domain无效。

是否有一种方式,任何失败的DNS请求到site21应该掉到site1 DNS服务器?还是配置解析器,只将对site2.internal.domain的查询传递给site2名称服务器?

我在site1上使用Ubuntu14.04机器,site2上的OpenVPN服务器是一个pfSense 2.2盒。我管理两个网站,所以对任何一方进行更改都不是问题。这两个域都是非公有和内部使用的。

EN

回答 3

Unix & Linux用户

发布于 2019-05-09 01:56:22

您可以设置一个本地缓存服务器来监视您的/etc/resolv.conf,因为它是由resolvconf脚本更改的,并尝试从其中列出的所有名称服务器获取它的答案。

在许多系统上,安装dnsmasq包就足够了,而且还需要解决方案。

如果no-resolvno-poll指令不在/etc/dnsmasq.conf中,而lo接口位于/etc/resolvconf/interface-order顶部,则默认设置应该“只起作用”。如果上游名称服务器返回一些无法解析地址的任意in,则strict-order in dnsmasq.conf可以提供帮助。您的/etc/resolv.conf应该只显示nameserver 127.0.0.1

如果您喜欢固定的设置或连接到多个不相关的网络,并且希望避免泄露您的私有网络名称,那么所有的名称服务器都应该配置dnsmasq来查询基于域的特定服务器:

代码语言:javascript
运行
复制
# /etc/dnsmasq.conf

# site1 servers
nameserver=/site1.internal.domain/172.16.1.101
nameserver=/site1.internal.domain/172.16.1.102

# site2 servers
nameserver=/site2.internal.domain/192.168.1.5

# default OpenNIC (optional, unless 'no-resolv' is set). 
server=51.15.98.97
server=172.104.136.243

有关dnsmasq选项的更多信息,请参见此处:http://oss.segetech.com/intra/srv/dnsmasq.conf

票数 3
EN

Unix & Linux用户

发布于 2020-03-27 23:05:00

我还没有在Ubuntu上尝试过这一点,但是我能够在Arch Linux上使用openresolv和dnsmasq实现类似的设置。

所有更改都将在VPN客户端计算机上进行。VPN服务器不需要任何更改,因为它已经包括DNS名称服务器和域搜索选项。

  1. 连接到VPN时,请使用resolvconf -l查看所有resolv.conf文件。计算VPN接口的解析符名(即"resolv.conf from X“中的X)。在我的例子中,它是tun0,我将在剩下的配置中使用它。
  2. 安装dnsmasq
  3. 编辑/etc/resolvconf.conf以添加以下选项: private_interfaces=tun0 name_servers=::1 127.0.0.1“dnsmasq_conf=/etc/dnsmasq-conf conf_resolv=/etc/dnsmasq-presv.conf
  4. 编辑/etc/dnsmasq.conf以添加以下选项:conf-file=/etc/dnsmasq-con.conf解析文件=/etc/dnsmasq-conv.conf
  5. 运行resolvconf -u生成dnsmasq配置文件。
  6. 启动dnsmasq服务并将其配置为在启动时启动。在Arch上,这是通过运行: systemctl start dnsmasq.service systemctl启用dnsmasq.service来完成的。

name_servers选项告诉解析器只列出/etc/resolv.conf中的名称服务器(即它指向本地dnsmasq实例)。dnsmasq_选项告诉解析器将可能已进入/etc/resolv.conf的名称服务器写入dnsmasq文件。

private_interface选项告诉解析器,该接口(您的虚拟专用网)提供的名称服务器只能在解析位于search行指定的一个域中的主机名时使用。它将生成适当的dnsmasq配置来实现这一点。

使用此配置,site2.internal.domain下对主机的请求应该为192.168.1.5,而所有其他请求都应转到172.16.1.101或172.16.1.102。

如果系统不使用IPv6,则从name_servers选项中删除::1。

票数 1
EN

Unix & Linux用户

发布于 2018-02-22 12:30:14

resolv.conf列出所有可用的DNS服务器。只要列表中的第一个已启动并运行,所有查询都将发送给它。除非第一个倒下了,否则对其他人什么也没有。所以,如果列表中的第一个DNS服务器出现了,并且知道答案,他会回答“我知道!",否则他会说”恐怕我不知道……“。仅此而已。您必须让192.168.1.5 (site2的DNS服务器)知道site1的所有条目,反之亦然。问候

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

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

复制
相关文章

相似问题

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