วัตถุประสงค์ของ / etc / hosts คืออะไร


21

ดังที่ฉันเข้าใจแล้วhostsไฟล์ดังกล่าวเป็นหนึ่งในระบบอำนวยความสะดวกหลายอย่างที่ช่วยในการจัดการกับโหนดเครือข่ายในเครือข่ายคอมพิวเตอร์ แต่สิ่งที่ควรจะอยู่ข้างในนั้น? เมื่อฉันติดตั้ง Ubuntu โดยค่าเริ่มต้น

127.0.0.1 localhost 

จะมี ทำไม?

  • วิธีการ/etc/hostsทำงานในกรณีของระบบ JVM เช่นคาสซานดรา?
  • DNS เป็นตัวเลือกอื่นเมื่อใดฉันจึงเดาไม่ได้ในคอมพิวเตอร์เครื่องเดียว?

มีความเกี่ยวข้องมาก: unix.stackexchange.com/questions/388875/…
Kusalananda

ฉัน/etc/hostsมี127.0.0.2 mycouchdb bookmarkdb myothercouchappและ 127.0.0.3 myapachi websiteฉันใช้สิ่งเหล่านี้เพื่อช่วยฉันในการพัฒนาของฉันทำงานบนเครื่องท้องถิ่นของฉัน ฉันมี 3 บริการที่กำลังฟังอยู่ที่พอร์ต 80 ฉันไม่ต้องการที่จะนำพวกเขาไปที่ DNS เพราะพวกเขาอยู่ในพื้นที่เท่านั้น
ctrl-alt-delor

คุณเคยลองman 5 hostsไหม
Reinstate Monica - M. Schröder

Linux ไม่มี man page สำหรับสิ่งนี้ซึ่งอธิบายไว้ในรายละเอียดหรือไม่? นี่เป็นคำถามพื้นฐานที่สุด
Rob

คำตอบ:


45

ไฟล์/etc/hostsเริ่มต้นในวันเก่า ๆ ของ DARPA เป็นไฟล์การแก้ปัญหาสำหรับโฮสต์ทั้งหมดที่เชื่อมต่อกับอินเทอร์เน็ต (ก่อนที่ DNS จะมีอยู่) มันมีความสำคัญสูงสุดหมายถึงไฟล์นี้เป็นที่ต้องการก่อนระบบชื่ออื่น ๆ 1

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

มากแนวคิดเดิมของ/etc/hostsไฟล์ง่ายมากเพียงแค่ที่อยู่และชื่อโฮสต์:

127.0.0.1      localhost

สำหรับแต่ละบรรทัด นั่นคือรายการคู่ของ address-host อย่างง่าย ๆ 2

การใช้งานในปัจจุบันคือการเลี่ยงผ่านการแก้ไข DNS การจับคู่ที่พบใน/etc/hostsไฟล์จะถูกใช้ก่อนรายการ DNS ใด ๆ ในความเป็นจริงหากพบชื่อที่ค้นหา (เช่นlocalhost) ในไฟล์จะไม่มีการแก้ไข DNS เลย


1มีการกำหนดลำดับของการจำแนกชื่อจริง/etc/nsswitch.confซึ่งโดยปกติจะมีรายการนี้:

hosts:          files dns

ซึ่งหมายถึง "ลองไฟล์ ( /etc/hosts); และหากล้มเหลวให้ลอง DNS"

แต่คำสั่งนั้นสามารถเปลี่ยนแปลงหรือขยายได้


