ชื่อโฮสต์ - พวกเขาทั้งหมดเกี่ยวกับอะไร


54

ฉันเพิ่งถูก "บังคับ" ให้ทำงานดูแลระบบบางอย่างในขณะที่นี่ไม่ใช่สิ่งที่ฉันรักอย่างแน่นอนฉันได้อ่านทดลองและเรียนรู้อย่างมาก

มีแง่มุมหนึ่งพื้นฐานของการกำหนดค่าเซิร์ฟเวอร์ที่ฉันไม่ได้สามารถที่จะเข้าใจเป็น - ชื่อโฮสต์

เช่นในอูบุนตูเราควรตั้งชื่อโฮสต์แบบนี้ (อ้างอิงจากLinode Library ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

ไฟล์: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

ฉันคิดว่าplatoเป็นชื่อที่ไม่มีเหตุผลและนั่นplato.example.comคือ FQDN

ตอนนี้คำถามของฉันคือ:

  • จำเป็นหรือไม่
  • เพื่อวัตถุประสงค์อะไร
  • มันจำเป็น / ใช้ที่ไหน?
  • ทำไมฉันไม่สามารถกำหนด "localhost" เป็นชื่อโฮสต์สำหรับทุกเครื่องได้
  • ฉันต้องตั้งค่ารายการ DNS สำหรับplato.example.comFQDN หรือไม่
  • ควรplato.example.comใช้เป็นรายการ DNS ย้อนกลับสำหรับ IP ของฉัน

นอกจากนี้ยังมี "แนวปฏิบัติที่ดีที่สุด" สำหรับการเลือกชื่อโฮสต์หรือไม่ ฉันเคยเห็นผู้คนใช้ตัวอักษรกรีกชื่อดาวเคราะห์และแม้แต่บุคคลในตำนาน ... เกิดอะไรขึ้นเมื่อตัวอักษร / ดาวเคราะห์หมด?

ฉันขอโทษถ้านี่เป็นคำถามที่โง่ แต่ฉันไม่เคยกระตือรือร้นกับการกำหนดค่าเครือข่ายเกินไป


3
ฉันคิดว่า Chris S ไม่ได้อยู่ที่นี่ คำถาม - ชื่อโฮสต์ของระบบคืออะไรและเกี่ยวข้องกับ DNS อย่างไร - เป็นชื่อที่ถูกต้อง
ลาร์สก์

@ Chris S: ฉันเข้าใจแล้วเชื่อฉัน ฉันพยายามอ่านมันครั้งเดียว แต่สิ่งทั้งหมดทำให้ฉันสับสนอย่างมาก ฉันไม่ต้องการที่จะเป็น SA เพียงแค่พยายามทำความเข้าใจกับพื้นฐานที่ดีขึ้นเล็กน้อย
Alix Axel

สิ่งนี้ควรไปที่วิกิชุมชน
lynxman

1
@lynxman: ฉันไม่สนใจ แต่ทำไม?
Alix Axel

1
เพราะมันเป็นเรื่องที่น่าสนใจมาก :)
lynxman

คำตอบ:


28

วันนี้ระบบอาจมีหลายอินเตอร์เฟสแต่ละรายการมีหลายที่อยู่และแต่ละที่อยู่อาจมีรายการ DNS หลายรายการที่เกี่ยวข้อง ดังนั้น "ชื่อโฮสต์ระบบ" หมายความว่าอย่างไร

แอปพลิเคชันจำนวนมากจะใช้ชื่อโฮสต์ของระบบเป็นตัวระบุเริ่มต้นเมื่อสื่อสารที่อื่น ตัวอย่างเช่นหากคุณกำลังรวบรวมข้อความ syslog ที่เซิร์ฟเวอร์กลางข้อความทั้งหมดจะถูกแท็กด้วยชื่อโฮสต์ของระบบต้นทาง ในโลกอุดมคติคุณอาจเพิกเฉยต่อสิ่งนี้ (เพราะคุณไม่ต้องการเชื่อใจลูกค้า) แต่พฤติกรรมเริ่มต้น - ถ้าคุณตั้งชื่อระบบทั้งหมด "localhost" - จะส่งผลให้มีข้อความบันทึกมากมายที่คุณ จะไม่สามารถเชื่อมโยงกับระบบใดระบบหนึ่งได้

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

