ฉันสามารถมีจุดในชื่อโฮสต์ได้หรือไม่?


23

ฉันใช้ชื่อเช่น a.alpha สำหรับชื่อโฮสต์ของกล่อง linux ของฉัน แต่เห็นว่าชื่อเหล่านี้ไม่สามารถใช้งานได้อย่างสมบูรณ์ การตอบสนองของคำสั่ง hostname shell นั้นถูกต้อง (a.alpha) แต่ชื่อที่พิมพ์หลังจากบัญชีผู้ใช้ของฉันคือ "user @ a" แทนที่จะเป็น "user@a.alpha" เมื่อฉันใช้ avahi ฉันสามารถเข้าถึง (โดยชื่อโฮสต์) a.alpha แต่ไม่ใช่ b.alpha เป็นเรื่องปกติหรือไม่

คำตอบ:


23

ชอปเปอร์ถูกต้อง เนื่องจาก DNS ทำงานอย่างไรส่วนประกอบ "alpha" ของ "a.alpha" จึงถูกพิจารณาว่าเป็น 'label' ที่ไม่ต่อเนื่องใน DNS การใช้ชื่อโฮสต์ที่มีจุดอยู่นั้นจะทำให้เกิดผลลัพธ์ที่ไม่สอดคล้องกันจากระบบใด ๆ ที่ใช้ DNS

Avahi โต้ตอบกับชื่อ DNS และ<host-name>คำสั่งเฉพาะจำเป็นต้องมี DNS FQDN ของบริการอยู่ดังนั้นจึงขึ้นอยู่กับความไม่สอดคล้องของ DNS กับชื่อจุด

อย่าใช้ชื่อประ


สิ่งนี้ถูกต้อง แต่ต้องมีการอ้างอิงเพื่อพิจารณาคำตอบที่เชื่อถือได้ มีคนพูดว่า 'เนื่องจาก DNS ทำงานอย่างไร' ใน Stack Overflow ไม่ได้พิสูจน์อะไรเลย
mikemaccana

เป็นกฎที่เข้มงวดหรือไม่ที่ชื่อโฮสต์จะต้องไม่มี '.' ?
Dinesh Kumar P

1
@DineshKumarP ใช่ DNS RFCs อธิบายถึงตัวอักษรจุดเป็นตัวคั่นระหว่างป้ายกำกับ DNS ในขณะที่บริการที่ไม่ใช่ DNS เช่น Avahi หรือ SLP อาจอนุญาตให้ใช้ตัวเอง DNS ไม่ได้
sysadmin1138

