ฉันสามารถใช้ CNAME กับที่อยู่ IP ได้หรือไม่ ทำไมถ้าทำงาน (บางครั้ง)


13

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

ตอนนี้เมื่อฉันตรวจสอบจากที่บ้านฉันมีข้อผิดพลาดดังต่อไปนี้:

beast:~ viroos$ host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)

ฉัน 100% มันเคยทำงานที่สำนักงานของฉัน (ปัจจุบันดูเหมือนว่าจะไม่ได้ แต่ฉันกำลังตรวจสอบบนเครื่องที่แตกต่างกัน) ดังนั้นฉันจะไม่ 100% ถ้าใช้งานได้เนื่องจากมีการตั้งค่าเครือข่ายพิเศษหรือเพราะฉันทดสอบหลังจากเพิ่ม DNS แล้ว

ฉันรู้ว่าเรื่องนี้ฟังดูบ้าบอ / เหลือเชื่อ แต่มีคนช่วยฉันแก้ปริศนานี้ได้

// edit: ฉันกำลังเพิ่มเอาท์พุท dig

; <<>> DiG 9.6-ESV-R4-P3 <<>> somesubdomain.somedomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60224
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;somesubdomain.somedomain.com.      IN  A

;; ANSWER SECTION:
somesubdomain.somedomain.com.   67  IN  CNAME   xxx.xxx.xxx.xx1.

;; AUTHORITY SECTION:
.           1800    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2012040901 1800 900 604800 86400

;; Query time: 72 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 10 00:11:01 2012
;; MSG SIZE  rcvd: 136

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

เพื่อความแม่นยำมันทำงานบนสองเครื่องทั้งสองเป็น OSX มันไม่ทำงานบนเครื่อง Ubuntu เนื่องจากมันทำงานกับเครื่องสองเครื่องฉันจึงเพิกเฉยปัญหา "อูบุนตู" (นั่นเป็นข้อผิดพลาด) เนื่องจากฉันเชื่อว่ามันเป็นปัญหาการเผยแพร่ dns หรือแคช DNS ฉันตรวจสอบการตั้งค่า DNS ของลูกค้าแต่ละรายเท่านั้นและมันเหมือนกัน (สิ่งนี้ทำให้เกิดความไม่แน่นอนเกี่ยวกับทฤษฎีการเผยแพร่ DNS) หนึ่งในเครื่องเหล่านั้นคือ MacBook ของฉันและฉันกำลังใช้งานจากที่บ้านและเว็บไซต์ที่ฉันติดตั้งทำงานได้ไม่ถูกต้องอีกต่อไป: "ไม่พบเซิร์ฟเวอร์ที่ somesubdomain.somedomain.com เพราะ DNS การค้นหาล้มเหลว "
Maciek Sawicki

สิ่งที่ส่งกลับเมื่อคุณสอบถามสำหรับชื่อโดยใช้dig?
Shane Madden

ฉันเพิ่มเอาท์พุทขุดคำถาม
Maciek Sawicki

ฉันสงสัยอย่างยิ่งว่าคอมพิวเตอร์ OSX ใช้สิ่งอื่นที่ไม่ใช่ DNS เพื่อทำการค้นหาเช่น mDNS (ซึ่งไม่ใช่สิ่งเดียวกันเลย)
Chris S

คำตอบ:


16

ข้อมูลในCNAMEบันทึกจะต้องชื่อ DNS อื่น - CNAMEที่จุดรวมของ

ดังที่กล่าวไว้ใน RFC 1034 ข้อมูลใน a CNAMEควรจะเป็น:

            CNAME           a domain name.

ในขณะที่หากคุณต้องการชี้ไปที่ที่อยู่ IP ตั๋วของคุณคือ:

            A               For the IN class, a 32 bit IP address

CNAMEได้รับการออกแบบและติดตั้งเพื่อใช้เป็นชื่อแทน DNS มันไม่มีความคิดในการมีที่อยู่ IP ในเขตข้อมูลนั้น ดังนั้นจึงถูกตีความว่าเป็นนามแฝงของชื่อ DNS อื่นตามที่ออกแบบไว้ หลังจากทั้งหมดที่อยู่ IP เหมาะกับไวยากรณ์ของชื่อ DNS

ตัวอย่างเช่นสมมติว่าข้อมูล DNS ของคุณคือ:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

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

มันพยายามที่จะสอบถามบันทึกสำหรับชื่อโฮสต์ภายในโดเมน192 0.2.1ไม่มีแคชใด ๆ สำหรับชื่อนั้นดังนั้นจึงถามเซิร์ฟเวอร์รูท พวกเขาทำหน้าที่ร้องขอสำหรับ TLDs ชอบ.comและแต่คำขอนี้เป็นขอ.net .1พวกเขาตอบกลับโดยทันทีว่าไม่มีเช่นนั้นและนั่นคือสิ่งที่ผู้กู้กลับส่งให้คุณ

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


ดังนั้นใช่แล้วการใส่ที่อยู่ IP ในCNAMEบันทึกนั้นไม่ถูกต้องและฉันสงสัยว่าระบบที่ทำงานนั้นทำงานได้อย่างถูกต้องผ่านกลไกอื่น ๆ เช่นไฟล์โฮสต์หรือการจำแนกชื่อท้องถิ่น - ตรวจสอบพฤติกรรมการจำแนกชื่อของพวกเขา


2

cname เป็นชื่อมาตรฐานซึ่งเป็นเพียงนามแฝงของชื่ออื่นซึ่งโดยปกติแล้วจะเป็นระเบียน A หรือชื่ออื่นถ้าคุณตั้งค่า cname ให้ชี้ไปที่ IP แสดงว่าเป็นเพียงนามแฝงของ IP นั้น ฉันไม่คิดว่าเซิร์ฟเวอร์ DNS ของคุณตรวจสอบว่าเป้าหมายนั้นถูกต้องหรือไม่เพราะ RFC มาตรฐานไม่ได้พูดจริง ๆ ว่ารูปแบบข้อมูล / การตรวจสอบความถูกต้องสำหรับเป้าหมายของ cname คืออะไร นี่ไม่ใช่การใช้งานปกติ แต่ถ้ามันใช้งานได้สำหรับคุณแสดงว่ามันใช้งานได้ ความจริงที่ว่าบางครั้งมันไม่ทำงานก็น่าจะเพียงพอสำหรับคุณที่จะใช้สิ่งที่มันถูกใช้ตามอัตภาพฉันคิดว่า


0

คุณสามารถมี:

example IN CNAME 1.2.3.4.

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


1
ในขณะที่ข้อมูลที่ถูกต้องสำหรับ CNAME, ผมค่อนข้างแน่ใจว่าจะไม่ก่อให้เกิดการค้นหาเพิ่มเติม .. ยกเว้นกับเซิร์ฟเวอร์รากสำหรับ TLD ที่ไม่มีอยู่จริงชื่อ4?
Shane Madden

การค้นหาเพิ่มเติมจะดำเนินการกับhost -aแบบสอบถามใด ๆ (เช่น)
adamo

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