通常我通过路由器的 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
使用我的连接进行访问会将我带到一个由亚马逊托管的网站,该网站似乎会尝试扫描我的网络上兼容的路由器。
看起来它使用以下 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)并自行查找。