我的 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 上面所说,大多数现代操作系统都会通过附加来访问大多数内容。当地的 所以……我做了一种变通方法,它适用于我的大多数机器。我将路由器上的本地域名设置更改为当地的
我现在只能通过主机名访问大多数设备