家庭局域网中IP的别名


23

是否可以为IP地址(如192.168.1.1)分配可读的字符串别名?也许是这样的:

192.168.1.1 -> router.home

要么

192.168.1.22 -> printer.home

无需从外部Web即可访问router.home,而只需在LAN中即可。实际上,不应从外部网络访问它。

我想目标是拥有一个本地DNS服务器,该服务器响应router.home地址。任何想法如何创建这样的别名?

编辑:Yamakaja的答案很好用,但是它需要更改LAN中每台计算机上的主机文件。可以在家用路由器上进行本地DNS查找吗?那将省去很多手工工作。


2
请注意,某些路由器自己执行此操作,例如,如果您使用华硕路由器,然后转到router.asus.com,它将打开路由器的配置页面。其他路由器也具有类似的“技巧”,也可以执行类似的操作。
acejavelin

不,我不使用华硕路由器。这个问题实际上更笼统……不仅我要访问没有IP的路由器,而且要连接到网络的其他设备。我将添加一个编辑。
sanjihan

2
我的观点是,某些路由器具有内置的此功能,因为它们通常充当DNS缓存服务器,因为您没有说明使用的路由器,所以我对“其他路由器也具有类似的技巧”保持开放
态度

1
是的,我明白了,谢谢!路由器只是一个例子。想象在LAN上也运行打印机或树莓派PI或Internet控制的通风系统。
sanjihan

@sanjihan我想您需要透露路由器的型号和型号,否则请告诉别人您用于DNS的内容,以便其他人进一步说明您可以完成此任务的配置。因此,回顾一下1.)路由器设备或为路由器设备建模或建模,或2.)为DNS 设备精确地使用什么设备(例如Windows DNS,内置路由器功能等)
Pimp Juice IT 2013年

Answers:


18

除了Yamakaja的答案之外,这也是设置本地DNS服务器的方式。

首先,您需要一台要在其上运行DNS服务器的计算机。这可以是您的普通计算机之一(如果它们运行Linux并且在大多数时间都处于运行状态),也可以是Raspberry Pi。这种设备的优点是价格便宜,不需要很多电源并且体积小。

设置DNS服务器

我决定使用dnsmasq,在Raspberry Pi上设置DNS服务器,这是一个小型DNS服务器工具,非常适合在小型网络中使用。您也可以使用bind事实上的标准DNS工具,但这对于小型家庭网络来说可能有点强大。

dnsmasq在基于Debian的系统(例如Raspbian)上使用软件包管理器进行安装,命令为

sudo apt-get install dnsmasq

现在,我假设您已经设置了静态IP地址分配(即,您在问题中提到的IP地址不变)。如果您还没有,它dnsmasq也可以用作DHCP服务器,但是我还没有这样做。

dnsmasq从中获取主机名/etc/hosts。如下编辑该文件:

# IP address    Host name
192.168.1.1     router
192.168.1.22    printer

主机名称router现在已分配给192.168.1.1printer192.168.1.22

现在,您已经设置了自己的DNS服务器,但是网络中的计算机尚未使用它。要使他们使用此服务器,您必须执行一个准备步骤:

使用ip address(找到)找到您的dnsmasq设备的IP地址192.168.1.42。打开/etc/dnsmasq.conf并添加以下行:

listen-address=127.0.0.1
listen-address=192.168.1.42

这告诉dnsmasq它应该在寻址到请求时127.0.0.1(即,当其本身想要使用其DNS服务器时)或192.168.1.42(例如,当其他计算机想要使用其DNS服务器时)侦听对该请求的请求。

使用DNS服务器

您必须告诉网络中的每台计算机(也应该)192.168.1.42用作DNS服务器。执行此操作的方式取决于您的操作系统。您可以轻松地在Internet上查找您指定的操作系统(只需搜索“在<OS>上更改DNS服务器”,或类似的东西)。

对于Windows 7,您可以按照以下教程进行操作:https : //www.opennicproject.org/configure-your-dns/how-to-change-dns-servers-in-windows-7/

在系统(Arch Linux)上,我必须将以下行添加到 /etc/resolvconf.conf

name_servers=192.168.1.42

请注意,您必须使用的文件取决于您的网络管理器配置。在要使用DNS的每台计算机上添加DNS服务器IP。

如果设备无法立即运行,则可能必须重新启动设备。

就是这样,您完成了。现在,您/etc/hosts只需使用为其提供的主机名即可访问dnsmasq服务器中输入的所有设备。

(可选)检查功能

如果要检查DNS解析是否正常工作,请dnsutils在应使用服务器的系统上安装(Linux)。然后执行

$ dig router

这应该返回这样的东西

; <<>> DiG 9.10.4-P1 <<>> router
;; global options: +cmd
;; Got answer:
...

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;router.                        IN      A

;; ANSWER SECTION:
router.                 0       IN      A       192.168.1.1

;; Query time: 14 msec
;; SERVER: 192.168.1.42#53(192.168.1.42)
;; WHEN: So Jun 26 10:43:18 CEST 2016
;; MSG SIZE  rcvd: 50

它显示您要解析的主机名,解析为的IP地址以及使用的DNS服务器。如您所见,一切都很好。

(可选)指定TLD

如果您不仅要使用routerprinter还要使用router.home和访问设备printer.home,请在您的计算机上添加以下几行/etc/dnsmasq.conf

expand-hosts # Tells dnsmasq to add a TLD to each host name
domain=home # The TLD

您可能需要再次重新启动。

资料/进一步阅读

关于dnsmasq

关于bind(如果您对此感兴趣):


11

是的,有两个(或更多?)选项:


编辑主机文件(懒惰的方式)

根据您的操作系统,您将必须在“主机”文件中添加一个条目。您可以/etc/hosts在大多数Unixoid和C:\Windows\system32\drivers\etc\hostsWindows 上找到它。

要添加条目,请转到文件底部,然后添加以下格式的行:

<IP>       <the hostname to assign>

例如。

192.168.1.1      router

(请注意,ip和主机名之间的空格无关紧要。但是,如果与其他条目匹配,看起来会更好。您可以使用制表符或空格)

然后,您只需在浏览器中访问即可访问路由器

http://router/

要么

router/

本地DNS服务器

请参阅TuringTux的答案以获取更多信息


谢啦!这对于单台计算机非常有用。是否可以将其扩展到LAN中的所有计算机,而无需手动更改每台计算机中的主机文件?
sanjihan

@sanjihan并不是那么容易,例如,您可以在namecheap上以不到1美元的价格购买自己的域名,然后使用它来指向您的东西。例如,您可以将router。<yourdomain>。<tld>设置为指向192.168.1.1,但这会使您的名字变长。另外,请将我的答案标记为已接受,以便其他用户知道已经回答了这个问题。
Yamakaja

如果它们是同一工作组的一部分,您是否可以仅使用PC名称?
jiggunjer 2016年

我真的不知道@jiggunjer。我对Windows不太熟悉
Yamakaja

2

我想更新上面的好答案:

您可能需要查看路由器,并检查其是否具有手动DNS输入支持。

如果是这样,您可以在上添加您的本地192.168.1.22地址printer.home。否则,恐怕您只能进行本地主机文件编辑或自己的DNS服务器设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.