在我的本地 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 地址绑定到某个可解析的主机名。