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


38

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


6
将公共域名解析为私有IP似乎是个坏主意,顺便说一句。
德米特里·格里戈里耶夫

@DmitryGrigoryev开箱即用地router.asus.com重定向到192.168.1.1华硕并包含在其中。它不能从本地网络外部解析为我的路由器IP。
Ryan R

Answers:


63

您的路由器拥有自己的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();
            }
        });

您可以在屏幕快照中看到它尝试访问的名称。从字面上看只是循环,如果被击中,它将重定向到找到的内容。


1
有趣。您能否扩展您的笔记。亚马逊托管的站点如何访问防火墙后面的本地网络以扫描路由器?(这适用于那些没有兼容的Asus路由器,或者我假设在其Asus路由器上更改过DNS的用户)
Ryan R

@RyanR添加了:)
Jonno

13
服务器实际上并未扫描您的网络。它提供了一个带有Javascript的网页。您的浏览器运行javascript。因此,是由您的浏览器执行“扫描”。他们对您的网络没有特殊的访问权限,而您的浏览器才具有特殊的访问权限。
Aner

6
设置自己的DNS并非总是能绕过路由器的DNS服务器。我至少拥有一台路由器,该路由器可以拦截对其他DNS服务器的传出DNS请求并自行回答。
2016年

.local是Bonjour / Zeroconf使用的东西。
托尔比约恩Ravn的安徒生

7

我个人不是华硕路由器的所有者,乔诺的回答非常好,但是路由器还有另一种可能的方式来完成此任务(即使您的特定路由器未使用它)。

由于该页面不是通过HTTPS提供的,因此路由器完全有可能仅拦截HTTP请求并对其进行应答,而无需与任何外部服务器进行对话。在某些情况下,已知华硕路由器重定向页面。请注意,即使在没有Internet连接(即没有外部DNS)的情况下进行重定向,也必须由路由器的DNS引起。不过,没有理由两者都不能继续进行。

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

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


很好的一点。这是否意味着您不能使用Netgear防火墙阻止HTTPS域,或者当您使用它并且请求作为后备被拦截时,它是否能够阻止使用DNS?
乔诺

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

1
@ h2ooooooo我相信说网络上处于特权位置的某人/某人不能阻止HTTPS页面更准确。虽然没有一个值得信赖的CA,一个MITM不能从HTTPS流量信息不是服务器/ IP地址更精细的区分,请求很可能是由纯文本DNS请求之前指定域。修改后或否定的DNS响应肯定可以阻止流量流向特定域。如果某个域确实冒犯了您,请在您的DNS中为其创建一个空的权威区域。
tjd

@tjd只要从主机阻止了任何未经授权的dns服务器(甚至更好;不允许人们在公司机器上更改它们),您就可以完全简单地创建一个错误的DNS响应。
h2ooooooo

1

只是想添加到Jonnos来回答

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

是我(最有可能)您的路由器执行此操作的方式。您的路由器可能正在与dnsmasq运行asuswrt。您可以访问外壳程序(至少通过telnet)并自行寻找。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.