AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 413566
Accepted
Allan
Allan
Asked: 2017-12-29 17:50:21 +0800 CST2017-12-29 17:50:21 +0800 CST 2017-12-29 17:50:21 +0800 CST

FreeBSD w/ 两个网络接口和不同的域

  • 772

我有一台带有两个 NIC 的 FreeBSD 机器,设置如下:

  • em0 ---> IP set via DHCP (192.168.1.0/24). "home" domain
  • em1 ---> IP set statically (10.0.0.2). "lab" domain

出于所有意图和目的,我的主域运行良好。我可以上网并 ping 网络上的任何主机。路由也有效,我可以通过 IP 从 FreeBSD 机器上的任何一个域 ping 任何主机,但是我只能解析家庭网络上的名称。

我创建了一个/etc/resolvconf.conf文件以将搜索域和名称服务器添加到resolv.conf文件中,如下所示:

search_domains="lab"
name_servers="10.0.0.10" 

然后我使用以下命令更新 resolv.conf:

$ sudo resolvconf -u

我现在可以在lab网络上解析名称,但不再在home网络上。手动编辑 resolv.conf 文件并颠倒域和名称服务器的顺序会导致解析home但不是lab- 完全相反。

我如何知道resolv.conf将一个 DNS 服务器用于特定域(静态设置的 IP)并允许它通过 DHCP 获取另一个 IP 的 DNS 信息?


仅供参考......

/etc/rc.conf:

hostname="beastie1"
ifconfig_em0="DHCP"
ifconfig_em1="inet 10.0.0.2 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

/etc/resolv.conf

# Generated by resolvconf
search lab home.
nameserver 10.0.0.10
nameserver 192.168.1.1

域 10.0.0.0上的 DNS“服务器”lab只不过是提供 DHCP 租约的廉价消费者 Netgear 路由器。我只有静态设置,因为它是用于引导映像的 TFTP 服务器,我特意将其设置为 10.0.0.2,以便在尝试在某些 Cisco 设备上刷新固件更新时使用。

networking freebsd
  • 1 1 个回答
  • 1425 Views

