维护 DHCP 上主机的“/etc/hosts”

维护 DHCP 上主机的“/etc/hosts”

在我的本地 DHCP 网络上,我需要远程访问不同的 PC。问题是他们的IP改变了。有时我会将笔记本电脑和上网本插入其他人的 DHCP 网络。

/etc/hosts我目前的解决方案是每次目标IP发生变化时更新文件。

我的/etc/hosts文件如下所示:

# <ip-address>   <hostname.domain.org>    <hostname>
127.0.0.1        localhost.localdomain    localhost laptop    
192.168.1.14     desktop.localdomain      desktop
192.168.1.12     netbook.localdomain      netbook

有没有办法绕过所有手动管理?

例如,我的计算机可以在 LAN 上广播它们的 IP 或类似的东西吗? Windows 做了类似的事情,它允许您使用“\\COMPUTER_NAME”引用网络上的计算机

答案1

这要看DHCP是做什么的?

大多数家庭路由器使用域名解析您可以将其用作本地 DNS 服务器。你只需要设置域名解析返回自身作为 DNS 服务器。接下来,您需要确保您的 PC 在 DHCP 请求期间广播主机名。

然后,瞧,您应该能够通过 DNS/DHCP 服务器解析所有本地计算机。

答案2

根据您想要完成的任务,您可以设置 avahi,它可以广播您计算机上 sshd 服务的存在。不过,在“外国”网络中要小心......

答案3

我经常想知道这个问题,我尝试在 /etc/sysconfig/network-scripts/update-hosts 中创建这样的脚本:-

#!/bin/sh

set -e

if [ "$IFACE" = lo ]; then
    exit 0
fi

SHORT_HOST=`hostname`

# Remove current line with hostname at the end of line
sed -i '/'$SHORT_HOST'$/ d' /etc/hosts

ipaddr=$(ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
echo "$ipaddr $SHORT_HOST" >>/etc/hosts

然后我将通过初始化脚本 /etc/init.d/updatehosts 运行它:-

#!/bin/sh
# chkconfig: 2345 11 89
# description: automatically update /etc/hosts
#

if [ ! -x /etc/sysconfig/network-scripts/update-hosts ]
then
    echo "Update hosts: can't update hosts file"
    exit
fi

case "$1" in
    'start')
        # Update hosts:
        cp /etc/hosts /etc/hosts.001
                /etc/sysconfig/network-scripts/update-hosts
                echo "/etc/hosts updated"
        ;;
    'stop')
        # Restore hosts:
                cp /etc/hosts.001 /etc/hosts
                echo "/etc/hosts restored"
        ;;
esac

使用 chkconfig --add updatehosts 启用

谁能推荐更好的方法或对此方法的改进?

答案4

每次 DHCP 更改您的 IP 时,您都可以使用 avahi 守护程序将您的 IP 地址绑定到某个可解析的主机名。

相关内容