san*_*han 33 networking router dns lan
是否可以为 IP 地址(如 192.168.1.1)分配一个可读的字符串别名?也许是这样的:
192.168.1.1 -> router.home
Run Code Online (Sandbox Code Playgroud)
或者
192.168.1.22 -> printer.home
Run Code Online (Sandbox Code Playgroud)
不需要从外部网络访问 router.home,而只能在 LAN 中访问。事实上,它不应该从外部网络访问。
我想目标是拥有一个本地 DNS 服务器,它响应 router.home 地址。知道如何创建这样的别名吗?
编辑:Yamakaja 的答案很好用,但它需要更改 LAN 中每台计算机上的主机文件。可以在家庭路由器上进行本地 DNS 查找吗?这将跳过很多手动工作。
Tur*_*Tux 26
除了Yamakaja 的回答之外,这就是您设置本地 DNS 服务器的方式。
首先,您需要一台要在其上运行 DNS 服务器的计算机。这可以是您的一台普通计算机(如果它们运行 Linux 并且大部分时间都在运行)或例如Raspberry Pi。这种设备的优点是价格便宜,不需要太多电力,而且体积小。
我决定使用dnsmasq
,在 Raspberry Pi 上设置 DNS 服务器,这是一个小型 DNS 服务器工具,非常适合在小型网络中使用。您也可以使用bind
事实上的标准 DNS 工具 ,但这对于小型家庭网络来说可能有点过于强大。
dnsmasq
使用包管理器安装,在基于 Debian 的系统(例如 Raspbian)上,命令是
sudo apt-get install dnsmasq
Run Code Online (Sandbox Code Playgroud)
我现在假设您已经设置了静态 IP 地址分配(即您在问题中提到的 IP 地址不会改变)。如果你没有,dnsmasq
也可以用作DHCP服务器,但我还没有这样做。
dnsmasq
从/etc/hosts
. 编辑此文件如下:
# IP address Host name
192.168.1.1 router
192.168.1.22 printer
Run Code Online (Sandbox Code Playgroud)
主机名router
现在分配给192.168.1.1
,printer
给192.168.1.22
。
现在,您已经设置了自己的 DNS 服务器,但是您网络中的计算机还没有使用它。要让他们使用这个服务器,你必须做一个准备工作:
使用ip address
(假设它是192.168.1.42
)查找 dnsmasq 设备的 IP 地址。打开/etc/dnsmasq.conf
并附加以下几行:
listen-address=127.0.0.1
listen-address=192.168.1.42
Run Code Online (Sandbox Code Playgroud)
这告诉dnsmasq
它应该在请求被寻址127.0.0.1
时(即当它自己想要使用它的 DNS 服务器时)或192.168.1.42
(即当其他计算机想要使用它的 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
Run Code Online (Sandbox Code Playgroud)
请注意,您必须使用的文件取决于您的网络管理器配置。在要使用 DNS 的每台计算机上添加 DNS 服务器 IP。
如果它不能立即工作,您可能必须重新启动设备。
就是这样,你完成了。您现在/etc/hosts
只需使用您提供的主机名即可访问您在 dnsmasq 服务器中输入的所有设备。
如果您想检查 DNS 解析是否正常工作,请dnsutils
在应该使用您的服务器的系统上安装(Linux)。然后执行
$ dig router
Run Code Online (Sandbox Code Playgroud)
这应该返回这样的东西
; <<>> 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
Run Code Online (Sandbox Code Playgroud)
它显示您要解析的主机名、解析到的 IP 地址以及使用的 DNS 服务器。如您所见,一切都很好。
如果您不仅要使用router
或访问设备,printer
还要使用router.home
和printer.home
,请将以下几行添加到您的/etc/dnsmasq.conf
:
expand-hosts # Tells dnsmasq to add a TLD to each host name
domain=home # The TLD
Run Code Online (Sandbox Code Playgroud)
您可能需要重新启动。
我不确定以下段落的事实准确性,如果您发现错误,请随时纠正它们
默认情况下,家庭网络中的所有计算机都应使用路由器提供的 DNS 服务器。为避免更改所有计算机上的 DNS 配置,您可以改为告诉路由器使用您的 DNS 服务器。在此之后,您网络中的每个人都应该能够解析您在dnsmasq
的配置中指定的主机名。
但是,您可能无法解析指向外部网络的任何其他域,因为您的 DNS 服务器不知道如何处理它们。要解决此问题,您可以将 DNS 服务器配置为 DNS 缓存,从公共 DNS 服务器缓存 DNS 条目。
如果您的计算机随后需要解析域,则请求将采用以下路径(最后,遵循选项 a) 或 b)):
/etc/hosts
^
|
b) lookup
|
|-------------| |-----------| |---------------|
|Your Computer|--DNS request-->|Your Router|--DNS request-->|Your DNS server|
|-------------| |-----------| |---------------|
|
a) DNS request
|
v
|-----------------|
|Public DNS server|
|-----------------|
Run Code Online (Sandbox Code Playgroud)
关于dnsmasq
:
关于bind
(如果你有兴趣的话):
如何更改路由器的 DNS:
如何配置 DNS 缓存:
小智 12
是的,有两个(或更多?)选项:
根据您的操作系统,您必须在“hosts”文件中添加一个条目。您可以/etc/hosts
在大多数 Unixoids 和C:\Windows\system32\drivers\etc\hosts
Windows上找到它。
要添加您的条目,请转到文件底部并按以下格式添加一行:
<IP> <the hostname to assign>
Run Code Online (Sandbox Code Playgroud)
例如。
192.168.1.1 router
Run Code Online (Sandbox Code Playgroud)
(注意,ip 和主机名之间的空格无关紧要。但如果与其他条目匹配,它看起来会更好。您可以使用制表符或空格)
然后你可以在浏览器中访问你的路由器,只需访问
http://router/
Run Code Online (Sandbox Code Playgroud)
或者
router/
Run Code Online (Sandbox Code Playgroud)
请参阅TuringTux 的答案以获取更多信息
归档时间: |
|
查看次数: |
48515 次 |
最近记录: |