我在为家庭服务器设置主机名以便在家庭网络中使用时遇到很多麻烦。我的家庭服务器正在运行 Ubuntu 12.04 LTS,并且所有软件包都是最新的。该服务器的管理仅使用 SSH 完成,没有 GUI。我想使用服务器主机名主要用于从多台 Windows 计算机和 Android 设备访问网页和 samba 共享。
我的家庭服务器使用 DHCP 从 Linksys WRT54GC 获取其(静态)IP 地址。两者/etc/hosts
都/etc/hostname
添加了“homeserver”作为主机名。我没有篡改/etc/dhcp/dhclient.conf
,因为默认设置应该根据 Ubuntu 源代码工作。
路由器只能解析 DHCP 客户端的主机名。它不允许我像某些新产品那样编辑客户名称。我的 Windows PC 的所有主机名都能被路由器识别。我还可以使用主机名 ping 这些机器。所以我的路由器上一切似乎都正常。
Linksys WRT54GC 级联到 ISP 配置的 DSL 调制解调器/路由器。所有互联网流量都路由到 Linksys,因为它位于 DSL 调制解调器/路由器的 DMZ 中。 DSL 调制解调器/路由器的 IP 地址是 192.168.1.1,Linksys 的 IP 地址是 192.168.2.1。 Linksys 使用静态 IP 地址进行配置。 Linksys 的 DNS 服务器配置为 192.168.1.1。所有链接到 Linksys 报告的客户端都有 192.168。1.1 作为 DNS 服务器。
这个问题可能与这漏洞。
我已经isc-dhcp-client
从 13.04 安装了该软件包,但这并没有成功。如果这个错误在 Ubuntu 12.04 LTS(和 13.04)中仍然存在,我想知道解决方法。
编辑#1
OP发布了内容文件的: /etc/dhcp/dhclient.conf
:
# Configuration file for /sbin/dhclient, which is included in Debian's
# dhcp3-client package.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
# man page for more information about the syntax of this file
# and a more comprehensive list of the parameters understood by
# dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
# not leave anything out (like the domain name, for example), then
# few changes must be made to this file, if any.
#
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name "<hostname>";
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers,
dhcp6.domain-search, dhcp6.fqdn,
dhcp6.name-servers, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhcp3/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;
#alias {
# interface "eth0";
# fixed-address 192.5.5.213;
# option subnet-mask 255.255.255.255;
#}
#lease {
# interface "eth0";
# fixed-address 192.33.137.200;
# medium "link0 link1";
# option host-name "andare.swiftmedia.com";
# option subnet-mask 255.255.255.0;
# option broadcast-address 192.33.137.255;
# option routers 192.33.137.250;
# option domain-name-servers 127.0.0.1;
# renew 2 2000/1/12 00:00:01;
# rebind 2 2000/1/12 00:00:01;
# expire 2 2000/1/12 00:00:01;
#}
答案1
如果您的 DHCP 服务器支持它,您可能需要尝试让您的客户端发送它想要的主机名。将以下内容添加到文件中/etc/dhcp/dhclient.conf
:
send host-name 'your-hostname-here';
如果您想发送完全限定的域名 (fqdn) - myhost.mydomain.com 而不仅仅是 myhost,您还需要添加以下行:
send fqdn.fqdn "myhost.mydomain.com.";
send fqdn.encoded on;
send fqdn.server-update off;
also request fqdn, dhcp6.fqdn;
编辑#1
OP 被要求尝试以下命令并报告:
dig <hostname> @<router ip>
OP 报告说这有效,因此决定尝试将路由器的 IP 显式添加到他的dhclient.conf
文件中。
编辑#2
建议尝试将以下内容添加到/etc/dhcp/dhclient.conf
文件中:
prepend domain-name-servers 192.168.2.1;
编辑#3
鉴于您现在可以在添加 192.168.2.1 时使用路由器的 DNS 服务器 ping 服务器,但不能 ping 服务器,我建议您还使用上述前置选项添加一些外部 DNS 服务器,如下所示:
prepend domain-name-servers 192.168.2.1, 8.8.8.8, 8.8.4.4;
这会将您的路由器与 Google 的 DNS 服务器一起添加为 DNS 解析器。
答案2
除了其他答案中的有用建议之外,avahi 套件(又名 Zeroconf,又名 Apple Bonjour)在传递和解析本地 mDNS 信息方面非常有用。
在我的家庭网络主机上运行 avahi-daemon 允许我
ping tallguy.local
除了建立主机名之外,还需要零配置tallguy
。
答案3
有些路由器只使用netbios
主机名。
在 Debian 上你可以
sudo apt-get install samba
如果/etc/hostname
设置正确,这将显示在网络中而无需重新启动。
这适用于 RaspberryPi、BeagleboneBlack,据我所知也适用于 Ubuntu。