让路由器 DNS 解析内部 IP 地址

让路由器 DNS 解析内部 IP 地址

我最近在其他地方问过这个问题,并被引导到这里问。

最近我一直在做一个托管网络服务器的项目。这是一个简单的温度监测设备,可以记录一些温度,并有一个简单的网站来显示信息。

我希望为该设备分配一个 URL,该 URL 将解析为其内部 IP,以便更轻松地连接并查看本地网络的信息。这将通过手机、平板电脑和笔记本电脑查看。

在用我有限的网络知识做了尽可能多的研究之后,我需要求助于某个比我更有知识的人(我希望我发帖的地方正确。如果不是,请原谅我)

该服务器在运行 Raspian(基于 Debian)的 Raspberry Pi zero W 上运行

我的路由器是运行标准 NetGear 固件的 NetGear Nighthawk R8500。DNS 设置由我的 ISP 提供。

我无法在 NetGear 网站上找到有关我尝试执行的操作的任何信息,并且也不是其论坛的成员(尽管我可能需要,看看这个问题如何)。

我的问题如下:

我要做的事情有名字吗?

我的路由器可以在不使用自定义固件的情况下实现此功能吗?

如果没有,您会推荐什么自定义固件来完成这样的工作?

修改 Hosts 文件不是一个选项,因为我不想配置我需要连接的每个设备。

非常感谢大家的帮助。感谢您的时间!

答案1

概述

如果我没有误解您的问题,听起来好像您希望通过名称而不是 IP 地址来访问您设备的 Web 服务器。

如果是这种情况,那么您只需在本地网络上设置 DNS 服务器即可。该服务器将:

  • 将您选择的名称映射到设备的 IP 地址(或 Web 服务器所在的任何地方)。

  • 将所有其他 DNS 请求(例如常规浏览)转发给您的 ISP。

设置此 DNS 服务器后,您需要配置路由器以使用该本地服务器发送 DNS 请求,而不是直接向您的 ISP 发送请求。

连接到路由器的设备(例如手机、平板电脑和笔记本电脑)可以使用您选择的给定名称连接到相关的 Web 服务器,而无需修改任何hosts文件。

问题

我要做的事情有名字吗?

我见过最常用的术语是“本地 DNS”。

我的路由器可以在不使用自定义固件的情况下实现此功能吗?

您不需要自定义固件来完成我所描述的操作。

此规则的例外情况可能是您希望路由器本身充当本地 DNS 服务器。这在普通消费级固件中通常是不可能的。


笔记

Netgear DNS 服务器设置

您需要的 DNS 服务器 IP 地址设置应位于高级 → 设置 → Internet 设置 → 域名服务器 (DNS) 地址在标准 Netgear Genie 界面中。单击使用这些 DNS 服务器单选按钮并输入本地 DNS 服务器的 IP 地址(在两个字段中输入相同的地址也可以):

例如 Netgear DNS 服务器设置

Netgear DNS 服务器设置 - 屏幕截图

在上面的例子中,1.2.3.4将被替换为您的 DNS 服务器的本地 IP 地址。如果您没有看到这些设置,则您的路由器可能处于接入点 (AP) 模式,如果您想继续我概述的解决方案,则必须停止使用该模式。确保申请您所做的任何更改。

DNS 服务器硬件

网络上的任何计算机都可以充当本地 DNS 服务器。唯一需要记住的是,它需要全天候运行,以便允许访问您的项目(通过其名称)和整个互联网。您可以选择使用 Pi 来实现这一点,但单独的计算机也可以(并且可能提供略微更好的性能)。

DNS 服务器软件

绑定是我个人推荐的一种选择。另一个似乎很受欢迎的选择是域名管理系统。两者均适用于 *NIX 风格的操作系统,包括 Raspberry Pi(如果您选择在该设备上运行 DNS 服务器)。

特别是就 BIND 而言,它在 Windows 上也得到了极好的支持。Zytrax 也有很好的在线参考如果您需要有关 DNS 和 BIND 的更多信息。

无论如何,假设您没有选择较小的项目,Google 上应该有大量关于如何在您喜欢的平台上设置您选择的 DNS 服务器软件的指南。


BIND 本地域示例

虽然总体而言您还需要采取其他步骤,但下面是一些非常简单的示例,说明如何配置 BIND 来为名为的本地域提供服务http://temp.monitor/

例如named.conf

# Anything with a hash (#) is a comment.

# Where do we find our zone files?
# Zones files hold our domain/IP mapping information.

options {
    directory "/path/to/some/zones";
    allow-transfer { none; };

# Tack down the edges a bit regarding security.

# allow-recursion {192.168.1.0/24;}; // change IPs as required

    allow-recursion {"localnets";};

# The option below forwards non-local domains to outside DNS servers.
# This means we can still use the internet.
# This is where you might put your ISP's DNS server addresses.
# The (working) IPs below are for Google's free 3rd-party DNS services. 

    forwarders { 8.8.8.8; 8.8.4.4; };

};

# Our local domain (i.e. the desired URL for your project).

zone "temp.monitor" IN {
    type master;
    file "temp.zone";
    allow-transfer { none; };
};

# Entries below the following line may be included 
# in a different file, depending on your platform.

# ------------------------------------------------ 

# This section requires a correct "secret".
# This section will likely be copied from your rndc.conf file (generated separately).

# Adjust as needed. This is just an example secret.
key "rndc-key" {
   algorithm hmac-md5;
   secret "2diZ8TosQlmJc15Nw3+ISh==";
};

# Allow our local DNS server to use rndc
controls {
    inet 127.0.0.1 port 953
        allow { 127.0.0.1; } keys { "rndc-key"; };
};

# End of named.conf

例如 temp.zone

; Zone file for our "temp.monitor" zone.
; Enables use of e.g. http://temp.monitor/.
; Anything with a semi-colon is a comment.

; "weatherwizard.temp.monitor" below is an email address.
; The first . substitutes for the normal @ symbol.
; This doesn't have to be a real/active address.

$TTL 3600               ; Time-To-Live, in seconds
@   IN SOA  ns.temp.monitor.    weatherwizard.temp.monitor. (
        2019061401  ; serial, often based on the date
        10800       ; Refresh period
        3600        ; Retry interval
        604800      ; Expire time
        86400 )     ; Negative caching TTL

@      NS   ns.temp.monitor.

ns                  IN A        10.0.0.1       ; This entry is necessary - Use the IP of the BIND server

temp.monitor.       IN A        10.0.0.1       ; A Record for the temperature server - we're assuming its on the same server as BIND
cool                IN A        10.0.0.1       ; A Record for a sub-domain on the same machine e.g. http://cool.temp.monitor.

相关内容