2 (ในปัจจุบัน) ไฟล์โฮสต์ประกอบด้วยบรรทัดข้อความที่ประกอบด้วยที่อยู่ IP ในฟิลด์ข้อความแรกตามด้วยชื่อโฮสต์หนึ่งชื่อหรือมากกว่า แต่ละฟิลด์ถูกคั่นด้วย white space - แท็บมักนิยมใช้ด้วยเหตุผลทางประวัติศาสตร์ แต่จะใช้ช่องว่างด้วย อาจรวมบรรทัดความคิดเห็น มันถูกระบุโดย octothorpe (#) ในตำแหน่งแรกของบรรทัดดังกล่าว บรรทัดว่างทั้งหมดในไฟล์จะถูกละเว้น ตัวอย่างเช่นไฟล์โฮสต์ทั่วไปอาจมีสิ่งต่อไปนี้:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

ตัวอย่างนี้มีรายการสำหรับที่อยู่ลูปแบ็คของระบบและชื่อโฮสต์บรรทัดแรกคือเนื้อหาเริ่มต้นทั่วไปของไฟล์โฮสต์ บรรทัดที่สองมีชื่อเพิ่มเติม (อาจใช้ได้เฉพาะในระบบภายใน) หลายชื่อ ตัวอย่างแสดงให้เห็นว่าที่อยู่ IP อาจมีชื่อโฮสต์หลายชื่อ (localhost และ loopback) และชื่อโฮสต์อาจถูกแมปกับที่อยู่ IP ทั้ง IPv4 และ IPv6 ตามที่แสดงในบรรทัดแรกและบรรทัดที่สองตามลำดับ ชื่อหนึ่ง ( mycomputer.lan) อาจแก้ไขได้หลายที่อยู่ ( 192.168.0.8 10.0.0.27) อย่างไรก็ตามในกรณีนั้นสิ่งใดสิ่งหนึ่งที่ใช้ขึ้นอยู่กับเส้นทาง (และลำดับความสำคัญ) ที่กำหนดไว้สำหรับคอมพิวเตอร์

ระบบปฏิบัติการรุ่นเก่าบางระบบไม่มีวิธีรายงานรายการที่อยู่สำหรับชื่อที่ระบุ


5

การใช้ไฟล์ / etc / hosts เพื่อให้ชื่อที่มนุษย์สามารถอ่านได้กับระบบโลคัลภายในสภาพแวดล้อมเดสก์ทอปนั้นเหมาะสมอย่างสมบูรณ์ ไฟล์โฮสต์นั้นยอดเยี่ยมสำหรับใช้ในเครือข่ายในบ้านหรือแม้แต่ในสภาพแวดล้อมทางธุรกิจขนาดเล็ก นี่เป็นสาธารณะไม่ได้เหมือนที่อยู่อินเทอร์เน็ต - คุณต้องมี DNS หากเครือข่ายท้องถิ่นมีขนาดใหญ่พอหรือตัดในเครือข่ายย่อยที่แตกต่างกันหรือเหตุผลที่มีประโยชน์อื่น ๆ DNS จะเป็นที่ต้องการ

ไฟล์โฮสต์ในท้องถิ่น & DNS ได้รับการจัดการโดยมีลำดับความสำคัญต่างกันดังนั้นจึงไม่มีข้อขัดแย้งใด ๆ


4
ฉันไม่เห็นด้วยเกี่ยวกับความขัดแย้งฉันมีปัญหาที่ยากต่อการดีบักจำนวนมากเนื่องจากการจัดเตรียมโฮสต์โดยกลุ่ม/etc/hostsรายการซ้ายค้างที่ในอนาคตทำให้การดำเนินการโดยกลุ่ม B (กลุ่มของฉัน) ล้มเหลว และเราก็ลงเอยด้วยการตั้งค่าบางอย่างเพื่อฆ่าเชื้อเนื้อหาของ/etc/hosts
thrig

ความขัดแย้งภายในแฟ้มสามารถที่มีอยู่ออกไปแน่นอน แต่แล้วมันเป็นเจ้าของเครื่องความผิดของตัวเอง :)
Francois P

2
ฉันไม่เห็นด้วยที่ไม่เคยมีข้อขัดแย้งใด ๆ ฉันต้องแก้ไขข้อผิดพลาดที่แปลกมากเนื่องจากรายการโฮสต์ค้างซึ่งขัดแย้งกับการเปลี่ยนแปลง DNS
Rui F Ribeiro