ในหลอดเลือดดำที่คล้ายกันเราพยายามทำให้ชื่อโฮสต์ของระบบตรงกับชื่อโฮสต์ที่เราใช้สำหรับการเข้าถึงระดับผู้ดูแลระบบ สิ่งนี้จะช่วยหลีกเลี่ยงความสับสนเมื่ออ้างถึงระบบ (ในอีเมลการสนทนาเอกสารประกอบ ฯลฯ )

เกี่ยวกับ DNS:

คุณต้องการให้มีการส่งต่อ DNS และย้อนกลับรายการที่เหมาะสมสำหรับแอปพลิเคชันของคุณเพื่อหลีกเลี่ยงความสับสน คุณต้องมีรายการส่งต่อ (ชื่อ -> ที่อยู่ ip) เพื่อให้ผู้คนสามารถเข้าถึงใบสมัครของคุณได้อย่างสะดวก การมีรายการย้อนกลับตรงกันนั้นมีประโยชน์สำหรับหลายสาเหตุ - ตัวอย่างเช่นช่วยให้คุณระบุแอปพลิเคชันได้อย่างถูกต้องหากคุณพบที่อยู่ IP ที่สอดคล้องกันในบันทึก

โปรดทราบว่าที่นี่ฉันกำลังพูดถึง "แอปพลิเคชัน" และไม่ใช่ "ระบบ" เพราะ - โดยเฉพาะกับเว็บเซิร์ฟเวอร์ - เป็นเรื่องธรรมดาที่จะมีที่อยู่ IP หลายระบบในระบบที่เชื่อมโยงกับชื่อโฮสต์และบริการที่แตกต่างกัน

การพยายามรักษาชื่อการจับคู่กับ ip ใน/etc/hostsไฟล์ของคุณอย่างรวดเร็วกลายเป็นเรื่องยากในขณะที่คุณจัดการระบบจำนวนมากขึ้น เป็นเรื่องง่ายมากที่ไฟล์โฮสต์ในเครื่องจะไม่ซิงค์กับ DNS ซึ่งอาจนำไปสู่ความสับสนและในบางกรณีการทำงานผิดพลาด (เนื่องจากมีบางสิ่งพยายามผูกกับที่อยู่ IP ที่ไม่มีอยู่ในระบบอีกต่อไป)


ขอบคุณสำหรับการตอบกลับของคุณฉันยังคงสับสนถ้าฉันควร (หรือจำเป็น) ดูแลรักษาไฟล์ / etc / hosts แทนที่จะพึ่งรายการ DNS
Alix Axel

8
โดยทั่วไปฉันไม่สนใจ/etc/hostsDNS สิ่งนี้จะลดจำนวนตำแหน่งที่ฉันต้องดูแลข้อมูลเกี่ยวกับการแมปชื่อ -> ที่อยู่ บนระบบจำนวนมากที่ฉันดูแล/etc/hostsมีเพียงรายการเดียวlocalhostเท่านั้น
ลาร์สก์

เมื่อคุณจัดการกับคลัสเตอร์ - เช่น ganeti หรือคลัสเตอร์ Linux-HA / Corosync - / etc / hosts จะใช้เพื่อพูดคุยกับสมาชิกของคลัสเตอร์ เป็นการดีที่จะพึ่งพา DNS เพียงอย่างเดียวเนื่องจากบริการ DNS ของคุณอาจอยู่ในกลุ่มเหล่านั้นและถูกย้ายข้อมูลหรือออฟไลน์ในระหว่างการเปลี่ยนโหนดดังนั้น / etc / hosts และชื่อโฮสต์ที่ถูกต้องจะช่วยคุณได้มาก
coredump

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

