it-swarm-vi.com

Cách làm cho máy có thể truy cập từ mạng LAN bằng tên máy chủ của nó

Dưới đây là chi tiết về máy tôi muốn truy cập bằng tên máy chủ của nó:

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

Đây là bản cài đặt Debian 6 (Bóp) mặc định, vì vậy tôi chưa hiểu gì cả.

Đây là những gì tôi nhận được từ một máy (chạy Debian Không ổn định) đang cố truy cập vào máy phía trên:

$ ping hostname
ping: unknown Host hostname
$ ping hostname.company.local
ping: unknown Host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
131
tshepang

Trên Internet, bao gồm các mạng cục bộ, các máy gọi cho nhau bằng Địa chỉ IP . Để truy cập máy B từ máy A bằng tên của máy B, máy A phải có một số cách để ánh xạ tên của B đến địa chỉ IP của nó. Có ba cách để khai báo tên máy trên A:

  • a lưu trữ tệp . Đây là một tệp văn bản đơn giản ánh xạ tên đến địa chỉ.
  • hệ thống tên miền (DNS) . Đây là phương pháp được sử dụng trên Internet toàn cầu. Ví dụ: khi bạn tải trang này trong trình duyệt, điều đầu tiên máy tính của bạn làm là tạo một yêu cầu DNS để biết địa chỉ của unix.stackexchange.com.
  • cơ sở dữ liệu tên khác như [~ # ~] nis [~ # ~] , [~ # ~] ldap [~ # ~] hoặc Thư mục -Active . Chúng được sử dụng trong một số mạng công ty, nhưng không thường xuyên (nhiều mạng sử dụng NIS, LDAP hoặc AD cho cơ sở dữ liệu người dùng sử dụng DNS cho tên máy). Nếu mạng của bạn sử dụng một trong số này, bạn có một quản trị viên mạng chuyên nghiệp và nên hỏi anh ta phải làm gì.

Có nhiều cách để chúng có thể hoạt động trong thực tế; không thể bao gồm tất cả. Trong câu trả lời này, tôi sẽ mô tả một vài tình huống phổ biến.

Tập tin máy chủ

Phương thức tệp máy chủ có ưu điểm là không yêu cầu bất kỳ phương thức đặc biệt nào. Nó có thể cồng kềnh nếu bạn có một số máy, bởi vì bạn phải cập nhật mọi máy khi tên của một máy thay đổi. Không phù hợp nếu địa chỉ IP của B được gán động (để bạn nhận được một địa chỉ khác nhau mỗi khi bạn kết nối với mạng).

Một tập tin máy chủ là một danh sách đơn giản các tên ánh xạ dòng đến địa chỉ IP. Nó trông như thế này:

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

Trên các hệ thống unix, tệp máy chủ là /etc/hosts. Trên Windows, đó là c:\windows\system32\drivers\etc\hosts. Chỉ cần về mọi hệ điều hành mà bạn có thể kết nối với Internet đều có một tệp tương tự; Wikipedia có một danh sách .

Để thêm một mục nhập cho B trong tệp máy chủ của A:

  1. Xác định địa chỉ IP của B. Trên B, chạy lệnh ifconfig (nếu không tìm thấy lệnh, hãy thử /sbin/ifconfig). Đầu ra sẽ chứa các dòng như thế này:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    Trong ví dụ này, địa chỉ IP của B là 10.3.1.42. Nếu có nhiều inet addr: lines, chọn một dòng tương ứng với card mạng của bạn, không bao giờ là mục lo hoặc đường hầm hoặc mục ảo.

  2. Chỉnh sửa tệp máy chủ trên A. Nếu A đang chạy một số hệ thống unix, bạn sẽ cần chỉnh sửa /etc/hosts là siêu người dùng; xem Làm cách nào để tôi chạy lệnh với tư cách quản trị viên hệ thống (root) .

DHCP + DNS trên mạng gia đình hoặc văn phòng nhỏ

Phương pháp này là đơn giản nhất nếu bạn có thiết bị cần thiết. Bạn chỉ cần định cấu hình một thiết bị và tất cả các máy tính của bạn sẽ biết về tên của nhau. Phương pháp này giả định rằng máy tính của bạn lấy địa chỉ IP của họ qua [~ # ~] dhcp [~ # ~] , đây là phương pháp để máy tính tự động truy xuất địa chỉ IP khi chúng kết nối với mạng. Nếu bạn không biết DHCP là gì, họ có thể làm.

Nếu mạng của bạn có bộ định tuyến gia đình , đó là nơi tốt nhất để định cấu hình tên cho các máy được kết nối với bộ định tuyến đó. Trước tiên, bạn cần tìm ra Địa chỉ MAC của B. Mỗi thiết bị mạng có một địa chỉ MAC duy nhất. Trên B, chạy lệnh ifconfig -a (nếu không tìm thấy lệnh, hãy thử /sbin/ifconfig -a). Đầu ra sẽ chứa các dòng như thế này:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

Trong ví dụ này, địa chỉ MAC là 01:23:45:67:89:ab. Bạn phải chọn đường dây HWaddr tương ứng với cổng mạng được kết nối với bộ định tuyến qua cáp (hoặc thẻ wifi nếu bạn được kết nối qua wifi). Nếu bạn có một vài mục và bạn không biết đó là mục nào, hãy cắm cáp và xem thiết bị mạng nào nhận địa chỉ IP (inet addr dòng ngay bên dưới).

Bây giờ, trên giao diện web của bộ định tuyến của bạn, hãy tìm một cài đặt giống như DHCP DHCP. Tên và vị trí của cài đặt hoàn toàn phụ thuộc vào kiểu bộ định tuyến, nhưng hầu hết đều có một bộ cài đặt cơ bản tương tự. Đây là giao diện của a Phần mềm cà chua :

tomato screenshot

Nhập địa chỉ MAC, địa chỉ IP và tên mong muốn. Bạn có thể chọn bất kỳ địa chỉ IP nào trên dải địa chỉ của mạng cục bộ của bạn. Hầu hết các bộ định tuyến gia đình được cấu hình sẵn cho một dải địa chỉ có dạng 192.168. x . y hoặc 10. x . y . z . Ví dụ: trên bộ định tuyến Tomato được hiển thị ở trên, trong tab Mạng Network, có cài đặt địa chỉ IP của bộ định tuyến IP với giá trị 10.3.0.1 và cài đặt mặt nạ mạng con có giá trị 255.255.255.0, có nghĩa là máy tính trên mạng cục bộ phải có địa chỉ có dạng 10.3.0. z . Ngoài ra còn có một loạt địa chỉ cho các địa chỉ DHCP được gán tự động (10.3.0.129 1910.1.0.254); đối với địa chỉ DHCP được gán thủ công của bạn, hãy chọn một địa chỉ không nằm trong phạm vi này.

Bây giờ kết nối B với mạng và nó sẽ nhận được địa chỉ IP bạn đã chỉ định và có thể truy cập được bằng tên được chỉ định từ bất kỳ máy nào trong mạng.

Tạo máy chủ DNS của riêng bạn với Dnsmasq

Nếu bạn không có bộ định tuyến gia đình có khả năng, bạn có thể thiết lập chức năng tương tự trên bất kỳ máy Linux nào. Tôi sẽ giải thích cách sử dụng Dnsmasq để thiết lập [~ # ~] dns [~ # ~] . Có nhiều chương trình tương tự khác; Tôi đã chọn Dnsmasq vì nó dễ cấu hình và gọn nhẹ (ví dụ như những gì bộ định tuyến Tomato minh họa ở trên sử dụng). Dnsmasq có sẵn trên hầu hết các bản phân phối Linux và BSD cho PC, máy chủ và thiết bị mạng.

Chọn một máy tính luôn bật, có địa chỉ IP tĩnh và đang chạy một loại Linux hoặc BSD; hãy gọi nó là S (cho máy chủ). Trên S, cài đặt gói dnsmasq (nếu nó chưa có). Dưới đây tôi sẽ giả sử rằng tệp cấu hình là /etc/dnsmasq.conf; vị trí có thể thay đổi trên một số phân phối. Bây giờ bạn cần phải làm một số điều.

  • Nói với Dnsmasq để phục vụ tên Máy chủ của bạn ngoài tên người nhận được từ Internet. Cách đơn giản nhất là nhập tên và địa chỉ IP vào /etc/hosts (xem phần tập tin của Host Hosts ở trên) và đảm bảo rằng /etc/dnsmasq.conf không có no-hosts Chỉ thị không bị lỗi. (Các dòng bắt đầu bằng # được nhận xét.) Bạn có thể đặt tên trong một tệp khác; nếu bạn làm thế, hãy đặt một dòng addn-hosts=/path/to/hosts/file trong /etc/dnsmasq.conf.
  • Nói cho Dnsmasq cách lấy địa chỉ IP cho tên của các máy trên Internet.

    • Nếu bạn đang chạy Debian, Ubuntu hoặc một công cụ phái sinh, hãy cài đặt gói resolvconf. Trong hầu hết các trường hợp phổ biến, mọi thứ sẽ hoạt động ra khỏi hộp.
    • Nếu quản trị viên mạng hoặc ISP của bạn cung cấp cho bạn địa chỉ của máy chủ DNS, hãy nhập chúng vào /etc/dnsmasq.conf, ví dụ:

      server=8.8.8.8
      server=8.8.4.4
      
    • Nếu bạn không biết cài đặt DNS hiện tại của mình là gì, hãy tìm trong tệp /etc/resolv.conf. Nếu bạn thấy một dòng như nameserver 8.8.8.8, đặt một dòng server=8.8.8.8 trong /etc/dnsmasq.conf. Sau khi bạn thay đổi /etc/dnsmasq.conf, khởi động lại Dnsmasq. Lệnh để làm điều đó phụ thuộc vào phân phối; khả năng điển hình bao gồm restart dnsmasq hoặc là /etc/init.d/dnsmasq restart.

  • Yêu cầu S sử dụng dịch vụ Dnsmasq cho tất cả các yêu cầu tên Máy chủ. Chỉnh sửa tập tin /etc/resolv.conf (với quyền root), xóa mọi dòng nameserver và đặt nameserver 127.0.0.1 thay thế.
    • Nếu bạn đang sử dụng độ phân giải trên Debian hoặc Ubuntu, thì /etc/resolv.conf có thể là tối ưu nếu bạn đã cài đặt gói resolvconf với mạng đang hoạt động. Đảm bảo rằng các tệp base, headtail trong /etc/resolvconf/resolv.conf.d/ thư mục không chứa bất kỳ mục nameserver nào, sau đó chạy resolvconf -u (là root).
  • Nói với các máy khác sử dụng S làm máy chủ DNS. Biên tập /etc/resolv.conf và thay thế tất cả các dòng nameserver bằng một nameserver 10.3.0.2 trong đó 10.3.0.2 là địa chỉ IP của S (xem bên trên để biết cách tìm địa chỉ IP của S).

Bạn cũng có thể sử dụng Dnsmasq dưới dạng a [~ # ~] dhcp [~ # ~] máy chủ, để máy có thể tự động lấy địa chỉ tương ứng với tên của chúng. Điều này nằm ngoài phạm vi của câu trả lời này; tham khảo tài liệu Dnsmasq (không khó). Lưu ý rằng chỉ có thể có một máy chủ DHCP duy nhất trên một mạng cục bộ nhất định (định nghĩa chính xác của mạng cục bộ nằm ngoài phạm vi của câu trả lời này).

Tên trên Internet toàn cầu

Cho đến nay, tôi đã giả định một mạng cục bộ. Điều gì sẽ xảy ra nếu bạn muốn đặt tên cho một chiếc máy ở một góc khác của thế giới? Bạn vẫn có thể sử dụng bất kỳ kỹ thuật nào ở trên, ngoại trừ các phần liên quan đến DHCP chỉ được áp dụng trong mạng cục bộ. Ngoài ra, nếu máy của bạn có địa chỉ IP công cộng, bạn có thể đăng ký tên công khai của riêng mình cho chúng. (Bạn cũng có thể gán địa chỉ IP riêng cho tên công khai; nó ít phổ biến hơn và ít hữu ích hơn, nhưng không gặp khó khăn về kỹ thuật.)

Lấy tên miền của riêng bạn

Bạn có thể lấy tên miền và gán địa chỉ IP cho tên máy chủ trong tên miền này. Bạn cần đăng ký tên miền với nhà cung cấp tên miền; cái này thường có giá $ 10 đô la $ 15/năm (đối với các tên miền rẻ nhất). Sử dụng giao diện web của nhà cung cấp tên miền của bạn để gán địa chỉ cho tên máy chủ.

Thuốc nổ DNS

Nếu máy của bạn có địa chỉ IP động, bạn có thể sử dụng giao thức DNS động để cập nhật địa chỉ IP được liên kết với tên của máy khi địa chỉ thay đổi. Không phải tất cả các nhà cung cấp tên miền đều hỗ trợ DNS động, vì vậy hãy mua sắm trước khi mua. Để sử dụng cá nhân, No-IP cung cấp dịch vụ DNS động miễn phí, nếu bạn sử dụng tên miền của riêng họ (ví dụ: example.ddns.net).

150

Sử dụng DNS Multicast (mDNS). Đây là giao thức cấu hình không hoạt động trên các mạng con LAN. Không cần máy chủ. Sử dụng .local TLD (đó là những gì bạn đã sử dụng).

Bởi vì bạn đang hỏi, mọi thứ khác dường như quá mức cần thiết. Nếu không, thì có lẽ bạn sẽ không hỏi.

27
tne
vi /etc/dhcp3/dhclient.conf

send Host-name "ubuntu-laptop";

/etc/init.d/networking restart
4
LanceBaynes

Máy tính không chỉ biết một cách kỳ diệu tên máy chủ thuộc về địa chỉ IP nào. Ngay cả trên localhost, có một số loại tra cứu liên quan.

Bạn sẽ cần phải cấu hình các hệ thống khác của mình để sử dụng một số loại dịch vụ tra cứu tên. Điều này có thể là /etc/hosts trên máy khách, ldap, nsswitch hoặc máy chủ DNS bình thường. Tôi sử dụng bind và nhập tất cả các máy cục bộ bên trong một tên miền cục bộ, sau đó để nó phục vụ DNS cho trang web đó.

3
Caleb

Nếu bạn không muốn can thiệp với hostfile và tình cờ bạn sở hữu một tên miền Internet và truy cập Internet, bạn có thể tạo một tên miền phụ A trỏ đến IP nội bộ của bạn. Ví dụ: thiết lập intranet-pc1.someperson.com và trỏ đến 10.0.1.13.

1
MK Yung