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ó


120

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

Bạn cần phải làm một cái gì đó trên máy khách (máy nơi bạn chạy ping) hoặc trên máy mà máy khách tư vấn. Hệ điều hành trên máy khách là gì? Cấu hình DNS của nó là gì?
Gilles

Cấu hình DNS là gì? Ngoài ra, xem bài cập nhật.
tshepang

1
Là câu trả lời của tôi là loại những điều bạn đã sau? Nếu vậy, câu hỏi cần đơn giản hóa - ai biết về ping/etc/hostskhông biết về DNS nào?
Gilles

Cảm ơn rất nhiều. Sẽ có một cái nhìn. Ồ, và đó là một bài viết nhiều hơn là một câu trả lời :)
tshepang

3
Câu trả lời là "cài đặt và cấu hình dnsmasq". Làm xong. :)
Warren Young

Câu trả lời:


145

Trên Internet, bao gồm các mạng cục bộ, các máy gọi 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:

  • một tập tin máy chủ . Đây là một tệp văn bản đơn giản ánh xạ tên đến địa chỉ.
  • các 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 Active Directory . 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à nó 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. Sẽ 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 tin máy chủ là /etc/hosts. Trên Windows, nó 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ó một vài inet addr:dòng, hãy chọn một dòng tương ứng với card mạng của bạn, không bao giờ là lomục 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/hostsvới tư cách là siêu người dùng; xem Làm thế nào để tôi chạy một lệnh như người quản trị 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 chúng 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 addrdò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à những gì nó trông giống như trên một phần mềm Tomato :

ảnh chụp màn hình cà chua

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 phạm vi địa chỉ của mẫu 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ủa mẫu 10.3.0. z . Ngoài ra còn có một loạt các đị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 dnsmasqgói (nếu nó chưa có). Dưới đây tôi sẽ giả sử rằng tập tin 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 dùng 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 lưu trữ trên máy chủ Phần trên) và đảm bảo rằng /etc/dnsmasq.confkhông có lệnh không bị thiếu no-hosts. (Các dòng bắt đầu bằng một #đượ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, đặt một dòng addn-hosts=/path/to/hosts/filetrong /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 resolvconfgói. 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ư thế nameserver 8.8.8.8, hãy đặt một dòng server=8.8.8.8vào /etc/dnsmasq.conf. Sau khi bạn thay đổi /etc/dnsmasq.conf, hãy 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 dnsmasqhoặc /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 /etc/resolv.conf(với quyền root), xóa mọi nameserverdòng và nameserver 127.0.0.1thay vào đó.
    • Nếu bạn đang sử dụng độ phân giải trên Debian hoặc Ubuntu, /etc/resolv.confcó thể là tối ưu nếu bạn cài đặt resolvconfgói với mạng và chạy. Hãy chắc chắn rằng các tập tin base, headtailtrong /etc/resolvconf/resolv.conf.d/thư mục không chứa bất kỳ nameservermục, sau đó chạy resolvconf -u(như root).
  • Nói với các máy khác sử dụng S làm máy chủ DNS. Chỉnh sửa /etc/resolv.confvà thay thế tất cả các nameserverdòng bằng một nameserver 10.3.0.2trong đó 10.3.0.2 là địa chỉ IP của S (xem bên trên để biết cách tìm ra địa chỉ IP của S).

Bạn cũng có thể sử dụng Dnsmasq làm máy chủ DHCP để 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 của riêng mình và gán địa chỉ IP cho tên máy chủ bên 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; chi phí này thường là $ 10, $ 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ủ lưu trữ.

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).


Tạo máy chủ DNS của riêng bạn với Dnsmasq: làm cách nào tôi có thể nói với máy khác sử dụng S, khi máy kia đã cài đặt Windows
Radu Rădeanu

@Radu Bạn có thể thay đổi các máy chủ DNS được liên kết với một kết nối thông qua bảng điều khiển ở đâu đó. Tôi nghĩ rằng bạn cần phải kéo lên các thuộc tính kết nối của giao diện mạng.
Gilles

Tôi đã quảng cáo c: \ windows \ system32 \ driver \ etc \ hosts và nó hoạt động. Cảm ơn!
Radu Rădeanu

Tôi đang kéo tóc ra để tìm cái này và tìm thấy nó trong bộ định tuyến như bạn đề nghị. Cảm ơn về thông tin chi tiết!
Jason Turan

Nếu đó là một mạng công ty, tôi phải nói với cơ sở hạ tầng. để thêm mac linux của tôi vào danh sách máy chủ DNS, phải không?
WesternGun

24

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 .localTLD (đó 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.


1
mDNS dường như không được hỗ trợ trên Windows mà không cài đặt một cái gì đó trên mỗi hộp windows.
Zitrax

1
@Zitrax Điểm tốt (mặc dù đây là trang web * nix). Thông tin liên quan cho thiết lập Windows có thể được tìm thấy ở đó - tương đối đơn giản.
tne

3
Aka Zeroconf hoặc Bonjour. Được cung cấp bởi avahigói (s). Bạn có thể truy vấn mạng của bạn thông qua avahi-browse -alrví dụ.
Danman

4
vi /etc/dhcp3/dhclient.conf

send host-name "ubuntu-laptop";

/etc/init.d/networking restart

Tôi nên chạy cái này trên máy khách hay máy chủ?
tshepang

Bit đầu tiên sẽ được thực hiện trên máy chủ dhcp (và bạn muốn chạy service restart dhcpd). Phần thứ hai sẽ được thực hiện trên máy khách và trên hầu hết các bản phân phối bây giờ nên được chạy dưới dạng service networking restart.
Caleb

Theo tôi nhớ, tôi chỉ cần chạy cái này ở phía khách hàng ..
LanceBaynes

3

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ể /etc/hoststrên máy khách, ldap, nsswitch hoặc máy chủ DNS bình thường. Tôi sử dụng bindvà 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 đó.

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.