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\hostsWindows上找到它。
要添加您的条目,请转到文件底部并按以下格式添加一行:
<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 次 |
| 最近记录: |