
我有一个正在玩的路由器,我很好奇我是否可以为路由器的 IP 指定一个自定义 URL 名称,以便我家里的人可以输入http://www.my-fancy-url.com
而不是http://aaa.bbb.ccc.ddd
— 不仅可以在 PC 上,还可以在移动设备上。
我听说如果我建立自己的 DNS 服务器并以某种方式将其设置为连接到路由器时的默认值,或者告诉人们手动配置 DNS(这仍然比强迫人们每次访问时都输入 123.456.789 要好),我就可以做到这一点。
我尝试阅读 DNS 协议的工作原理,并尝试在 Node 或 Java 中实现它,但该协议对我来说似乎太难了。
我也听说 OpenDNS 是一个选项,但我想避免它。
是否有更简单的选项可以创建一个简单的 DNS 服务器,它可以在将一个特定请求传递给 8.8.8.8(或无任何地方,因为该路由器实际上并未连接到互联网)之前处理它。
答案1
我个人使用 powerDNS 在我自己的网络上做类似的事情。
它运行在一台始终开机的基于 Linux (debian) 的 PC 上,并充当我本地网络的 DNS 服务器以及其他功能(例如文件服务器)。然后在我的路由器上配置了一条防火墙规则,允许从我的 DNS 服务器 PC 传出的 DNS 流量,但将所有其他传出的 DNS 流量重定向到我的 DNS 服务器 PC。
我安装的 powerdns 实例将转发任何没有权威记录的查询。这样我就可以编写域名或覆盖公共 dns 设置并将它们指向我自己网络内的主机。
我相信如果您的网络上有 Windows 服务器,也可以进行类似的设置。
假设你的路由器的 IP 地址在私有 IP 范围内(请参阅https://en.wikipedia.org/wiki/Private_network) 并且您拥有一个公共域名,另一种解决方案是设置一个子域并让 A 记录指向您的路由器 ip。
例如 router.mydomain.com 带有指向 123.456.789.1 的 A 记录
这样一来,任何连接到您的网络且 DNS 配置正确的主机在输入 router.mydomain.com 时都将被定向到路由器,而如果它们在您的网络之外,则可能看不到任何内容,或者也许会看到自己的路由器。
答案2
如果你要运行 DNS 服务,你最好将 DHCP 服务也从路由器上移开。这样就不需要手动进行客户端配置了。
我建议使用域名管理系统,SOHO 网络的一体化解决方案。它提供 DHCP 和 DNS 服务,并且设置起来非常简单。它所需的资源很少,因此您可以在 Raspberry Pi 或路由器上运行它(使用类似开放Wrt)。
但是,Dnsmasq 需要 Linux、*BSD 或 OS X。
您需要的(附加)配置选项看起来有点像这样:
# Set DHCP range:
dhcp-range=lan,192.168.2.100,192.168.2.199,255.255.255.0,24h
# Set router IP:
dhcp-option=lan,3,192.168.2.1
# Set upstream DNS:
server=8.8.8.8
server=8.8.4.4
# Don't load DNS from /etc/resolv.conf
no-resolv
# Create router DNS name:
address=/my-router.example.com/192.168.2.1
答案3
如果您有网络并且希望连接到网络的设备能够自动配置,您可能需要设置 DHCP,它负责为客户端分配 IP 地址。除了简单地分配 IP 地址之外,DHCP 协议还可以传输有关要使用哪些 DNS 服务器的信息。
因此,您的网络中可能存在一台计算机 X,该计算机包含您的网站。在那台计算机上,您还将运行 DHCP 和 DNS。由于它们都使用不同的端口,所以这没有问题。让 DHCP 返回(除了 IP 地址租约)计算机 X 的名称服务器 IP。让 DNS 服务器在查询路由器名称时返回路由器的 IP,并将所有其他 IP 转发到您从提供商处获得的名称服务器。