Làm cách nào để sử dụng tên máy chủ .local với Arch Linux?


18

Nếu tôi đang sử dụng Ubuntu hoặc Linux Mint (hai hương vị duy nhất tôi đã thử và biết chắc chắn hoạt động), tôi có thể chạy một cái gì đó như thế này:

wayne@myhost$ ssh wayne@otherhost.local

Và tên được tự động phân giải thành bất cứ IP nào của otherhost trên mạng cục bộ của tôi.

Tôi đã quyết định bắt đầu phân nhánh sang các bản phát hành khác và tôi đã có Arch chạy trên máy tính xách tay của mình - nhưng nếu tôi thử sử dụng lệnh trước thì tôi nhận được Could not resolve hostname otherhost.local: Name or service not known

Điều gì làm cho việc phân loại tên tự động (?) Này diễn ra?


5
Bạn phải cài đặt avahicũng như nss-mdns- để biết thêm chi tiết, hãy xem wiki wiki
Ulrich Dangel 23/07 '

Câu trả lời:


15

Câu trả lời của Wayne bây giờ khá cũ. Arch đã chuyển sang sử dụng systemd thay vì init script. Trang Avahi của Arch wiki đã được cập nhật và chứa thông tin chi tiết về lý do tại sao các bước dưới đây là cần thiết. Tóm lại: Avahi là một công cụ zeroconf, có nghĩa là bản thân nó không cần cấu hình để hoạt động khi được cài đặt trên tất cả các máy LAN của bạn, nhưng bạn phải cấu hình phần còn lại của phần mềm để nó thông báo cho Avahi thông tin.

Chạy chúng dưới dạng root hoặc thêm vào sudokhi thích hợp, trong một thiết bị đầu cuối và thay thế nanobằng trình soạn thảo bạn chọn.

  1. pacman -S avahi nss-mdns Cài đặt trình nền dịch vụ Avahi và trình phân giải DNS Multicast.
  2. nano /etc/nsswitch.conf Tệp này cho thư viện C biết cách lấy thông tin dịch vụ tên.
  3. Thay đổi dòng hosts: files dns myhostnamethành hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, lưu và thoát.
  4. systemctl start avahi-daemon Bắt đầu dịch vụ Avahi theo cách thủ công vì chúng tôi đã khởi động. Xem xét các lỗi)
  5. systemctl enable avahi-daemon Cho phép dịch vụ Avahi khi khởi động.

Tôi chỉ thực hiện các bước này trên máy tính xách tay Arch và không cần phải khởi động lại bất kỳ dịch vụ nào khác hoặc giao diện wifi để các máy khác của tôi khám phá nó trong vòng vài giây và để máy tính xách tay của tôi khám phá dịch vụ của chúng.

Vì tôi chưa thể nhận xét về câu trả lời của ggg, tôi chỉ muốn chỉ ra ở đây rằng không cần phải làm điều này trong một kịch bản khởi động - đó là những gì cho phép dịch vụ trong systemd là dành cho. Làm một lần và quên nó đi.


3
Bạn thậm chí có thể kết hợp các bước 4 và 5 : systemctl enable avahi-daemon --now. Nó khởi động và kích hoạt dịch vụ ngay lập tức thay vì chờ lần khởi động tiếp theo.
Jonathan Komar

11

Nhờ vào con trỏ đến bài viết Arch Wiki về Avahi từ Ulrich Dangel, đây là những gì tôi đã làm:

  1. Cài đặt avahi và nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Thêm /etc/rc.d/avahi-daemon startvào cuốirc.local
  3. Vì tôi đang chạy dhcpcd, /etc/dhcpcd.confnên tôi đã bình luận noipv4ll.
  4. Tôi cũng chạy $ sudo /usr/sbin/avahi-autopid -D wlan0. Vì tôi không thích khởi động lại, tôi không chắc bước 3 có cần thiết không.
  5. Trong /etc/nsswitch.conftôi đặt dòng để đọc hosts: files mdns4_minimal dns mdns4.
  6. Sau đó, tôi chạy $ sudo /etc/rc.d/dbus restartđể khởi động lại dbus.

Sau đó, chỉ ssh wayne@other.localcần làm việc.


1
Về điểm thứ hai của bạn: Bạn cũng có thể chỉ cần thêm "avahi-daemon" vào dòng DAEMONS trong /etc/rc.conf
Wieland

Tôi đã nghĩ về điều đó, nhưng wiki chỉ ra rằng một số người gặp vấn đề với nó bắt đầu quá nhanh trong RC.conf và kết quả là thất bại, và việc đặt nó ở nơi tôi làm là một cách khắc phục.
Wayne Werner

2

Tôi không nghĩ rằng chúng ta cần avahi-daemonchạy để sử dụng .local. Đây là những gì tôi có trong kịch bản khởi động của mình. Điều này đơn giản hơn nhiều so với phương pháp của Arch Wiki.

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
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.