我的路由器如何将 http://router.asus.com/ 之类的 URL 解析为其 IP 地址?

我的路由器如何将 http://router.asus.com/ 之类的 URL 解析为其 IP 地址?

通常我通过路由器的 IP 地址 连接到路由器192.168.1.1。但是,我也可以通过 URL 连接到路由器router.asus.com。我的计算机没有连接到互联网。这是如何工作的?

答案1

您的路由器有自己的 DNS 服务器。当您在线使用它时,它会转发到您的 ISP 的 DNS,但它也会添加自己的条目以router.asus.com指向自身。

由于您可能使用 DHCP,它会自动为您的机器分配其自己的 DNS。您可以通过更改为手动分配的 DNS 服务器(例如 8.8.8.8)来测试这一点,刷新您的 DNS,然后尝试相同的 URL。

请注意,router.asus.com使用我的连接进行访问会将我带到一个由亚马逊托管的网站,该网站似乎会尝试扫描我的网络上兼容的路由器。

router.asus.com 网站的屏幕截图

看起来它使用以下 JQuery 尝试从网络上的机器名称中获取特定的 JSON 文件:

$.ajax({
            url: "http://" + target.domainName + "/findasus.json", 
            dataType: "jsonp",
            timeout: 20000,
            global: true,
            complete: function(jqXHR, textStatus){
                switch(jqXHR.status){
                    case 0:
                        target.status = 2;
                        break;
                    default:
                        target.status = 1;
                        iAmAlive({
                            modelName: target.domainName.replace("findasus.local", "ASUS"),
                            ssid: "",
                            ipAddr: target.domainName
                        });
                }

                sessionComplete();
            }
        });

您可以在屏幕截图中看到它尝试访问的名称。实际上只是循环,如果命中,它将重定向到找到的内容。

答案2

我个人并不拥有华硕路由器,而且 Jonno 的回答非常好,但路由器还有另一种可能的方法来实现这一点(即使你的路由器没有使用它)。

由于该页面不是通过 HTTPS 提供的,因此路由器完全可以简单地拦截 HTTP 请求并回答它,而无需与任何外部服务器对话。华硕路由器已经知道在某些情况下重定向页面。请注意,如果在没有互联网连接的情况下(即没有外部 DNS)也发生重定向,则一定是由路由器的 DNS 引起的;不过,没有理由不能同时进行这两种操作。

例如,即使我不使用 Netgear 家用路由器的 DNS,它也可以屏蔽域名和关键字(显示“被 Netgear 防火墙屏蔽”页面)。我确保它不会拦截 DNS 请求;名称可以正确解析,但在 Web 浏览器中访问该页面时,会出现“被屏蔽”页面。

您可以通过将 DNS 服务器设置为 Google 的(8.8.8.8)并 ping 重定向的域名来测试此理论。

答案3

只是想补充一下 Jonnos 的回答

admin@asus-rt-n18u:/tmp/home/root# grep asus.com /etc/*
/etc/hosts:192.168.201.5 router.asus.com

我的(很可能也是)您的路由器就是这样做的。您的路由器可能运行带有 dnsmasq 的 asuswrt。您可以拥有 shell 访问权限(至少通过 telnet)并自行查找。

相关内容