介绍

介绍

介绍

我有一个运行 Rasbian 的 Raspberry Pi,连接到基于 Windows Server 的网络。这是一个企业(教育)网络,拥有自己的内部网,由所有连接的计算系统组成,并且还有一个可公开访问的网站。出于此问题的目的,该域将被命名为exampledomain.com.

在此 Intranet 上,连接的 Windows 计算机可以通过网络适配器上的配置将 DNS 后缀附加到其主机名(列出的步骤这里)。这将允许具有该名称的计算机可以通过本地网络或从本地网络comp1进行寻址(即列为特定于连接的后缀)。comp1comp1.ns.exampledomain.comipconfigns.exampledomain.com

问题

comppi我有一个 Raspberry Pi 2,它具有我需要通过地址访问的主机名comppi.ns.exampledomain.com。目前可以通过主机名comppi、使用comppi.local或 IP 地址访问 Pi 。

通过主机名访问是通过使用 samba 将 samba 安装到 RPi 来实现的sudo apt-get -y install samba。这是avahi在 RPi 上设置的简单方法。

我无法访问所涉及的 DHCP/DNS 服务器。但我应该不需要就能达到这个结果。 (因为它可以在 Windows 计算机上完成,无需)

我还会注意到,/etc/dhcp/dhclient.conf即使在阅读了相关man页面之后,我对该文件的理解也很差。我可能错过了一些微不足道的事情。

目前的尝试

  • 尝试直接将主机名更改为comppi.ns.exampledomain.com以下文件中的所有位置。
  • 尝试将主机名行更改为send host-name = "comppi.ns.exampledomain.com"in /etc/dhcp/dhclient.conf
  • 尝试将线路添加append domain-name = "ns.exampledomain.com"/etc/dhcp/dhclient.conf用户 Jordan overaskubuntu.com。不过,我认为这只是ns.exampledomain.com在失败时添加到传出主机名解析中。

技术信息

  • 操作系统:Raspbian GNU/Linux 8 (杰西)(注:这是精简版)
  • 树莓派:树莓派2
  • 主机名:comppi

文件

内容/etc/network/interfaces不变。

内容/etc/hostname

comppi

内容/etc/hosts

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       comppi comppi.ns.exampledomain.com

内容/etc/dhcp/dhclient.conf

# Configuration file for /sbin/dhclient, which is included in Debian's
#       dhcp3-client package.

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

#send host-name = gethostname();
send host-name = "comppi"
append domain-name = "ns.exampledomain.com"
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;

答案1

当 Windows 客户端作为 Active Directory 的一部分时,会自动在 DNS 中注册其名称(在您的情况下似乎是这样)。这使用称为动态 DNS (DDNS) 的过程。使用 Windows DDNS 注册 Linux 计算机的最简单方法是使用 Samba 将 Linux 计算机加入 Windows 域。这需要加入 Windows 域的权限。互联网上有很多指南可以为您详细介绍如何从 linux 加入 Windows 域,但这里是简要步骤:

首先在/etc/krb5.conf中添加域名信息

[realms]
    NS.EXAMPLEDOMAIN.COM = {
    }

[domain_realm]
    .ns.exampledomain.com = NS.EXAMPLEDOMAIN.COM
    ns.exampledomain.com = NS.EXAMPLEDOMAIN.COM

然后配置 smb.conf 进行域加入

[global]
workgroup = EXAMPLEDOMAIN
realm = NS.EXAMPLEDOMAIN.COM
security = ADS

然后运行net ads join -U windowsuser,其中 windowsuser 是有权加入域的任何用户。

这会将您的计算机加入 Windows 域,同时在 Windows DNS 中注册计算机的 IP 地址,从而允许其他人使用comppi.ns.exampledomain.comcomppi名称访问您的计算机

答案2

因此,要解决comppi.ns.exampledomain.com网络上的问题,您需要 DHCP 服务器管理员的帮助,原因如下。在这个答案的底部Linux选项

Windows环境

