如何解決本地域名?
我的Belkin路由器有一個設置本地域名的選項,我懷疑,它允許我使用這個域來尋址我自己網絡中的主機。默認情況下,它設置為“Belkin”。 是否可以像這樣在我的網絡中呼叫主機,例如 ping foobar.belkin 而不是 ping 192.168.2.4 ? 問題是,我的路由器內部頁面顯示所有設置的主機名(因此 dhclient 似乎工作),路由器本身可以作為 router.belkin 訪問,但沒有其他主機。 我的問題是路由器知道每個主機名,但主機不知道彼此的名字。我該如何解決這個問題? 註意:Nmap顯示DNS的端口udp/53在我的路由器上打開,但我找不到任何方法在Web界面上配置它。 添加://這是“Belkin F7D3302 v1”
最佳答案
如果局域網上的計算機運行相對現代化的操作系統,則可以通過附加“ .local“到他們的主機名,像這樣: ping MACHINENAME.local 要從給定IP獲取名稱,請使用 avahi-resolve-address MACHINEIP
要查看本地網絡上所有已連接的計算機名稱和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
}