10

คุณสามารถตั้งค่าชื่อโฮสต์ทุกชื่อเป็น "localhost" แต่มันมีประโยชน์มากที่จะมีalix@plato ~ $ใน command prompt ของคุณเมื่อคุณจัดการเครื่องผ่าน ssh การจัดการเซิร์ฟเวอร์จากระยะไกลอาจทำให้สับสนมากหากคุณไม่ทำเช่นนั้น

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

สำหรับการเลือกรูปแบบการตั้งชื่อที่ดีฉันแนะนำคุณถึงคำถามยอดนิยมนี้

FQDN จะมีประโยชน์เฉพาะเมื่อมีความหมายกับคอมพิวเตอร์เครื่องอื่นเท่านั้น มีสามระดับนี้:

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

เมื่อส่งอีเมลหรือให้บริการหน้าเว็บสู่โลกภายนอกอันที่สามคืออันที่คุณต้องการ สำหรับกรณีอื่น ๆ ส่วนใหญ่คุณสามารถทำได้ด้วย DNS ท้องถิ่นหรือแม้กระทั่งการแก้ไขไฟล์โฮสต์

ในกรณีนี้คุณสามารถสร้างชื่อโดเมนได้ (plato.alixnetwork อาจใช้งานได้เหมือน FQDN) สำหรับใช้ในเครือข่ายท้องถิ่นของคุณ มูลค่าเพิ่มเพียงอย่างเดียวของการมีส่วน "alixnetwork" (ชื่อโดเมน) คือความสะดวกสบายเมื่อคุณมีเครือข่ายท้องถิ่นอื่นที่คุณต้องการแยกแยะ


ขอบคุณเคนนี่ฉันคิดว่าข้อสงสัยหลักของฉันคือทำไมมันสำคัญสำหรับเว็บ / เซิร์ฟเวอร์อีเมลที่จะมี FQDN ที่เหมาะสม นอกจากนี้สิ่งที่ถือเป็น "เหมาะสม" FQDN? ฉันควรเพิ่มชื่อโฮสต์ให้โดเมนและชี้ไปที่ที่อยู่ IP สาธารณะหรือไม่ ฉันอยู่ภายใต้ความประทับใจที่ฉันจะสร้างรายการ A / AAAA DNS ด้วยชื่อโฮสต์ใช่ไหม
Alix Axel

ขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ หากคุณไม่ส่งอีเมลหรือให้บริการเว็บเพจไปยังโลกด้วยเพลโตคุณไม่จำเป็นต้องสร้างระเบียน DNS ส่วนกลางสำหรับเครื่องนั้น
Kenny Rasschaert

"คุณลงทะเบียนชื่อโดเมนและตอนนี้คนทั้งโลกรู้ว่าชื่อ plato.alixaxel.com ชี้ไปที่เครื่องใด" - ฉันไม่เข้าใจสิ่งนี้ โลกทั้งโลกไม่รู้ว่าชื่อ plato.alixaxel.com ชี้ไปที่เครื่องใดโดยการตรวจสอบการแก้ไข DNS ของ "alixaxel.com" การตั้งค่า FQDN ในเครื่องสุ่มต้องทำอย่างไร
shenkwen

8

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

นานมาแล้วชื่อเหล่านี้ทั้งหมด (อีกครั้งซึ่งเป็นเพียงตัวชี้ไปยังที่อยู่ IP) hostsได้รับการเฝ้าติดตามในไฟล์ที่เรียกว่า เมื่อระบบเติบโตขึ้นพวกเขาไม่สามารถทำให้ไฟล์ตรงกันในคอมพิวเตอร์ที่เกี่ยวข้องทั้งหมดที่เข้าร่วมในเครือข่ายเชื่อมต่อต่างๆ ดังนั้นระบบ DNS จึงถูกประดิษฐ์ขึ้น เมื่อคุณทำการค้นหาชื่อมันยังคงตรวจสอบไฟล์โฮสต์ก่อนจากนั้นจึงทำการระบบ DNS Windows อาจตรวจสอบระบบอื่นเช่น WINS หรือ NetBIOS

