如何解析本地域名?

如何解析本地域名?

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

是否可以像这样调用我的网络内的主机,例如ping foobar.belkin而不是ping 192.168.2.4

问题是,我的路由器内部页面显示所有设置的主机名(因此dhclient似乎可以工作)并且路由器本身可以访问router.belkin,但其他主机则不可以。

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

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

添加:// 这是“Belkin F7D3302 v1”

答案1

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

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

答案2

如果你的局域网上的机器运行相对现代操作系统,那么您可以通过在其主机名后附加“.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
}

答案3

当然,这就是我在家里用路由器做的事情。

只要您打开了路由器的 DNS 服务功能,它就应该能够做到这一点,这样它就可以处理您 LAN 对该域的 DNS 请求(它会将对其他域的请求转发到您常用的 DNS 服务器,这样您的客户端上的 Web 浏览就不会中断)。

您需要让每个客户端使用路由器进行 DNS 查找,假设您也使用 DHCP,那么它们很可能会超出范围。

答案4

我也遇到过同样的问题。

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

正如 xaccrocheur 上面所说,大多数现代操作系统都会通过附加来访问大多数内容。当地的 所以……我做了一种变通方法,它适用于我的大多数机器。我将路由器上的本地域名设置更改为当地的

我现在只能通过主机名访问大多数设备

相关内容