มันไม่ถูกต้องนัก DNS ยินดีอย่างยิ่งที่จะอนุญาตให้ใช้จุดในป้ายกำกับแม้ว่าจะแนะนำให้สอดคล้องกับไวยากรณ์ที่ถูก จำกัด ("กฎ LDH"; ดูtools.ietf.org/html/rfc1035#section-2.3.1 ) แอปพลิเคชันของ DNS - เช่นการจัดเก็บชื่อโฮสต์ใน DNS - เป็นที่ที่ข้อ จำกัด ในการกำหนดไวยากรณ์ของป้ายกำกับ DNS
Tony Garnock-Jones

17

คุณกำลังถามปัญหาเกี่ยวกับรูปแบบการตั้งชื่อนั้นเนื่องจาก DNS ให้ลองใช้ตัวอักษร A-alpha แทน


ฉันถามคำถามเดียวกันกับ askubuntu และไม่มีใครตอบฉันได้ ดังนั้นฉันจะใช้วิธีนี้
benzen

1

อย่างที่คนอื่น ๆ พูดถึงคุณต้องการหลีกเลี่ยงจุดในชื่อโฮสต์ของคุณเนื่องจาก DNS และฉันก็พบว่าสิ่งนี้อาจทำให้เกิดปัญหาได้หากคุณใช้ใบรับรองไวด์การ์ดเพื่อดำเนินการ SSL เนื่องจากไวด์การ์ดจะใช้ไวด์การ์ดสำหรับหนึ่งระดับ โดเมนย่อย ดังนั้นหากใบรับรองไวด์การ์ดของคุณใช้สำหรับ * .mycompany.com แต่คุณมีชื่อโฮสต์ที่เป็น a.alpha ใบรับรองไวด์การ์ดอาจไม่ทำงานหากใช้ "อัลฟ่า" เป็นโดเมนย่อย


1

ชื่อโฮสต์แบบเต็มของโฮสต์โดยทั่วไปคือ FQDN ที่ติดตั้งโดเมน (ชื่อโดเมนแบบเต็ม) และใน linux ควรจะจบลงด้วยผลลัพธ์host --fqdnโดยส่วนที่อยู่ก่อนจุดแรกจะถือว่าเป็นชื่อเล่นของโฮสต์ อย่างไรก็ตามระบบที่แตกต่าง (Linux, SunOS, อะไรก็ตาม) ได้ใช้แนวคิด "hostnick" ในรูปแบบต่างๆ เช่น:

  • / etc / hostname มีเพียง hostnick และที่เหลืออยู่ใน / etc / domainname
  • / etc / hostname มี FQDN ทั้งหมดและโดเมนยังอยู่ใน / etc / domainname
  • ชื่อโดเมนมีอยู่ในการกำหนดค่า YP / NIS เท่านั้น
  • ชื่อโดเมนมีอยู่ในระบบย่อยบางระบบแทนที่จะเป็นระบบโกลบอล
  • (วิธีอื่น ๆ โดยทั่วไปคือ Weirder)

นอกจากนี้แนวคิดของ hostnick เป็นตัวแปรเล็กน้อย:

  • ส่วนของ FQDN ก่อนจุดแรก
  • ส่วนด้านซ้ายของ FQDN แสดงเฉพาะโดยไม่มีจุดต่อท้าย
  • ส่วนของ FQDN ก่อนชื่อโดเมนจริง (ตามที่ตั้งไว้ที่ใดที่หนึ่ง)

และเพื่อทำให้สิ่งต่าง ๆ มีความซับซ้อนยิ่งขึ้นhostคำสั่งจาก bind9-host ละเมิดมาตรฐาน DNS โดยมี-N <int>ตัวเลือกในการควบคุมว่าจะใช้โดเมนการค้นหาหรือไม่ ซึ่งแบ่งการค้นหา DNS ในวิธีต่าง ๆ ขึ้นอยู่กับสถานการณ์ DNS ควรใช้การค้นหาชื่อที่มีจุดต่อท้ายใด ๆ เพื่อค้นหาสิ่งที่ต้องการค้นหาและสำหรับชื่ออื่น ๆ เพื่อค้นหาด้วยโดเมนต่อท้ายจาก/etc/resolv.confจนกว่าจะพบการแข่งขันหรือพวกเขาทั้งหมดล้มเหลว (โดเมนเหล่านั้นโดยปริยายมี จุดต่อท้าย) [นี่คือจากหน่วยความจำโปรดแสดงความคิดเห็นว่ากระบวนการทั่วไปมีการเปลี่ยนแปลงใน RFC ฉันพลาด]

เช่นถ้าคุณใช้จุดใน hostnick ของคุณhostคำสั่งอาจจะเป็นสิ่งที่แตกสลายทำลายสคริปต์ที่ใช้สำหรับการค้นหา ฉันพบว่ามันใช้ไม่ได้ซึ่งhostแตกสลายและดูเหมือนว่าทุกวันนี้จะค้นหาระบบในเครือข่ายในบ้านของฉันเนื่องจากฉันมีทั้ง IPv4 และ -v6 ที่บ้านและมีชื่อเช่น. v4 เป็นแบบฟอร์มสั้นพิเศษเฉพาะรุ่นซึ่งhostไม่สามารถค้นหาได้แม้ว่าจะpingพบว่าใช้ได้

มันเป็นเรื่องยากมากที่จะพยายามใส่จุดลงใน hostnicks ต่อไปดังนั้นแม้จะไม่มีการhostบาดเจ็บฉันก็เลยแนะนำให้ติดกับ hostnicks ที่ไม่มีจุดแม้ในมุมมองของอรรถศาสตร์ที่เรียบง่าย


0

คำตอบที่ถูกต้องอย่างแน่นอน "อย่าทำอย่างนั้น" ตามที่ระบุไว้ข้างต้น

สำหรับการอ่านที่มีประโยชน์และอาจมีการสัมผัสแน่นอนโปรดดำเนินการต่อ:

คุณกำลังพูดถึงความละเอียด dns หรือพรอมต์บรรทัดคำสั่งของคุณ? หากคุณต้องการแก้ไขพรอมต์บรรทัดคำสั่งของคุณเพียงแค่เล่นกับ $ PS1 (หรือเทียบเท่าที่ไม่ใช่ bash / sh เทียบเท่าที่เกี่ยวข้อง)

หากคุณต้องการให้ a.alpha เป็นชื่อโฮสต์ที่แปลงเป็นที่อยู่ IP ใน interwebs คุณสามารถทำได้ แต่อาจเกี่ยวข้องกับโดเมนย่อยสำหรับคำต่อท้ายชื่อโฮสต์แต่ละชื่อ (EG alpha, beta ฯลฯ .. )

อาจเป็นไปได้ว่าคุณสามารถกำหนดค่าเซิร์ฟเวอร์ DNS ของคุณให้ทำงานโดยไม่ต้องสร้างโดเมนย่อย คุณสามารถให้บริการที่อยู่ IP ของเซิร์ฟเวอร์ชื่อของโดเมนย่อยในไฟล์โซนของโดเมนหลักดังนั้นมันอาจจะ "ทำงานได้" นี่เป็นเพราะเมื่อมีคนถามเซิร์ฟเวอร์ DNS ของคุณสำหรับที่อยู่ IP ของ a.alpha.examaple.com พวกเขาถามเซิร์ฟเวอร์ DNS สำหรับ example.com และถ้าเซิร์ฟเวอร์ DNS นั้นมีที่อยู่ที่แขวนอยู่แล้วมันจะตอบกลับด้วยคำตอบ แทนที่จะพยายามส่งคุณไปยังเซิร์ฟเวอร์ที่เชื่อถือได้ของโดเมนย่อย อาจทำให้เกิดปัญหากับ SOA ที่หายไป ... ดังนั้นคุณอาจเพิ่มระเบียน A สำหรับคำนำหน้าโฮสต์แต่ละรายการและและ SOA สำหรับคำต่อท้ายโฮสต์แต่ละรายการ ใช่นั่นคือตั๋ว ...

ทุกอย่างบนอินเทอร์เน็ตจะยังคงคิดว่าชื่อโฮสต์ของคุณคือ 'a' และโดเมนของคุณคือ alpha.example.com

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