除非安装了其他软件,否则 LINUX 客户端无法识别 AD (Active Directory)。因此,在正确配置的Windows环境下必须依靠DHCP服务器来更新DNS服务器。
对于要在本地 DNS 服务器上注册主机名的 DHCP 服务器,必须具有动态更新授权。此设置不是用户可配置的,您的网络管理员应该修改它,是的,您将需要它才能工作。
DHCP服务器除了来自 DHCP 服务器的 IP 地址外,您还会收到该网络的域后缀;该后缀由您的主机存储,稍后将使用。请注意,除非您的 DHCP 服务器和 DNS 服务器位于同一机器上,否则动态更新将要求 DHCP 服务器通过您的 DNS 服务器进行身份验证。

此时 DHCP 服务器应该为您完成 DNS 网络注册。它不受客户端主机控制,但您的主机必须请求这样做。目前 Debian 自动请求 DNS 注册。

在 Windows 上,您可以使用 强制重新注册ipconfig /registernds

在本地网络上,主机可以使用两种“合法”名称和方法找到您:纯主机名和主机名加域。后缀“ .local”经常被忽略,用于避免添加另一个后缀。

1第一种方法不使用 DNS:使用 LAN 广播主机询问“谁知道这个名字”,目标主机将回答 MAC 地址和 IP。

每隔几秒钟,主机就会广播他们的名字,以便共享 LAN 的其他人知道他们的存在。通常,此广播会被交换机/路由器过滤,因此除非您位于同一交换机上,否则很难使其可靠。
在此输入图像描述

2第二种方法是使用“普通”主机名以及带有 LAN 后缀的主机名向 LAN 指定的 DNS 服务器发送请求。

家庭路由器和 Intranet 不是公共的,因此在默认 DNS 服务器上使用通用 DNS(8.8.8.8、8.8.4.4)根本无法解析您的本地主机。每个具有 DHCP 分配地址的本地主机都会被您的路由器“记住”。

在您的主机上,您可以在解析 DNS 地址时添加一个或多个所需的后缀(使用 LinuxhostdigWindows 上的nslookup

在此输入图像描述

我建议正确设置您的主机名。 On/etc/hostname和 Also on /etc/hosts(对于 ::1 和 127.0.0.1),然后运行. /etc/init.d/hostname.sh​​.

从 Linux 手动更新 DNS 服务器

还有另一种选择,只需要客户端手动配合。使用一个鲜为人知的实用程序nsupdate。这将添加您在有效 DNS 服务器上注册所需的功能。它遵循 RFC 发布的与 DNS 相关的协议。

例子:

$ nsupdate -v
>delete video.domain.com. a
>delete  git.domain.com. a
>delete  gateway.domain.com. a
>add  video.domain.com. 600 a 192.168.1.111
>add  git.domain.com. 600 a 192.168.7.10
>add  gateway.domain.com. 600 a 192.168.7.10
>send
>quit

您可以使用动态获取的 IPV4 或 IPv6 地址创建一个简单的文件,并在“post-up”脚本上运行/etc/network/interfaces

答案3

在此处的 Raspberry Pi 上,也运行 Raspbian Jessie,DHCP 客户端是/sbin/dhcpcd.不幸的是,这使用了不同的配置文件,不允许指定 DNS 后缀。

ps -ef | grep -i [d]hcp
root       720     1  0 10:16 ?        00:00:00 /sbin/dhcpcd -q -w

幸运的是,这个系统安装了resolvconf,它确实有一个/etc/resolvconf.conf允许指定 DNS 后缀的配置文件:

search_domains_append=ns.exampledomain.com

我完全不确定为什么两个 Jessie Pi 应该有不同的安装配置,但这可能是另一天的问题。为了进行比较,下面是 DHCP 客户端进程的另一个示例,如我的一些 Debian Wheezy 系统上所示:

# This uses /etc/dhcp/dhclient.conf and is not what I have on my Pi
ps -ef | grep -i [d]hcp
root      1683     1  0 09:58 ?        00:00:00 dhclient -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0

相关内容