@thrig: บางทีปัญหาคือกลุ่มของคุณใหญ่เกินไปที่จะใช้ / etc / hosts ได้อย่างมีประสิทธิภาพ ทำงานได้ดีอย่างสมบูรณ์สำหรับ 5 เครื่อง (ในขณะนี้) บนเครือข่ายในบ้านของฉัน
jamesqf

ระบบไม่คิดว่าจะมีข้อขัดแย้ง แต่ก็มีคำแนะนำที่ชัดเจนเกี่ยวกับลำดับความสำคัญของสิ่งต่าง ๆ : p
StarWeaver

3

ใน linux, กล้าฉันบอกว่าควรมีอย่างน้อย 127.0.0.1 localhostภายในไฟล์/etc/hosts เช่นเดียวกับที่อยู่ IPv6 ที่สอดคล้องกันสำหรับlocalhost localhost

มันเป็นเพียงการแก้ปัญหาชื่อโฮสต์ไปยังที่อยู่ IPv4 หรือ IPv6 ที่เป็นตัวเลข เมื่อคุณพยายามเชื่อมต่อกับ (a) unix.stackexchange.comบางแห่งในโลกที่อาจไม่ใกล้คุณหรือ (b) myotherpcบนเครือข่ายท้องถิ่นในบ้านของคุณเป็น/etc/hostsเซิร์ฟเวอร์ชื่อโดเมน (DNS) บางตัวหรือที่ กำลังทำการแก้ปัญหาโฮสต์ดังนั้นเมื่อคุณพิมพ์unix.stackexchage.comซึ่งในฐานะมนุษย์เป็นสิ่งที่คุณใส่ใจคุณไม่จำเป็นต้องจำ185.53.179.7สำหรับสิ่งที่คอมพิวเตอร์ต้องการรู้

ในฐานะที่ได้รับการชี้ให้เห็นในลินุกซ์มี/etc/nsswitchโดยทั่วไปว่าคำสั่งกำหนดความละเอียดชื่อโฮสต์ DNS หมายตรวจสอบครั้งแรกก่อนการตรวจสอบแล้ว NIS สุดท้ายตรวจสอบไฟล์/etc/hostsอย่างอื่นไม่พบโฮสต์

วิธีที่คุณจัดการการตรวจสอบคำสั่งซื้อและสิ่งที่ / ที่ไหน / ใครจัดการบริการ DNS หรือ NIS นั้นขึ้นอยู่กับคุณหรือคุณสามารถแทนที่ทุกอย่างได้ด้วยการแก้ไข/ etc / nsswitchเพื่อเช็คอินเท่านั้น/etc/hostsและไม่เคยตรวจสอบกับ DNS หรือ NIS หรือ ...

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

สำหรับ linux web ค้นหาประวัติและเหตุผลเบื้องหลัง localhostลินุกซ์สำหรับเว็บค้นหาประวัติและเหตุผลที่อยู่เบื้องหลังหลายสิ่งใน linux ใช้ชื่อ localhost ที่ได้รับการแก้ไขเป็น 127.0.0.1 และหากไม่เกิดขึ้นจะทำให้เกิดปัญหาและคำจำกัดความของ localhost นี้จะ / ควรเกิดขึ้นในไฟล์ระบบโลคัลเช่น / etc / hosts

/etc/hostsโดยปกติแล้วคำสั่งสุดท้ายและสิ่งสุดท้ายสำหรับระบบปฏิบัติการ linux จะถอยกลับเพื่อแก้ไขชื่อโฮสต์ ใน Windows XP และ 7 ไฟล์ที่เกี่ยวข้องคือC:\Windows\System32\drivers\etc\lmhosts ฉันไม่รู้เกี่ยวกับ windows 8 หรือ 10


การใช้งานทั่วไปของไฟล์โฮสต์โดยเฉพาะอย่างยิ่งใน Windows คือการเบี่ยงเบนความพยายามของโปรแกรมในการ 'โทรกลับบ้าน' ไปยังอุปกรณ์ที่มีค่าว่าง ห่างไกลจากฉันเพื่อแนะนำสิ่งนี้อาจเป็นการขัดขวางการตรวจสอบกฎหมาย
ลอเรนซ์เพน

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