ฉันจะใช้ชื่อโฮสต์. local กับ Arch Linux ได้อย่างไร


18

ถ้าฉันใช้ Ubuntu หรือ Linux Mint (มีเพียงสองรสชาติเท่านั้นที่ฉันได้ลองและรู้จักทำงานได้อย่างแน่นอน) ฉันสามารถเรียกใช้สิ่งนี้:

wayne@myhost$ ssh wayne@otherhost.local

และชื่อจะได้รับการแก้ไขโดยอัตโนมัติเพื่ออะไรก็ตามที่ IP ของ otherhost อยู่ในเครือข่ายท้องถิ่นของฉัน

ฉันตัดสินใจที่จะเริ่มแยกย่อยออกไปเป็น distros อื่นและฉันได้ Arch ทำงานบนแล็ปท็อปของฉัน - แต่ถ้าฉันลองใช้คำสั่งก่อนหน้านี้ฉันจะได้ Could not resolve hostname otherhost.local: Name or service not known

ต้องใช้อะไรบ้างเพื่อให้ได้การจำแนกชื่ออัตโนมัติ (?) ที่จะเกิดขึ้น


5
คุณต้องติดตั้งavahiเช่นเดียวกับnss-mdns- สำหรับรายละเอียดเพิ่มเติมดูที่วิกิซุ้มประตู
Ulrich Dangel

คำตอบ:


15

คำตอบของ Wayne เองค่อนข้างเก่าในตอนนี้ Arch ได้เปลี่ยนเป็นใช้ systemd แทนสคริปต์ init หน้าAvahiของ Arch wiki ได้รับการอัปเดตและมีรายละเอียดเกี่ยวกับสาเหตุที่จำเป็นต้องใช้ขั้นตอนด้านล่าง กล่าวโดยย่อ: Avahi เป็นเครื่องมือ zeroconf ซึ่งหมายความว่าตัวเองไม่จำเป็นต้องมีการกำหนดค่าให้ทำงานเมื่อติดตั้งบนเครื่องทุกเครื่องใน LAN ของคุณ แต่คุณต้องกำหนดค่าซอฟต์แวร์ส่วนที่เหลือของคุณเพื่อที่จะให้ข้อมูล Avahi ถาม

รันสิ่งเหล่านี้ในฐานะรูทหรือต่อท้ายด้วยความsudoเหมาะสมในเทอร์มินัลและแทนที่nanoด้วยเครื่องมือแก้ไขที่คุณเลือก

  1. pacman -S avahi nss-mdns ติดตั้ง Avahi services daemon และตัวแก้ไขมัลติคาสต์ DNS
  2. nano /etc/nsswitch.conf ไฟล์นี้บอกไลบรารี C วิธีรับข้อมูลชื่อบริการ
  3. เปลี่ยนบรรทัดhosts: files dns myhostnameเป็นhosts: files mdns_minimal [NOTFOUND=return] dns myhostnameบันทึกและออก
  4. systemctl start avahi-daemon เริ่มบริการ Avahi ด้วยตนเองเนื่องจากเราถูก booted แล้วมองหาข้อผิดพลาด)
  5. systemctl enable avahi-daemon เปิดใช้งานบริการ Avahi ขณะบู๊ต

ฉันเพิ่งทำตามขั้นตอนเหล่านี้บนแล็ปท็อป Arch และไม่จำเป็นต้องรีสตาร์ทบริการอื่น ๆ หรืออินเทอร์เฟซ wifi เพื่อให้เครื่องอื่นของฉันค้นพบภายในไม่กี่วินาทีและให้แล็ปท็อปค้นพบบริการของพวกเขา

เนื่องจากฉันยังไม่สามารถแสดงความคิดเห็นเกี่ยวกับคำตอบของ ggg ได้ฉันเพียงต้องการชี้ให้เห็นว่าไม่จำเป็นต้องทำสิ่งนี้ในสคริปต์เริ่มต้น - นั่นคือสิ่งที่เปิดใช้งานบริการใน systemd ทำครั้งเดียวแล้วลืมมันไปซะ


3
คุณยังสามารถรวมขั้นตอนที่ 4 และที่ systemctl enable avahi-daemon --now5: มันเริ่มต้นและเปิดใช้งานบริการทันทีแทนที่จะรอการเริ่มต้นครั้งต่อไป
โจนาธานโคมาร์

11

ขอบคุณที่ตัวชี้ไปยังบทความArch Wikiเกี่ยวกับ Avahi จาก Ulrich Dangel นี่คือสิ่งที่ฉันทำ:

  1. ติดตั้ง avahi และ nss-mdns $ sudo pacman -S avahi nss-mdns
  2. เพิ่ม/etc/rc.d/avahi-daemon startไปยังส่วนท้ายของrc.local
  3. ตั้งแต่ฉันทำงานdhcpcdใน/etc/dhcpcd.confฉันแสดงความคิดเห็นออกnoipv4llสาย
  4. $ sudo /usr/sbin/avahi-autopid -D wlan0ฉันยังวิ่ง เนื่องจากฉันไม่ชอบการรีสตาร์ทฉันไม่แน่ใจว่าขั้นตอนที่ 3 จำเป็นหรือไม่
  5. ในผมตั้งสายการอ่าน/etc/nsswitch.confhosts: files mdns4_minimal dns mdns4
  6. จากนั้นฉันก็รีบ$ sudo /etc/rc.d/dbus restartรีสตาร์ท dbus

หลังจากนั้นก็ssh wayne@other.localแค่ทำงาน


1
เกี่ยวกับประเด็นที่สองของคุณ: คุณอาจเพิ่ม "avahi-daemon" ลงในบรรทัด DAEMONS ใน /etc/rc.conf
Wieland

ฉันคิดเกี่ยวกับเรื่องนั้น แต่วิกิระบุว่าบางคนมีปัญหากับมันเริ่มเร็วเกินไปใน rc.conf และล้มเหลวเป็นผลและการวางไว้ที่ที่ฉันทำคือการแก้ไข
Wayne Werner

2

ผมไม่คิดว่าเราจำเป็นต้องทำงานกับการใช้งานavahi-daemon .localนี่คือสิ่งที่ฉันมีในสคริปต์เริ่มต้นของฉัน วิธีนี้ง่ายกว่ามากเมื่อเทียบกับวิธีการของ Arch Wiki

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.