在包括本地网络在内的Internet上,机器通过IP地址相互调用。为了使用机器B的名称从机器A访问机器B,机器A必须具有某种方式将B的名称映射到其IP地址。有三种在A上声明机器名称的方法:
- 一个hosts文件。这是一个将名称映射到地址的简单文本文件。
- 在域名系统(DNS) 。这是在全球Internet上使用的方法。例如,当您在浏览器中加载此页面时,计算机要做的第一件事是发出DNS请求以了解其地址
unix.stackexchange.com
。
- 其他名称数据库,例如NIS,LDAP或Active Directory。这些在某些公司网络中使用,但并不经常使用(许多将NIS,LDAP或AD用于用户数据库的网络将DNS用作计算机名)。如果您的网络使用其中之一,则您有专业的网络管理员,应询问他该怎么做。
在实践中,有许多方法可以起作用。不可能涵盖所有内容。在这个答案中,我将描述一些常见的情况。
主机文件
hosts文件方法的优点是不需要任何特殊方法。如果您有多台计算机,可能会很麻烦,因为当一台计算机的名称更改时,您必须更新每台计算机。如果动态分配B的IP地址是不合适的(这样每次连接到网络时都会获得一个不同的IP地址)。
主机文件是将名称映射到IP地址的简单行列表。看起来像这样:
127.0.0.1 localhost localhost.localdomain
198.51.100.42 darkstar darkstar.bands
在UNIX系统上,hosts文件是/etc/hosts
。在Windows上为c:\windows\system32\drivers\etc\hosts
。几乎可以连接到Internet的每个操作系统都有一个相似的文件;维基百科有一个列表。
要在A的主机文件中为B添加条目:
确定B的IP地址。在B上,运行命令ifconfig
(如果找不到该命令,请尝试/sbin/ifconfig
)。输出将包含以下行:
eth1 Link encap:Ethernet HWaddr 01:23:45:67:89:ab
inet addr:10.3.1.42 Bcast:10.3.1.255 Mask:255.255.255.0
在此示例中,B的IP地址为10.3.1.42。如果有几inet addr:
行,请选择与您的网卡相对应的那一行,而不是该lo
条目,隧道或虚拟条目。
- 编辑A上的hosts文件。如果A正在运行某些unix系统,则需要以
/etc/hosts
超级用户身份进行编辑;否则,请执行超级用户编辑。请参阅如何以系统管理员(root)身份运行命令。
家庭或小型办公室网络上的DHCP + DNS
如果您具有必需的设备,则此方法是最简单的方法。您只需要配置一台设备,所有计算机都将知道彼此的名称。此方法假定您的计算机通过DHCP获得IP地址,这是计算机连接到网络时计算机自动检索IP地址的一种方法。如果您不知道DHCP是什么,那么他们可能会知道。
如果您的网络具有家用路由器,那么这是为连接到该路由器的计算机配置名称的最佳位置。首先,您需要找出B 的MAC地址。每个网络设备都有一个唯一的MAC地址。在B上,运行命令ifconfig -a
(如果找不到该命令,请尝试/sbin/ifconfig -a
)。输出将包含以下行:
eth1 Link encap:Ethernet HWaddr 01:23:45:67:89:ab
在此示例中,MAC地址为01:23:45:67:89:ab
。您必须选择与通过电缆(或wifi卡,如果通过wifi连接)连接到路由器的网络端口相对应的HWaddr线。如果您有多个条目,但不知道是哪个条目,则插入电缆,然后查看哪个网络设备收到IP地址(inet addr
下面的行)。
现在,在路由器的Web界面上,查找“ DHCP”之类的设置。设置的名称和位置完全取决于路由器型号,但是大多数具有相似的基本设置。这是Tomato固件上的外观:
输入MAC地址,IP地址和所需的名称。您可以在本地网络的地址范围内选择任何IP地址。大多数家庭路由器都已预先配置为地址格式为192.168。X。y或10. x。ÿ。ž。例如,在上面显示的Tomato路由器上,“网络”标签中有一个值为10.3.0.1的“路由器IP地址”设置和一个值为255.255.255.0的“子网掩码”设置,这意味着计算机在本地网络的地址格式必须为10.3.0。ž。自动分配的DHCP地址也有一定范围的地址(10.3.0.129–10.3.0.254);对于您手动分配的DHCP地址,请选择一个不在此范围内的地址。
现在将B连接到网络,它应该获得您指定的IP地址,并且可以通过网络中的任何计算机以指定的名称访问它。
使用Dnsmasq制作自己的DNS服务器
如果您没有功能强大的家庭路由器,则可以在任何Linux机器上设置相同的功能。我将解释如何使用Dnsmasq设置DNS。还有许多其他类似的程序。我之所以选择Dnsmasq,是因为它易于配置且轻巧(例如,上面所示的Tomato路由器使用的是)。Dnsmasq在大多数Linux和BSD发行版中都可用于PC,服务器和网络设备。
选择一台始终打开的计算机,该计算机具有一个静态IP地址,并且正在运行某种Linux或BSD;我们称它为S(对于服务器)。在S上,安装dnsmasq
软件包(如果尚未安装)。下面,我假定配置文件为/etc/dnsmasq.conf
; 位置可能会有所不同。现在您需要做几件事。
您还可以将Dnsmasq用作DHCP服务器,以便计算机可以自动获取与其名称对应的地址。这超出了此答案的范围;查阅Dnsmasq文档(这并不困难)。请注意,在给定的本地网络上只能有一个DHCP服务器(本地网络的确切定义超出了此答案的范围)。
全球互联网上的名字
到目前为止,我已经假设了本地网络。如果您想给位于世界不同角落的机器起个名字怎么办?您仍然可以使用上述任何一种技术,只是涉及DHCP的部分仅适用于本地网络。或者,如果您的计算机具有公共IP地址,则可以为其注册一个自己的公共名称。(您也可以将私有IP地址分配给公用名称;这种地址较不常见,也不太有用,但是没有技术上的困难。)
获取自己的域名
您可以获取自己的域名,并将IP地址分配给该域内的主机名。您需要向域名提供商注册域名;这通常每年需要花费$ 10– $ 15(对于最便宜的域名)。使用域名提供商的Web界面将地址分配给主机名。
动态DNS
如果您的计算机具有动态IP地址,则可以在地址更改时使用动态DNS协议更新与计算机名称关联的IP地址。并非所有的域名提供商都支持动态DNS,因此购买前请先购物。对于个人使用,如果您使用自己的域(例如),则No-IP提供免费的动态DNS服务example.ddns.net
。
ping
)上或在客户端查询的计算机上执行某些操作。客户端上的操作系统是什么?它的DNS配置是什么?