1 个回答

  • Voted
  1. Best Answer
    JdeBP
    2017-12-30T03:52:00+08:002017-12-30T03:52:00+08:00

    您为这项工作使用了完全错误的工具。

    此工作不在 DNS 客户端库中完成。DNS 客户端库不够复杂,无法根据正在查找的名称来决定将查询路由到不同的内容 DNS 服务器集。DNS 客户端库将查询解析的繁重工作(包括这类东西)委托给解析代理 DNS 服务器。 它们是实现水平分割 DNS 服务的,这是您在这里想要的机制。

    在您的情况下,如果您正在使用开箱即用的 FreeBSD(或其衍生产品,如 DragonFly BSD 和 TrueOS),这将是一个unbound本地运行的实例。

    你做三件事:

    • 你跑unbound。local_unbound_enable=YES使其以/etc/rc.conf通常的方式自动启动。
    • 您配置unbound为执行水平分割 DNS 服务。 您可以使用您和您的域的存根区域来执行此操作,将这些域名及其下面的所有内容 表示为内容 DNS 服务器。unbound.conflab.example.com.home.example.com.10.0.0.10192.168.1.1
    • 您告诉 DNS 客户端库查询您的服务器,并且只查询您的服务器。您有nameserver一行 in /etc/resolv.conf(来自 中的一个name_servers键值对/etc/resolvconf.conf)指示您的 DNS 客户端库与unbound.

    笔记:

    • 您不使用home.and lab.。 这些是真正的顶级域名,您并不拥有. home.目前是 ICANN 的 10 份申请的主题。使用您拥有的域名,而不是您不拥有的域名。用上面的那个代替example.com.。不,您不拥有local., localhost.,或许多其他人。dev.corp.

      例如,如果您拥有radiantnexus.com.,您将使用home.allan.radiantnexus.com.and lab.allan.radiantnexus.com.。

    • 如果您希望在本地命名空间中找到非完全限定域名,请适当调整您的搜索域。

      search_domains="home.allan.radiantnexus.com lab.allan.radiantnexus.com"继续前面的例子。

    • 不要认为您可以退回到其他人解析代理 DNS 服务器。 一个大错误是添加由您的现成路由器、您的 ISP 或 Google 提供的解析代理 DNS 服务器。您的 DNS 客户端库直接与之通信的所有服务器都必须提供相同的 DNS 名称空间视图,并且彼此保持一致。首先, Google 公共 DNS对您的内部命名空间一无所知。如果您想要一个备用 DNS 服务器,则需要在某个地方使用另一个本地DNS 服务器,并使用相同的水平分割设置进行配置。
    • 您还需要所有非公共 IPv6 和 IPv4 地址到名称查找名称的存根区域。 实际上有很多这样的,它们的查找流量真的不应该泄漏到您/您的组织的边界之外。是的,如果您希望地址到名称查找适用于由您的组合 DHCP/DNS 服务器分发的租约,它们确实应该是存根区域,而不是本地区域。

    奖励内容

    我在 FreeBSD 上使用 djbdns(由……好吧……我修补)。

    • nosh 工具集的配置导入子系统为我设置了一个[email protected]运行本地解析代理 DNS 服务器的服务,以及一个运行[email protected]与之对话[email protected]的本地根内容 DNS 服务器的服务[email protected]。

      enable我使用以下指令启用这些服务/etc/system-control/presets/20-djbwares.preset:

      启用 [email protected]
      启用 cyclog@axfrdns
      启用 [email protected]
      启用 cyclog@tinydns
      启用 [email protected]
      启用 cyclog@dnscache
    • 本地根内容 DNS 服务器在其数据库中混合了公共.数据,大约每年从 ICANN 提取axfr-get,以及我拥有的域名下的内部名称数据。

      % ls -dl root/{data*,p*,root*,Makefile}
      -rw-r--r-- 1 根轮 968 9 月 16 日 09:43 根/Makefile
      -rw-r--r-- 1 根轮 571334 11 月 28 日 00:33 根/数据
      -rw-r--r-- 1 根轮 1088169 11 月 28 日 00:33 root/data.cdb
      -rw-r--r-- 1 根轮 3243 9 月 16 日 09:55 根/私人
      -rw-r--r-- 1 根轮 6962 11 月 28 日 00:32 根/公共
      -rw-r--r-- 1 根轮 560853 2017 年 3 月 11 日根/根
      -rw-r--r-- 1 根轮 3668733 2017 年 3 月 11 日 root/root.zone
      %

      该root/private文件是我将拥有私人数据的地方,例如:

      =machine97.jdebp.eu:192.168.100.97:::lo
    • 我为各种水平分割修剪点克隆了root/servers/@文件,以便知道覆盖可能恰好发送的那些点的任何公共内容 DNS 服务器地址信息:[email protected]dnscache

      % ls -dli root/servers/{@,CEFip6.arpa,machine97.jdebp.eu}
      352608 -rw-r--r-- 46 根轮 11 2016 年 11 月 23 日根/服务器/@
      352608 -rw-r--r-- 46 根轮 11 2016 年 11 月 23 日 root/servers/CEFip6.arpa
      352608 -rw-r--r-- 46 根轮 11 2016 年 11 月 23 日 root/servers/machine97.jdebp.eu
      %
      (实际上,nosh 工具集为我设置了私有 IP 地址,作为标准。在nosh 指南中有一整章介绍了提供的内容以及使用它的各种方式。)

    这是一个私有根设置。这是使用两个内容 DNS 服务器提供水平分割 DNS 服务的其他方式之一(有几种方式)。(在上述unbound设置中,您也有多个内容 DNS 服务器安排;您的本地内容 DNS 服务器是LAN 上的其他机器上10.0.0.10和其他机器上的服务器,而不是机器本身上的私有服务器。)192.168.1.1127.53.0.1

    私有根还给我带来了不存在的东西的 duff DNS 查询流量的好处,从谷歌浏览器的探测到试图反向映射 IPv6 地址fec0::/12和 IPv4 地址的东西192.168.0.0/16,而不是逃逸到整个互联网。

    您也可以使用私人根unbound。不过,它比存根区域更复杂。我把它留给读者作为练习,它超出了这个答案的范围。

    进一步阅读

    • 乔纳森·德博因·波拉德 (2004)。什么是 DNS 查询解析。经常给出答案。
    • 乔纳森·德博因·波拉德 (2002)。提供“水平分割”DNS 服务。. 经常给出答案。
    • 乔纳森·德博因·波拉德 (2003)。您的备用代理 DNS 服务器必须提供与您的主体相同的 DNS 名称空间视图。. 经常给出答案。
    • 乔纳森·德博因·波拉德 (2012)。使用您拥有的域名,不要滥用您不拥有的域名。. 经常给出答案。
    • 乔纳森·德博因·波拉德 (2017)。什么是 DNS 名称限定。经常给出答案。
    • 乔纳森·德博因·波拉德 (2000)。“内容”和“代理”DNS 服务器。经常给出答案。
    • 乔纳森·德博因·波拉德 (2004)。如果您使用非公共 IP 地址范围,请使用水平分割 DNS 服务。. 经常给出答案。
    • 乔纳森·德博因·波拉德 (2003)。您忘记用数据填充“内部”DNS 数据库。. 经常给出答案。
    • 迈克·韦斯特 (2012-02-18)。 Chrome 在启动时连接到三个随机域。. mikewest.org。
    • 乔纳森·德博因·波拉德 (2016)。“ dnscache,tinydns和axfrdns服务”。 小吃指南。软件。
    • 乔纳森·德博因·波拉德 (2016)。Daniel J. Bernstein 的软件合二为一。软件。
    • “域名系统”。FreeBSD 手册。自由BSD。
    • 2

