ไฟล์โฮสต์: มันไม่ถูกต้องที่จะมีที่อยู่ IP เดียวกันในหลายบรรทัด?


28

ฉันฟอร์แมตไฟล์โฮสต์ของฉันมาระยะหนึ่งแล้ว สังเกตเห็น ip เดียวกันบนสองบรรทัด:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

ฉันอ่านเมื่อเร็ว ๆ นี้ว่าควรมีการรวมชื่อแทนในหนึ่งบรรทัด:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

อย่างไรก็ตามฉันไม่ชอบวิธีนี้เพราะคุณไม่สามารถออกความเห็นนามแฝงบางอย่างหรือเพิ่มความคิดเห็นไปยังนามแฝงเฉพาะเช่นนี้:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

จนถึงตอนนี้ก็ทำงานได้ดี; มีปัญหากับสิ่งนี้หรือไม่?

คำตอบ:


28

ฉันพบกระทู้นี้ที่กล่าวถึงการทำอะไรบางอย่างตามบรรทัดเหล่านี้ เธรดค่อนข้างยืนกรานว่าจะไม่มี/etc/hostsไฟล์หลายบรรทัด

ตัดตอนมา - Re: / etc / hosts: สองบรรทัดด้วยที่อยู่ IP เดียวกันหรือไม่

ไม่มันจะไม่ ตัวแก้ไขจะหยุดที่ความละเอียดแรก มีบางสิ่งที่ชอบ:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

จะไม่ทำในสิ่งที่คุณกำลังพูดถึง แต่มี:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

จะทำให้เกิดความเสียหายทุกชนิด รวมถึงการส่งต่อ

โดยทั่วไปฉันจะไม่ทำสิ่งที่คุณพยายาม หากคุณต้องการหลักฐานเพิ่มเติมหน้าคนก็บอกว่าอย่าทำเช่นนี้:

สิ่งที่สกัดมา man hosts

หน้าคู่มือนี้อธิบายรูปแบบของไฟล์ / etc / hosts ไฟล์นี้เป็นไฟล์ข้อความธรรมดาที่เชื่อมโยงที่อยู่ IP กับชื่อโฮสต์หนึ่งบรรทัดต่อที่อยู่ IP สำหรับแต่ละโฮสต์ควรมีบรรทัดเดียวพร้อมข้อมูลต่อไปนี้:

         IP_address canonical_hostname [aliases...]

ทั้งหมดนี้ถูกกล่าวว่าถ้าชื่อโฮสต์ของคุณเป็น FQDN และไม่ทับซ้อนกันคุณอาจปลอดภัยที่จะทำสิ่งที่คุณทำ โปรดทราบว่าหากมีการทับซ้อนเช่นสิ่งที่กล่าวถึงในเธรดข้างต้นคุณอาจพบปัญหาการแก้ไข


1
ฉันไม่ได้สังเกตผลกระทบที่ฝ่ายใดฝ่ายหนึ่งระบุไว้ในหัวข้อนั้น เช่นหลายบรรทัดสำหรับ 127.0.0.1 ไม่ส่งผลกระทบต่อผลลัพธ์ของhostname(ต้าน OP) และทุกบรรทัดแก้ไขได้อย่างถูกต้อง (ตรงกันข้ามผู้ตอบ)
goldilocks

1
แต่gethostbyaddr()สิ่งที่พวกเขาเลี้ยงนั้นมีความสำคัญ +1
goldilocks

น่าสนใจมาก! ฉันไม่ได้ตระหนักว่าไฟล์โฮสต์ถูกใช้แบบสองทิศทาง (รับชื่อโฮสต์จาก ip, รับ ip จากชื่อโฮสต์) นั่นทำให้เกิดปัญหาขึ้นมาแน่นอน บางทีฉันควรดูในกระบวนการสร้างไฟล์โฮสต์ที่คว้ารุ่นที่มนุษย์อ่านได้แล้ว "แก้ไข" โดยเชื่อมโยงนามแฝงโฮสต์กับหนึ่งบรรทัด ควรเป็นสคริปต์ที่ง่ายมาก
AlexMA

1
@AlexMA - หากคุณพบว่า/etc/hostsทำให้คุณเสียใจคุณสามารถตั้งค่า DNS ได้ตลอดเวลา ฉันใช้ BIND ด้วยเหตุผลที่แน่นอนนี้ (1) b / c ง่ายต่อการจัดการจากส่วนกลางและ (2) ฉันได้รับการแก้ไขในแบบที่ฉันต้องการจากที่นั่นโดยไม่ต้องปวดหัวมาก มีตัวเลือกที่เบากว่าเช่น DNSMasq สำหรับการทำเช่นนี้ ระบบเหล่านี้สามารถใช้งานได้ในกล่องเดียวเช่นกัน!
slm

@slm ฟังดูเหมือนเป็นตัวเลือกที่ดีมากสำหรับสภาพแวดล้อมการผลิต น่าจะเป็นโครงการเรียนรู้ที่มีค่าด้วย
AlexMA

5

ฉันเชื่อว่าวิธีที่สามทำงานได้ดี มีปัญหากับสิ่งนี้หรือไม่?

ฉันทำมาตลอดเล็กน้อย แต่มีปัญหาที่อาจเกิดขึ้นเนื่องจากการman gethostbyaddrโทรของระบบนั้นอาจใช้/etc/hostsเพื่อเชื่อมโยงที่อยู่ IP กับชื่อ แม้ว่ากรณีที่พบบ่อยมากขึ้นเป็นวิธีอื่น ๆ (รับที่อยู่จากชื่อ) ให้ระวังในกรณีที่มีอะไรตลกเกิดขึ้น


อย่างที่ฉันสงสัย แต่ต้องการให้แน่ใจว่าไม่มีเอกสารที่ดีในเอกสารนี้ ฉันไม่แน่ใจด้วยว่าอาจมีปัญหาเพิ่มเติมหรือไม่กับการแจกแจงยูนิกซ์ที่เข้มงวดเป็นพิเศษ ฉันจะให้เครดิตคำตอบแก่คุณในไม่ช้าถ้าไม่มีใครเข้าร่วมด้วยท่าทางที่แตกต่างออกไป
AlexMA

ประเด็นที่slmควรพิจารณาคือ บางทีระบบอาจไม่ได้ตั้งใจจะใช้วิธีนี้หลังจากทั้งหมด ฉันจะทำต่อไปเรื่อย ๆ (โดยปกติฉันใช้สิ่งนี้เป็น 127.0.0.1 เพื่อให้ฉันสามารถปลูกถ่ายและทดสอบในพื้นที่โดยไม่ต้องแก้ไขการกำหนดค่าโฮสต์เสมือน) แต่ฉันได้เพิ่มข้อแม้ในย่อหน้าสุดท้าย
goldilocks

ในความเป็นจริงผมได้แก้ไขนี้จะนำเข้าบัญชี "ปัญหาที่อาจเกิดขึ้น" ...
Goldilocks

0

Apache 2.4 ปฏิเสธที่จะเริ่มระบบ Unix ของฉัน สาเหตุหลักคือบรรทัดที่ซ้ำกันใน / etc / hosts หลังจากที่ฉันลบบรรทัดที่ซ้ำกันฉันก็สามารถเริ่มเว็บเซิร์ฟเวอร์


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