เมื่อคุณใส่รายการในhostsไฟล์คุณจะไม่ได้กำหนดให้กับคอมพิวเตอร์ การกำหนดชื่อโฮสต์ให้เป็นชื่อที่ใช้โดยคอมพิวเตอร์นั้นทำในไฟล์กำหนดค่า (ในระบบ * nix) และ System Properties ในระบบ Windows (ระบบ Windows ยังสามารถมีคำต่อท้ายเฉพาะ NIC)

รายการในhostsไฟล์เช่นระบบ DNS เป็นเพียงการจับคู่จากชื่อโฮสต์ไปยังที่อยู่ IP ในการใช้ชื่อโฮสต์ 'localhost' (ไม่มีอะไรพิเศษเกี่ยวกับชื่อโฮสต์มันเป็นชื่อโฮสต์เหมือนส่วนที่เหลือทั้งหมด) จะต้องแมปเข้ากับอินเทอร์เฟซวนรอบ เพื่อให้แน่ใจว่าใช้งานได้คอมพิวเตอร์ทุกเครื่องจะมีการแมปเริ่มต้นนี้ในhostsไฟล์ แต่อาจลบได้หากคุณไม่ต้องการใช้ชื่อโฮสต์นั้น

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

มีการใช้ทั้งhostsDNS และอื่น ๆ อีกมากมายแต่ฉันสงสัยว่าคุณมีคำถามมากกว่าคำตอบถ้าคุณอ่านทั้งหมดนี้


4
+1 สำหรับการสละเวลาเขียนคำตอบที่ดีแม้ว่าคุณจะรู้สึกหงุดหงิดกับคำถาม
Kenny Rasschaert

คำอธิบายที่ยอดเยี่ยม! หากความเข้าใจของฉันถูกต้องการวาง FQDN ไว้ใน/etc/hostsนั้นไม่จำเป็นการมีชื่อโฮสต์ในรายการ DNS จะได้ผลลัพธ์เหมือนกันใช่ไหม
Alix Axel

2
@Alix ถูกต้องหากรายการนั้นอยู่ใน DNS (และ DNS ทำงานอย่างถูกต้อง) การมีรายการดังกล่าวในhostsไฟล์จะซ้ำซ้อน นอกจากนี้รายการในhostsไฟล์จะแทนที่ DNS (มีประโยชน์สำหรับการทดสอบบางครั้งน่ารำคาญเมื่อคุณลืมมัน) โปรดทราบว่าทั้งหมดนี้เกี่ยวข้องกับระเบียน A และ AAAA มีประเภทอื่น ๆ สำหรับชื่อโฮสต์ แต่ฉันทิ้งไว้เพื่อความชัดเจน
Chris S

ขอบคุณคริสนี่ทำให้ทุกอย่างชัดเจนขึ้น
Alix Axel

5

โฮสต์ที่เคยควรได้รับชื่อที่มีความหมาย ชื่อโฮสต์สามารถเซิร์ฟเวอร์ได้หลายวัตถุประสงค์:

1- ช่วยให้คุณรับรู้ถึงสิ่งที่คุณกำลังทำงานอยู่

2- การใช้ชื่อที่กำหนดค่าใน/etc/hostsและ / หรือระเบียน DNS นั้นง่ายกว่าการจดจำที่อยู่ IP จำนวนมาก

3- Localhost เป็นชื่อที่สงวนไว้เพื่ออ้างถึงเครื่องปัจจุบัน (ที่อยู่ 127.0.0.1)

4- ระเบียน DNS มีประโยชน์ในการทำให้เซิร์ฟเวอร์ของคุณเข้าถึงได้แบบสาธารณะ