相关问题

  • IP地址可以以255结尾而不是广播IP地址吗?

  • ps -vxa 不对内存进行排序

  • 无法识别arp命令或ip命令哪个MAC地址输出正确

  • FreeBSD 的 sh:列出函数

  • 奇怪的路由器与centos 6一起工作[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    JSON数组使用jq来bash变量

    • 4 个回答
  • Marko Smith

    日期可以为 GMT 时区格式化当前时间吗?[复制]

    • 2 个回答
  • Marko Smith

    bash + 通过 bash 脚本从文件中读取变量和值

    • 4 个回答
  • Marko Smith

    如何复制目录并在同一命令中重命名它?

    • 4 个回答
  • Marko Smith

    ssh 连接。X11 连接因身份验证错误而被拒绝

    • 3 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Marko Smith

    systemctl 命令在 RHEL 6 中不起作用

    • 3 个回答
  • Marko Smith

    rsync 端口 22 和 873 使用

    • 2 个回答
  • Marko Smith

    以 100% 的利用率捕捉 /dev/loop -- 没有可用空间

    • 1 个回答
  • Marko Smith

    jq 打印子对象中所有的键和值

    • 2 个回答
  • Martin Hope
    EHerman JSON数组使用jq来bash变量 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux 日期可以为 GMT 时区格式化当前时间吗?[复制] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC 如何复制目录并在同一命令中重命名它? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve “root”用户的文件权限如何工作? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe 将默认编辑器更改为 vim for _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey 如何下载软件包而不是使用 apt-get 命令安装它? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao 为什么目录 /home、/usr、/var 等都具有相同的 inode 编号 (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg —list-keys 命令在将私钥导入全新安装后输出 uid [未知] 2017-11-26 18:26:02 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve