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サーバーとして使用できます。設定できますDNS自分をDNSサーバーに返します。次に、DHCP要求中にPCがホスト名をブロードキャストしていることを確認する必要があります。

これにより、お使いの DNS/DHCP サーバーを介してすべてのローカル コンピューターを確認できます。

答え2

実行する操作に応じて、コンピュータにsshdサービスがあることを知らせるavahiを設定できます。しかし、「外国」ネットワークでは注意してください...

答え3

私はしばしばこの質問について疑問に思っていました。

#!/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

avahiデーモンを使用すると、DHCPがIPを変更するたびにIPアドレスを解決可能なホスト名にバインドできます。

関連情報