DNS, สัญลักษณ์แทนระเบียนมีความสำคัญมากกว่า CNAME เฉพาะหรือไม่


18

เรามีการตั้งค่าไวด์การ์ดเพื่อจัดการโดเมนย่อยทั้งหมดสำหรับ "example.com"

A RECORD: * .example.com ชี้ไปที่ 10.10.10.10

เรามีระเบียน A ที่เฉพาะเจาะจงมากขึ้นเพื่อจัดการโดเมนย่อยพิเศษ (ใช้งานได้ดี):

บันทึก: staging.example.com คะแนน 10.10.10.9

ปัญหาที่เรามีคือเรากำลังย้ายการจัดเตรียมไปยังสภาพแวดล้อมการโฮสต์ใหม่และเราได้รับคำแนะนำให้ใช้ CNAME:

CNAME: new-staging.example.com ชี้ไปที่ proxy.heroku.com

เราคิดว่าสิ่งนี้จะได้ผล อย่างไรก็ตาม new-staging.example.com จะเปลี่ยนเป็น wildcard ระดับบนสุด 10.10.10.10 และไม่ได้ชี้ไปที่ proxy.heroku.com

ฉันกำลังคิดถึงอะไร มันเป็นไปไม่ได้เหรอ? หรือนี่คือการปฏิบัติที่ไม่ดี? ขอบคุณ


1
คุณกำลังตั้งค่าการถ่ายทอดสดผ่านเว็บอินเตอร์เฟสของ ISP หรือคุณกำลังใช้ BIND หรือ djbdns หรือไม่?
Jonathan Ross

เมื่อคุณพูดว่า "แก้ไขสัญลักษณ์แทนระดับสูงสุด" คุณจะแก้ไขปัญหานี้ได้อย่างไร dig -t ANY new-staging.example.com?
nickgrim

@ Jonathan เราใช้ Slicehost เพื่อจัดการ DNS ดังนั้นมันจึงผ่านเว็บอินเตอร์เฟส
zdennis

@nickgrim เมื่อเรียกใช้ dig -t ใด ๆ new-staging.example.com เราได้รับ: new-staging.example.com 82880 IN CNAME proxy.heroku.com.example.com proxy.heroku.com.example.com 86400 IN A 10.10.10.10
zdennis

คำตอบ:


15

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

การทดสอบอย่างรวดเร็วด้วย BIND 9.6.2-P2 / FreeBSD 8.1:
โซนที่มีบันทึก:

example.net.                IN      A      127.0.0.2
*.test.example.net.         IN      A      127.0.0.1
specific.test.example.net.  IN      CNAME  example.net.

แก้ไขดังต่อไปนี้:

% dig specific.test.example.net

; <<>> DiG 9.6.2-P2 <<>> specific.test.example.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17222
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;specific.test.example.net. IN  A

;; ANSWER SECTION:
specific.test.example.net. 3600 IN  CNAME   example.net.
example.net.               3600 IN  A   127.0.0.2

;; AUTHORITY SECTION:
example.net.        3600    IN  NS  ns1.example.net.

;; ADDITIONAL SECTION:
ns1.example.net.    3600    IN  A   127.0.0.1

(ส่งคืน CNAME)
และ

% dig nonspecific.test.example.net

; <<>> DiG 9.6.2-P2 <<>> nonspecific.test.example.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26980
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;nonspecific.test.example.net.  IN  A

;; ANSWER SECTION:
nonspecific.test.example.net. 3600 IN   A   127.0.0.1

;; AUTHORITY SECTION:
example.net.        3600    IN  NS  ns1.example.net.


;; ADDITIONAL SECTION:
ns1.example.net.    3600    IN  A   127.0.0.1

(ส่งคืนเร็กคอร์ด wildcard A)


นี่เป็นมาตรฐาน DNS หรือเฉพาะการใช้งานนี้หรือไม่
Bigbio2002

@ Bigbio2002 ฉันเชื่อว่ามันเป็นส่วนหนึ่งของมาตรฐาน - RFC 4592เป็นสถานที่ที่เกี่ยวข้องกับการมอง - สมองของฉันค่อนข้างล้นเกินจากการเขียนเอกสารตลอดทั้งวันจนถึงการอ่าน RFC แม้ว่าฉันผิดโปรดตบฉันด้วยส่วนที่เกี่ยวข้อง :-)
voretaq7

7

ตามความคิดเห็นของคุณเกี่ยวกับคำถาม:

เมื่อเรียกใช้ dig -t ใด ๆ new-staging.example.com เราจะได้รับ: new-staging.example.com 82880 IN CNAME proxy.heroku.com.example.com proxy.heroku.com.example.com 86400 ใน 10.10.10.10

... คุณกำหนดค่า DNS ผิดพลาด คุณต้องตั้งเป้าหมายของ CNAME เป็นproxy.heroku.com.- ช่วงเวลาสุดท้ายเป็นสิ่งสำคัญ! ถ้าไม่มีเซิร์ฟเวอร์ DNS ของคุณจะถือว่าคุณอ้างถึงโฮสต์ภายในexample.comโซนของคุณproxy.heroku.com.example.com- และนั่นคือการจับโดยสัญลักษณ์ตัวแทน


เราได้ตั้งค่าระเบียน CNAME เป็น "proxy.heroku.com" เมื่อเราขุดเซิร์ฟเวอร์ชื่อ slicehost โดยตรง (dig @ ns1.slicehost.com) คำตอบเดียวที่ให้คะแนนไปยัง CNAME สำหรับ proxy.heroku.com เมื่อเราขุดโดยไม่ระบุจะให้คำตอบสองคำ (คำที่ฉันโพสต์ไว้ด้านบนนั้นคำตอบของคุณที่นี่จะสะท้อนให้เห็น) นี่ทำให้ฉันคิดว่าบางที @ voretaq7 อาจคิดถูกว่ามีปัญหาแคช? นั่นสอดคล้องกับสิ่งที่ฉันเห็นเมื่อขุดหรือไม่?
zdennis

ใช่ดูเหมือนว่าจะบอกว่า DNS-cache upstream ของคุณแคชรุ่นไม่ถูกต้อง (ไม่ใช่ระยะเวลา) คุณจะต้องรอให้ TTL หมดอายุและ / หรือตั้งค่าชื่ออื่นในระหว่างนี้ ( new-new-staging?)
nickgrim

จุดที่หายไปคือสิ่งที่ทำให้ฉันสะดุดเช่นกัน
loevborg

0

ฉันเจอโพสต์นี้เพื่อค้นหาว่ามันทำงานอย่างไรกับเซิร์ฟเวอร์ Plesk Linux ที่ใช้ร่วมกัน ในตัวอย่างพวกเขาอ้างถึงการรวม DNS / vhost.conf โซลูชันที่คุณต้องเพิ่ม vhost.conf และปรับปรุง DNS

อ้างอิง: "ต้องเป็นรายการสุดท้ายในรายการโดเมนย่อยซึ่งจะเรียงลำดับตัวอักษรดังนั้นเริ่มต้นชื่อด้วย" zz " http://kb.parallels.com/2239

ฉันเดาว่านี่เป็นสิ่งที่แตกต่างจากทฤษฎี DNS 'ปกติ' ซึ่งจะส่งคืนระเบียนที่เฉพาะเจาะจงมากขึ้น

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