Duy trì `/ etc / hosts` cho các máy chủ trên DHCP


7

Trên mạng DHCP cục bộ của tôi, tôi có các PC khác nhau mà tôi cần truy cập từ xa. Vấn đề là sự thay đổi IP của họ. Đôi khi tôi cắm máy tính xách tay và netbook của mình vào mạng DHCP của người khác.

Giải pháp hiện tại của tôi là cập nhật /etc/hoststệp mỗi khi thay đổi IP đích.

/etc/hostsTập tin của tôi trông như thế này:

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

Có cách nào để bỏ qua tất cả các quản trị thủ công?

Ví dụ: máy tính của tôi có thể phát IP của họ trên mạng LAN hay đại loại như vậy không? Windows làm một cái gì đó tương tự, cho phép bạn tham chiếu một máy tính trên mạng với "\\ COMPUTER_NAME"

Câu trả lời:


5

Nó phụ thuộc vào những gì đang làm DHCP?

Hầu hết các bộ định tuyến gia đình sử dụng dnsmasq và bạn có thể sử dụng nó làm máy chủ DNS cục bộ của mình. Bạn chỉ cần đặt dnsmasq để tự trả về làm máy chủ DNS. Tiếp theo, bạn cần đảm bảo rằng PC của bạn phát tên máy chủ trong yêu cầu DHCP.

Sau đó, thì đấy, bạn sẽ có thể giải quyết tất cả các máy cục bộ của mình thông qua máy chủ DNS / DHCP.


Tôi tin rằng việc máy chủ DHCP đồng ý với máy chủ DNS là cách duy nhất để thực hiện việc này mà không cần máy khách DHCP cập nhật DNS bằng cách nào đó. Tôi đã cấu hình dhcpd để cung cấp địa chỉ IP cụ thể cho các địa chỉ ethernet cụ thể. Những địa chỉ IP này nằm trong tệp máy chủ được sử dụng bởi dnsmasp.
Bruce Ediger

Đó là một cách khác để làm điều đó, bằng cách phân phối IP cố định trên dhcp. Điều đó có nghĩa là các máy khách sẽ không cần phải được cấu hình riêng lẻ.
sybreon

Tôi không có quyền quản trị đối với (các) bộ định tuyến.
Stefan

3

Tùy thuộc vào những gì bạn muốn thực hiện, bạn có thể thiết lập avahi, có thể phát sóng sự tồn tại của dịch vụ sshd trên máy của bạn. Hãy cẩn thận trong các mạng 'nước ngoài' mặc dù ...


Thậm chí ngoài việc phát sóng sự tồn tại của sshd, avahi sẽ rất dễ dàng cung cấp cho bạn độ phân giải tên máy chủ cập nhật.
Steven D

1

Tôi thường tự hỏi về điều này và tôi đã thử tạo một tập lệnh như thế này trong / 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

Sau đó tôi sẽ chạy nó thông qua một tập lệnh init /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

được kích hoạt bằng chkconfig --add updatehosts

Bất cứ ai có thể đề nghị một cách tốt hơn hoặc cải tiến cho phương pháp này?


0

Bạn có thể sử dụng avahi daemon để liên kết địa chỉ IP của mình với một số tên máy chủ có thể phân giải được mỗi khi IP của bạn bị thay đổi bởi DHCP.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.