如何解析本地域名?


21

我的Belkin路由器有一个设置本地域名的选项,我怀疑可以使用该域名为自己网络中的主机寻址。默认情况下,它设置为“ Belkin”。

是否可以像这样ping foobar.belkin而不是通过我的网络来调用主机ping 192.168.2.4

关键是,我的路由器内部页面显示了所有设置的主机名(dhclient似乎可以正常工作),并且路由器本身可以访问为router.belkin,但没有其他主机可以访问。

我的问题是路由器知道每个主机的名称,但是主机不知道彼此的名称。我该如何解决?

注意:Nmap显示DNS的udp / 53端口在我的路由器上是打开的,但是我找不到在Web界面上配置它的任何方法。

Add://这是“ Belkin F7D3302 v1”


好了,您可以通过IP对本地客户端执行ping操作吗?
M.Bennett

是的,没问题
MechMK1 2013年

尽管我可以使用来访问我的FRITZ!Box http://fritz.box,但我使用.local而不是来访问其网络上的其他计算机.box。之前,使用另一个调制解调器/路由器是.lan
Arjan

我认为我们所有人在不真正知道正在使用哪种Belkin产品的情况下回答这个问题都是领先的。您使用哪种型号的路由器?
Qwilson

Answers:


11

通常,路由器不会充当DNS服务器,但通常会充当DNS代理。也就是说,在DHCP中,他们将提供自己的IP作为DNS服务器,然后他们将转身攻击真实的DNS服务器。如果这样做,那么我认为您可以解析这些本地的.belkin名称。

检查ipconfig / all,看看默认网关和DHCP服务器是否具有相同的IP。如果不是,则输入nslookup,然后在提示符下输入“ server ROUTER_IP”,并尝试在google.com上进行查找。如果可行,则可能是在路由器中进行了设置,使其具有未经检查的DNS服务器自己的IP。


14

如果LAN上的计算机运行的是相对较新的操作系统,则可以通过在它们的主机名后附加“ .local”来访问它们,如下所示:

ping MACHINE_NAME.local

要从给定IP获取名称,请使用

avahi-resolve-address MACHINE_IP

要查看本地网络上所有已连接的计算机名称和IP,请使用类似以下BASH命令的方法:

px-lan-scan () {
    LOCAL_MASK=$(ip -o -4 addr show | awk -F '[ /]+' '/global/ {print $4}' | cut -d. -f1,2,3)
    GATEWAY=$(route -n | \grep '^0.0.0.0' | awk '{print $2}')
    if [ $1 ] ; then range=$1 ; else range="10" ; fi

    for num in $(seq 1 ${range}) ; do
        IP=$LOCAL_MASK.$num
        if [[ $IP == $GATEWAY ]] ; then MACHINE="gateway" ; else MACHINE=$(avahi-resolve-address $IP 2>/dev/null | sed -e :a -e "s/$IP//g;s/\.[^>]*$//g;s/^[ \t]*//") ; fi
        ping -c 1 $IP>/dev/null
        if [ $? -eq 0 ] ; then
            echo -e "UP    $IP \t ($MACHINE)" ; else
            echo -e "DOWN  $IP"
        fi
    done
}

1

当然,这就是我在家使用路由器的方式。

只要您启用了DNS服务功能,路由器就应该能够执行此操作,以便它为该域的LAN处理DNS请求(它将对其他域的请求转发到您通常的DNS服务器,以便您的网络在客户端上浏览没有中断)。

您需要使每个客户端使用路由器进行DNS查找,如果您还使用DHCP,则它们很可能会开箱即用。


我的路由器是DHCP服务器,但是我不确定它是否可以充当DNS服务器。至少我没有找到这样的选择
MechMK1

老实说,如果不这样做,我会感到惊讶。我正在使用华硕路由器,但上面装有ddwrt固件。可以肯定的是,它确实可以做到。
Sirex

我已经用Google搜索了一下,找不到用于Belkin路由器的任何东西
MechMK1

@Sirex我认为这里的主要区别在于ASUS路由器的固件使用DDWRT。该软件与OpenWRT一样广为人知,它提供了路由器所期望的强大功能
b01 2015年

1

简短的答案是(在大多数情况下)否。您的路由器(在大多数情况下)不是DNS服务器。但是,您可以为所有设备设置静态条目,然后将其添加到给定设备内的主机列表中。

Belkin F7D3302不支持服务DNS。


您可能是对的,但是我使用的所有家庭级调制解调器/路由器(如SpeedTouch,FRITZ!Box)都附带了一些内置DNS服务器。(或者至少,我总是可以使用计算机名而不是某些IP地址。)
Arjan

大卫正在使用Belkin。他提到他看不到在路由器内配置dns设置的位置。我的答案是基于以下假设(由给定的信息构成),该路由器将不管理dns。
Qwilson

是的,这可行,但是这是最不希望的选择,因为它很难维护。如果路由器更改了任何IP,它就会中断。
2015年

1

我遇到了完全相同的问题。

问题似乎是,如果您尝试寻址本地主机名,则假定belkin是您设置为本地域名的地址,路由器会自动附加“ .belkin”。将其更改为其他内容将无法解决问题,因此您不能空白。

正如xaccrocheur所说,大多数现代操作系统都可以通过附加.local来访问大多数内容 。...我已经做了一种变通方法,可以在我的大多数机器上很好地工作。我将路由器上的本地域名设置更改为本地

我现在只能通过主机名访问MOST设备


0

在本地网络中安装和配置dns服务器,在所有主机上注册它,然后在Belkin路由器的dns服务器列表中首先输入内部dns服务器。然后,您将拥有想要的东西。


1
我谨尊重您的回答。将dns服务器放置在网络中将是一种解决方案,但是鉴于David的问题是特定于通过路由器实现dns的事实,因此这不是可接受的答案。
Qwilson

@Qwilson华丽。那么,需要在哪里存储和查找本地设备的dns记录?
STTR 2013年

对于(大多数)本地设备,将有一个用于内部记录的主机文件,以及一个用于外部记录的专用服务器(例如8.8.8.8)。
Qwilson

0

虽然我不建议您这样做,但它会为您提供所需的结果(无需设置单独的DNS服务器即可对本地主机名执行ping操作)

  1. 在您的主计算机上,浏览到C:\ Windows \ System32 \ drivers \ etc
  2. 使用记事本打开主机文件
  3. 滚动到主机文件的底部
  4. 在文件中最后注释的行下方添加一个新行,如下所示

192.168.2.1 router.belkin

192.168.2.2主机名

192.168.2.3主机名2

保存主机文件。

现在尝试ping主机名和主机名2,您应该看到以下内容

ping hostname2

Pinging hostname2 [192.168.2.3] with 32 bytes of data:

ping hostname

Pinging hostname2 [192.168.2.2] with 32 bytes of data:

再说一次,这不是我要做的。我会选择自己设置DNS服务器,但是如果您没有该选项,则这是一种快速而肮脏的选择。

哦,不要忘记您是否打算这样做,将自己添加到hosts文件的安全权限中,以便可以写入该文件。同样不要忘记将此主机文件复制到网络上的所有其他计算机。

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.