การเลือกชื่อที่เหมาะสมสำหรับแต่ละเซิร์ฟเวอร์ช่วยคุณได้มากในการบริหารของคุณ นอกจากนี้ยังช่วยให้ลูกค้าเข้าถึงเซิร์ฟเวอร์ของคุณ


2

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


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

1
@shenkwen - หากคุณมีเซิร์ฟเวอร์เพียงเครื่องเดียวคุณสามารถตั้งชื่อได้ตามที่ใจต้องการและแน่นอนว่ามันจะไม่สำคัญ ทันทีที่จำนวนเซิร์ฟเวอร์มากกว่า 1 คุณมีปัญหาใหม่ในการจัดการและการตั้งชื่อที่เหมาะสมเป็นเครื่องมือสำคัญ
mfinni

1

ข้อสงวนสิทธิ์: คำถามหลักเกี่ยวกับระบบ Linux ดังนั้นคุณสามารถเพิกเฉยต่อคำตอบนี้ได้หากคุณไม่สนใจปัญหาของ Windows

อย่างไรก็ตามในระบบ Windows นอกเหนือจากจุดทั้งหมดที่กล่าวถึงในคำตอบอื่น ๆ แล้วชื่อโฮสต์นั้นถูกใช้งานจริงโดยระบบปฏิบัติการของตัวเองเพื่อจุดประสงค์ในการเชื่อมต่อและเครือข่าย โดยเฉพาะ:

  • แต่ละระบบไม่ว่าจะเป็นสมาชิกโดเมนหรือไม่ก็ตามจะต้องมีชื่อที่ไม่ซ้ำกันในเครือข่ายเดียวกัน (เช่นในเครือข่ายย่อย IP เดียวกัน) มิฉะนั้นความขัดแย้งในการตั้งชื่อจะเกิดขึ้นและบริการเครือข่ายต่างๆ งาน.
  • ระบบทั้งหมดที่เป็นสมาชิกของโดเมน Active Directory เดียวกันนั้นจำเป็นต้องมีชื่อที่ไม่ซ้ำกันโดยไม่คำนึงถึงขอบเขตของเครือข่าย
  • ในสภาพแวดล้อมโดเมนชื่อโฮสต์ของระบบทำหน้าที่เป็นหลักการรักษาความปลอดภัยและสามารถใช้สำหรับการรับรองความถูกต้องระยะไกล (เพียงคิดว่ามันเป็นบัญชีผู้ใช้สำหรับเครื่อง); สามารถกำหนดสิทธิ์และสิทธิ์การเข้าถึงและสามารถวางในกลุ่มเพื่อความปลอดภัย สิ่งนี้ส่งผลกระทบต่อกระบวนการทั้งหมดที่ทำงานบนระบบโดยใช้บัญชีในตัวLocalSystemและNetworkServiceบัญชีผู้ใช้ซึ่งสามารถรับรองความถูกต้องกับระบบอื่น ๆ โดยใช้ข้อมูลประจำตัวของระบบที่พวกเขากำลังทำงานอยู่ สิ่งนี้อนุญาตให้ fe กระบวนการที่ทำงานเหมือนNetworkServiceใน SystemA เข้าถึงโฟลเดอร์ที่ใช้ร่วมกันใน SystemB โดยให้สิทธิ์ในโฟลเดอร์ไปยังบัญชีผู้ใช้ของ SystemA

-1

เว็บไซต์หลายแห่งและ / หรือควรจะเป็น 'ผู้ดูแลระบบ' ระบุว่าตอนนี้แอตทริบิวต์ 'ชื่อโฮสต์' มี FQDN ของอินสแตนซ์ของระบบปฏิบัติการซึ่ง 'แบ่ง' การแก้ปัญหาใด ๆ ที่ผนวก 'ชื่อโดเมน' ไว้:

ชื่อโฮสต์
system1.domain1.org

ping hostname
- ไม่สามารถแก้ไข system1.domain1.org.domain1.org


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