我的路由器如何将像 http://router.asus.com/ 这样的 URL 解析为它的 IP 地址?

Rya*_*n R 42 router dns ip

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

Jon*_*nno 65

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

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

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

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();
            }
        });
Run Code Online (Sandbox Code Playgroud)

您可以在屏幕截图中看到它尝试访问的名称。从字面上看只是循环,如果它被点击,它会重定向到它找到的东西。

  • 服务器实际上并未扫描您的网络。它提供了一个带有 Javascript 的网页。您的浏览器运行 javascript。所以是您的浏览器进行“扫描”。他们对您的网络没有特殊访问权限,而是您的浏览器具有特殊访问权限。 (13认同)
  • 设置您自己的 DNS 并不总是能绕过路由器的 DNS 服务器。我至少拥有一台路由器,它可以拦截发往其他 DNS 服务器的传出 DNS 请求并自行回答这些请求。 (6认同)

Ben*_*n N 7

我个人没有华硕路由器,Jonno 的回答非常好,但是路由器还有另一种可能的方法来实现这一点(即使您的特定路由器没有使用它)。

由于该页面不是通过 HTTPS 提供的,因此路由器完全有可能简单地拦截 HTTP 请求并回答它,而无需与任何外部服务器进行通信。众所周知,华硕路由器在某些情况下重定向页面。请注意,如果即使没有 Internet 连接(即没有外部 DNS)也发生重定向,则必须是由路由器的 DNS 引起的;不过,没有理由双方不能继续下去。

例如,即使我没有使用其 DNS,我的 Netgear 家用路由器也可以阻止域和关键字(提供“被 Netgear 防火墙阻止”页面)。我确保它没有拦截 DNS 请求;名称得到正确解析,但在 Web 浏览器中转到该页面会导致“被阻止”页面。

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

  • @Jonno 问题是您本身无法阻止 HTTPS 域。您可以阻止一个 IP 或一个 IP 范围,并且您可以让 DNS 服务器告诉您该 IP 是不同的(因此“阻止”它,因为它永远找不到正确的目的地),但是由于路由器无法读取HTTPS 数据包您唯一的选择是 1. 服务器提供不正确的证书,为每个网站提供“连接不受信任”错误页面或 2. 一起阻止端口 443 (https)。要么是糟糕的选择,都有自己的问题。 (2认同)