ทำความเข้าใจกับชื่อโฮสต์และ / etc / hosts


13

ใน / etc / mynameชื่อโฮสต์ที่ฉันมี

ใน / etc / hosts ฉันมี:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

ฉันมีความเข้าใจที่คลุมเครือว่าชื่อโฮสต์คืออะไรและใช้ทำอะไร

คำถามที่แม่นยำยิ่งขึ้นเหล่านี้สามารถช่วยให้ฉันเข้าใจได้ดีขึ้น:

  1. ชื่อโฮสต์ของฉันในตัวอย่างด้านบนคืออะไร? mynameหรืออย่างอื่น? ถ้าฉันมีแทนmyname.domain.comใน/etc/hostnameสิ่งที่จะเป็นชื่อโฮสต์จริงของฉันแล้ว?

  2. ในตัวอย่างคำสั่งhostnameผลตอบแทนmynameในขณะที่คำสั่งผลตอบแทนhostname -f localhost.localdomainฉันจำได้ว่า/etc/hostsเป็นเพียงการจับคู่ระหว่างชื่อและที่อยู่ IP ดูเหมือนว่าจะให้บริการฟังก์ชั่นอื่นที่นี่ fqdn คืออะไรและใช้ทำอะไร มันดึงมาได้อย่างไร? ทำไมถึงเป็นเช่นนั้นlocalhost.localdomain?

  3. ถ้าฉันมีแทนmyname.domain.comใน/etc/hostname, จะกลับมาhostname -f myname.domain.comทำไม?

  4. ทำไม fqdn ถึงไม่ลงท้ายด้วยจุดในไฟล์เหล่านี้

  5. มีhostname -dและdnsmydomainเทียบเท่า?

  6. ฉันสามารถใช้ชื่อโฮสต์ ( myname) ในบริบทใดและฉันต้องใช้ fqdn ( localhost.localdomain) ของฉันเมื่อใด

คำตอบ:


9
  1. /etc/hostnameมีชื่อของเครื่องรู้จักกับแอปพลิเคชันที่เรียกใช้ในเครื่อง /etc/hostsและชื่อที่เชื่อมโยง DNS กับที่อยู่ IP mynameอาจถูกแมปกับที่อยู่ IP ใดก็ได้ที่เครื่องสามารถเข้าถึงตัวเอง127.0.0.1ได้
  2. ไม่ได้/etc/hostsแต่ทำหน้าที่การทำงานอีกด้วย/bin/hostname-f
  3. เพราะ/etc/hostsสามารถเอาชนะสามัญสำนึกได้ แก้ไขด้วยความระมัดระวังและไม่ทิ้งขยะไว้หลังจากแพทช์และการทดสอบชั่วคราว
  4. ยอมรับทั้งสไตล์ (⋯ .TLD.และ⋯ .TLD ) อดีตนั้นไม่คลุมเครือในขณะที่ส่วนหลังเป็นที่แพร่หลาย
  5. ไม่รู้ว่าdnsmydomainเป็นอะไรแต่ไม่น่าเป็นไปได้ การค้นหาบางสิ่งใน/etc/hostsไม่ใช่เทคนิค "DNS"
  6. จดจำจุดที่ 1 ชื่อโฮสต์ - สำหรับแอปพลิเคชันที่เรียกใช้ในเครื่อง สำหรับโปรโตคอลเครือข่ายเฉพาะเช่น SMB (samba) FQDN (หากไม่ใช่ fakery หรือ placeholder like localhost.localdomain) - สำหรับการเข้าถึงเครื่องจากด้านนอก ต้องแก้ไข FQDN เมื่อมีการใช้งาน

1
จะเกิดอะไรขึ้นถ้า IP ของฉันเป็นแบบไดนามิก (DHCP) และการเปลี่ยนแปลงเป็นครั้งคราว ฉันควรใช้ที่mynameอยู่ใดใน / etc / hosts
user156516

3

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

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

สิ่งที่ฉันไม่เชื่อว่าถูกแตะลงในหน้า manname (ขึ้นอยู่กับการอ่าน man page ด้วยตัวเอง) คือเหตุผลที่รายการในไฟล์ไม่ได้จบด้วยจุด

การประชุมนั้นจะใช้เมื่อจัดการกับระเบียน DNS ชื่อโฮสต์และไฟล์โฮสต์ไม่ใช่เรคคอร์ด DNS หากคุณกำลังกำหนดค่ารายการเหล่านี้ในการผูกที่จะแก้ไขสำหรับการค้นหา DNS แล้วการใช้จุดสามารถเข้ามาเล่น (ตรวจสอบแหล่งข้อมูลที่ดีนี้: http://www.zytrax.com/books/dns/apa/dot.html )

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


ที่เกี่ยวข้องเกี่ยวกับจุดสุดท้ายใน/etc/hosts: serverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith

3

ในการตอบ

จะเกิดอะไรขึ้นถ้า IP ของฉันเป็นแบบไดนามิก (DHCP) และการเปลี่ยนแปลงเป็นครั้งคราว ฉันควรใช้ที่อยู่ใดเป็นชื่อใน / etc / hosts

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

ดังนั้นจึงมีมุมมอง 2 จุดที่ต้องพิจารณา - โฮสต์ 'myname' และทุกคน

สำหรับโฮสต์ 'myhost' ให้อ้างอิงโฮสต์ปัจจุบันโดยใช้ 'localhost' (ซึ่งกำหนดไว้ใน / etc / hosts เป็น 127.0.0.1) หรือเพิ่ม 'myname' ไปยังบรรทัด / etc / hosts ซึ่งกำหนด localhost ดังนั้น 'myname แผนที่ไปยังเสมอ localhost ชอบมาก

127.0.0.1 ชื่อโฮสต์ในเครื่อง

จากนั้นไม่สำคัญว่าจะได้รับที่อยู่ IP ใดจาก INTERFACE คุณจะมีที่อยู่ที่ใช้งานได้เสมอ (โบนัสเพิ่มเติมคือคุณไม่จำเป็นต้องใช้ฮาร์ดแวร์เพื่อพูดคุยจาก 'myname' ถึง 'myname')

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


2

/ etc / hostnameและ/ etc / hostsนั้นง่าย แต่ก็ไม่ง่ายเหมือนกัน ...

วิธีการตั้งค่า Debian /etc/hostnameและ/etc/hosts

1)แก้ไข/ etc / ชื่อโฮสต์

มี 2 ​​วิธีที่ถูกต้องในการตั้งค่านี้

ทั้งทำให้มัน:

  • machineคือชื่อคำง่ายๆสำหรับโปรเซสเซอร์นี้
    ตัวอย่างเช่น ' joe' อาจเป็นชื่อเครื่องที่คุณเลือกเอง
    หมายเหตุสิ่งนี้จะต้องมีนามแฝงใน / etc / hosts อธิบายเพิ่มเติมด้านล่าง

หรือ

  • machine.domain.netคือชื่อโดเมนที่ผ่านการรับรองโดยสมบูรณ์ (FQDN)
    ตัวอย่างเช่น ' joe.xyz.com'
    (นี่คือสมมติว่าคุณมีระเบียน DNS 'A' ที่โฮสต์จาก joe.xyz.com ไปยังที่อยู่ IP ของ joe ของคุณเช่นที่เครื่องของคุณชื่อ joe โดยปกติแล้วคุณจะตั้งค่าระเบียนนี้ในตำแหน่งที่คุณซื้อชื่อโดเมนของคุณ ครู่หนึ่ง.)

เมื่อตั้งค่า/ etc / hostnameแล้วขั้นตอนต่อไปคือการรับคำสั่งhostname --all-fqdnและdnsdomainnameทำงานอย่างถูกต้องตามลำดับดังต่อไปนี้:

2)แก้ไข/ etc / hosts

ในนั้นมีบรรทัดสำหรับFQDNของโฮสต์นี้เช่น 'machine.domain.net' นำหน้าด้วยที่อยู่ IP ของเครื่องนี้ (อาจมาจากเซิร์ฟเวอร์ที่อยู่ IP แบบไดนามิก) ดังนี้:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • ครั้งแรกที่ทราบว่ากรณีบนหรือล่างไม่ได้เรื่องที่นี่ เคล็ดลับ:การเปิดใช้ตัวพิมพ์ใหญ่บางตัวทำให้เราสามารถสังเกตได้ว่ามีสิ่งใดบ้างที่มาจากในขั้นตอนถัดไป ดังนั้นฉันจึงใช้อักษรตัวใหญ่ของJ oe

  • โปรดทราบว่าเพื่อให้ง่ายhostname (เช่น / etc / hostname = 'machine') เพื่อสร้าง FQDN อย่างถูกต้องต้องมีนามแฝงที่ชื่อว่า 'machine' ใน / etc / hosts นั่นเป็นเหตุผลที่นามแฝงโจอยู่ที่นั่น (BTW มันก็โอเคที่จะมีนามแฝงนั้นแม้ว่าคุณจะไม่ได้ใช้ก็ตาม) ไม่เช่นนั้นไม่จำเป็นต้องใช้นามแฝงหรือใช้

  • นอกจากนี้โปรดทราบว่า 'domain.net' จะต้องแก้ไขได้นั่นคือต้องมีระเบียน A อยู่ใน DNS นี่คือสิ่งที่เรียกว่า ' resolvable ' (เช่นโดยตัวแก้ไข DNS)

3) ตอนนี้ติดตั้งการตั้งค่าใหม่เหล่านี้จาก / etc / hostname และ / etc / hosts ลงในเคอร์เนลโดยเรียกใช้:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) ทดสอบชื่อโฮสต์

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

หรือ

$ hostname
joe.xyz.com

เคล็ดลับ:

  • โปรดสังเกตว่านี่ไม่ใช่สิ่งที่เป็น / etc / hostname ในปัจจุบันเช่นถ้าคุณแก้ไขอีกครั้งในขณะนี้ แต่แทนที่จะเป็นสิ่งที่เคยอ่านมาก่อนหน้านี้โดยสคริปต์ /etc/init.d/hostname.sh อาจเป็นผลมาจากการรีบูต

  • โปรดสังเกตด้วยว่า 'j' เป็นตัวพิมพ์เล็กดังนั้นสิ่งนี้จึงแนะนำว่ามาจาก / etc / hostname ไม่ใช่ / etc / hosts

5) ทดสอบ FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6) ทดสอบชื่อโดเมน DNS

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

ตอนนี้ควรทำให้การตั้งค่าเว็บและเซิร์ฟเวอร์อีเมลง่ายขึ้น

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