Score:-1

nsupdate ไม่อัปเดตบันทึก Apex

ธง tr

nsupdate ใช้งานได้กับ cnames เท่านั้น ดูเหมือนว่าเอเพ็กซ์ (ระเบียนสำหรับโดเมนรูท) จะไม่ได้อัปเดต ฉันสามารถเพิ่มไปยังไฟล์โซนได้โดยใช้ "update add .604800 A 1.1.1.1" แต่มันวางไว้ใน "$ORIGIN" ของไฟล์โซนและฉันไม่สามารถลบและอัปเดตได้ ฉันได้ลอง "อัปเดตเพิ่ม .604800 A 2.2.2.2" แล้ว แต่ไม่มีการอัปเดตเกิดขึ้น ฉันยังลอง "อัปเดตเพิ่ม example.com. 604800 A 2.2.2.2" ฉันได้วางบันทึกตัวยึดใน "$ORIGIN " และ "$ORIGIN example.com" ส่วนของไฟล์โซนคิดว่าจำเป็นต้องค้นหาเพื่ออัปเดต ฉันได้ลองลบและอัปเดตแล้วด้วย... ดูเหมือนจะไม่มีอะไรทำงาน ฉันอ่านที่ไหนสักแห่งที่ผูกไม่สามารถเขียนไปยัง /etc/bind/zones ดังนั้นฉันจึงใส่ไฟล์โซนใน /var/lib/bindผูกได้เขียนไปยังไฟล์ แต่เพียงครั้งเดียวที่จะใส่ในบันทึกใน "$ORIGIN" ส่วน. คำแนะนำใด ๆ?

ไฟล์โซนของฉัน:

$ORIGIN .
$TTL 604800 ; 1 สัปดาห์
ตัวอย่าง.คอม. ใน SOA ns1.example.com admin.ns1.example.com. (
                24 ; อนุกรม
                604800 ; รีเฟรช (1 สัปดาห์)
                86400 ; ลองใหม่ (1 วัน)
                2419200 ; หมดอายุ (4 สัปดาห์)
                604800 ; ขั้นต่ำ (1 สัปดาห์)
                )
            NS ns1.example.com.
            NS ns2.example.com.
$ORIGIN example.com
@อ5.5.5.5
ds1512 10.0.0.13
ds1817 10.0.0.14
หน้าแรก CNAME ds1817
ns1 ก 10.0.0.6
ns2 10.0.0.3
โรม CNAME ds1817
www ตัวอย่าง CNAME.com

คำสั่งของฉันพร้อมเอาต์พุตการดีบัก:

brent@dnsdhcpserver:/var/lib/bind$ sudo nsupdate -d
> เซิร์ฟเวอร์ 10.0.0.6
> โซน example.com
> ปรับปรุง ลบ @ A
> อัพเดท เพิ่ม @ 604800 A 2.2.2.2
> ส่ง
กำลังส่งอัปเดตเป็น 10.0.0.6#53
แบบสอบถามการอัปเดตขาออก:
;; ->>ส่วนหัว<<- opcode: UPDATE, สถานะ: NOERROR, id: 25996
;; ธง:; โซน: 1, PREREQ: 0, UPDATE: 2, เพิ่มเติม: 0
;; ส่วนโซน:
;example.com ใน SOA

;; อัปเดตส่วน:
. 0 ใด ๆ
. 604800 ใน 172.16.1.10


ตอบกลับจากคำถามอัปเดต:
;; ->>ส่วนหัว<<- opcode: UPDATE, สถานะ: NOTZONE, id: 25996
;; ธง: qr; โซน: 1, PREREQ: 0, UPDATE: 0, เพิ่มเติม: 0
;; ส่วนโซน:
;example.com ใน SOA

ไม่ได้ผลดังนั้นฉันจึงลอง:

> เซิร์ฟเวอร์ 10.0.0.6
> prereq nxdomain example.com
> อัปเดต เพิ่ม example.com 604800ก2.2.2.2
> ส่ง
ตอบกลับจากแบบสอบถาม SOA:
;; ->>HEADER<<- opcode: QUERY, สถานะ: NOERROR, id: 47462
;; ธง: qr aa ra; คำถาม: 1, คำตอบ: 1, ผู้มีอำนาจ: 2, เพิ่มเติม: 2
;; ส่วนคำถาม:
;example.com ใน SOA

;; ส่วนคำตอบ:
ตัวอย่าง.คอม. 604800 ใน SOA ns1.example.com admin.ns1.example.com. 24 604800 86400 2419200 604800

;; ส่วนอำนาจหน้าที่:
ตัวอย่าง.คอม.   604800 ใน NS ns2.example.com
ตัวอย่าง.คอม. 604800 ใน NS ns1.example.com

;; ส่วนเพิ่มเติม:
ns1.example.com. 604800 ใน 10.0.0.6
ns2.example.com. 604800 ใน 10.0.0.3

พบชื่อโซน: example.com
ต้นแบบคือ: ns1.example.com
กำลังส่งอัปเดตเป็น 10.0.0.6#53
แบบสอบถามการอัปเดตขาออก:
;; ->>ส่วนหัว<<- opcode: UPDATE, สถานะ: NOERROR, id: 8484
;; ธง:; โซน: 1, ความต้องการล่วงหน้า: 1, อัปเดต: 1, เพิ่มเติม: 0
;; ส่วนที่จำเป็นต้องมี:
ตัวอย่าง.คอม. 0 ไม่มีเลย

;; อัปเดตส่วน:
ตัวอย่าง.คอม. 604800 ใน 172.16.1.11


ตอบกลับจากคำถามอัปเดต:
;; ->>HEADER<<- opcode: UPDATE, สถานะ: YXDOMAIN, id: 8484
;; ธง: qr; โซน: 1, PREREQ: 0, UPDATE: 0, เพิ่มเติม: 0
;; ส่วนโซน:
;example.com ใน SOA

ใครสามารถเห็นสิ่งที่ฉันขาดหายไป?

Patrick Mevzek avatar
cn flag
"คำแนะนำใด ๆ?" ไฟล์บันทึกของคุณพูดว่าอย่างไร ในกรณีแรก คุณมี "NOTZONE" ในเอาต์พุต แสดงว่าชื่อที่คุณใช้ไม่ถูกต้อง กรณีที่สอง คุณพูดว่า "prereq nxdomain example.com" ซึ่งเห็นได้ชัดว่าไม่มีทางเป็นจริง เพราะหากไม่มี `example.com` หมายความว่าโซนนั้นไม่มีอยู่ ดังนั้นคุณจึงไม่สามารถเพิ่มระเบียนใดๆ ในนั้นได้
tr flag
โซนนี้มีอยู่เนื่องจากเซิร์ฟเวอร์ DNS กำลังแก้ไขโดเมนเป็น IP ส่วนตัวที่ถูกต้อง แต่การได้รับ NOTZONE เห็นได้ชัดว่ามีปัญหา ฉันไม่รู้ว่าอะไร ฉันยินดีที่จะค้นหาไฟล์บันทึกสำหรับ nsupdate ไฟล์บันทึกนั้นจะอยู่ที่ใด
Patrick Mevzek avatar
cn flag
ผูกไฟล์บันทึกไม่ใช่ไฟล์ 'nupdate' ไฟล์บันทึกได้รับการตั้งค่าในการกำหนดค่าการเชื่อมโยงของคุณ
Nikita Kipriyanov avatar
za flag
"โซนนี้มีอยู่เนื่องจากเซิร์ฟเวอร์ DNS กำลังแก้ไขโดเมนเป็น IP ส่วนตัวที่ถูกต้อง" â ไม่ นี่ไม่เป็นความจริงทั้งหมด โซน "example.com" อาจมีระเบียนเช่น "a.b.example.com" ซึ่งในกรณีนี้จะแก้ไขระเบียนดังกล่าวได้สำเร็จแม้ว่าจะไม่มีโซน "b.example.com" ก็ตาม อีกอย่าง คุณช่วยแสดงการกำหนดค่าเซิร์ฟเวอร์ DNS ให้เราดูหน่อยได้ไหม อย่างน้อยก็ส่วนที่ตั้งค่าโซนนี้ มันอัพเดทบันทึกอื่นด้วยวิธีนี้หรือไม่? นอกจากนี้ คุณใช้ DNS แยก (มุมมอง) หรือไม่
Score:0
ธง za

อย่าเพิ่มจุดต่อท้ายชื่อ RR ใช้สิ่งนี้:

เซิร์ฟเวอร์ my.dns.server
โซนexample.com
คีย์ example.com บางคีย์ข้อมูล
อัปเดต ลบ example.com 604800 A
อัปเดต เพิ่ม example.com 604800 A 192.0.2.1
ส่ง

ฉันเพิ่งทดสอบด้วยระเบียน A และ MX; มันใช้งานได้สำหรับฉัน, เซิร์ฟเวอร์คือ PowerDNS, ไคลเอ็นต์คือ ISC nsupdate จาก bind-tools, การตรวจสอบสิทธิ์ผ่าน TSIG, ชื่อคีย์เท่ากับชื่อโซนเพื่อความเรียบง่าย


ฉันมีความประทับใจที่คุณไม่เข้าใจอย่างถ่องแท้ $ORIGIN และ @ ทำงาน ดังนั้นนี่คือคำอธิบายเล็กน้อย สำหรับคำอธิบายที่สมบูรณ์โปรดดู RFC1035.

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

$ORIGIN example.com
@ 604800 ใน SOA ns1 ....
  604800 ใน NS ns1
ns1 3600 ใน 192.0.2.1
@ 3600 ใน 192.0.2.5 
$ORIGIN .
example.com 604800 ใน SOA ns1.example.com ....
$ORIGIN ดอทคอม
ตัวอย่าง 604800 ใน NS ns1.example
$ORIGIN ns1.example.com.
@ 3600 ใน 192.0.2.1
ตัวอย่าง.คอม. 3600 ใน 192.0.2.5 
ตัวอย่าง.คอม. 604800 ใน SOA ns1.example.com ....
ตัวอย่าง.คอม. 604800 ใน NS ns1.example.com
ns1.example.com. 3600 ใน 192.0.2.1
ตัวอย่าง.คอม. 3600 ใน 192.0.2.5 

ในตัวอย่างแรก ฉันไม่ได้ระบุชื่อ RR ในบรรทัดที่สาม (สวพ.FM91 ร.ร.หลัง สพธอ RR) ดังนั้น parser จะนำมาจากบรรทัดก่อนหน้า พฤติกรรมนี้เป็นเหตุผลที่ชัดเจนสำหรับ @ การมีอยู่ของไวยากรณ์: คุณไม่สามารถปล่อยให้ฟิลด์ชื่อ RR ว่างได้ เนื่องจากจะใช้ชื่อเรกคอร์ดก่อนหน้า ถ้าฉันข้าม @ ในบันทึกที่แล้ว ฉันจะกำหนดวินาที บันทึกสำหรับ ns1. ดังนั้นในการกำหนดเรคคอร์ดด้วยชื่อเท่ากับต้นกำเนิดที่ตั้งไว้ในปัจจุบัน (จะเป็น "เอเพ็กซ์" หากต้นกำเนิดตั้งเป็นชื่อโซน) คุณไม่สามารถใช้ "ชื่อว่าง" ได้ เพราะจะเป็นการเรียกใช้พฤติกรรม "ใช้เวลาก่อนหน้า" นี้คุณต้องสะกดชื่อเต็มของเรคคอร์ดอย่างชัดเจนโดยมีจุดต่อท้าย เพื่อไม่ให้ชื่อเรคคอร์ดต่อท้าย (เหมือนที่เขียนไว้ในตัวอย่างอื่นๆ) เปลี่ยนต้นทาง หรือใช้สัญลักษณ์พิเศษ @ ซึ่งบอกโปรแกรมแยกวิเคราะห์: "อย่าทำซ้ำชื่อก่อนหน้า ต้นกำเนิดมาเปล่า" ดังนั้นบรรทัดสุดท้ายในตัวอย่างแรกจึงกำหนด ตัวอย่าง.คอม..

ตัวอย่างที่สองเป็นเพียงการสาธิตวิธีการ $ORIGIN และ @ ทำงานด้วยกัน.

ตัวอย่างที่สามไม่ใช้น้ำตาล นี่เป็นข้อมูลสัมบูรณ์จริงที่โซนมีอยู่ในแต่ละตัวอย่างทั้งสามนี้


ดังนั้นบันทึกของคุณอาจแสดงในไฟล์โซนเป็น ตัวอย่าง.คอม หลังจาก $ORIGIN ., หรือ ตัวอย่าง.คอม. ที่ไหนก็ได้หรือ @ หลังจาก $ORIGIN example.com, หรือแม้กระทั่ง ตัวอย่าง หลังจาก $ORIGIN ดอทคอมมันไม่สำคัญ กรณีเหล่านี้เท่าเทียมกันหมด คุณอาจคาดหวังที่จะเห็นรูปแบบ "@" แต่ BIND อาจตัดสินใจสะกดเป็นรูปแบบใดรูปแบบหนึ่ง ดังนั้นโปรดเตรียมพร้อมที่จะจดจำสิ่งเหล่านี้ทั้งหมด และคุณไม่สามารถบังคับให้ใช้รุ่นใดรุ่นหนึ่งได้ ขออภัย

ข้อแม้อีกประการหนึ่งคือคุณสามารถอ่านไฟล์โซนหลังจากอัปเดตโดยไม่ต้องหยุดการทำงานก่อน สังเกตไฟล์ "jnl" ถัดจากไฟล์โซน เป็นวารสารที่เก็บข้อมูลที่อัปเดตของคุณเป็นครั้งแรก ก็ต่อเมื่อคุณทำ rndc ตรึง example.com ข้อมูลจะถูกเขียนลงในไฟล์โซน (แต่โซนนั้นจะถูกล็อกสำหรับการอัปเดต หากต้องการปลดล็อก คุณต้องทำ ละลาย การดำเนินการหรือโหลดเซิร์ฟเวอร์ใหม่) วิธีที่ถูกต้องในการตรวจสอบว่าโซนได้รับการอัปเดตหรือไม่คือทำแบบสอบถาม DNS จริงด้วย ขุด หรือ เจ้าภาพ หรือ nslookupแล้วแต่คุณชอบ:

โฮสต์ -v example.com
Patrick Mevzek avatar
cn flag
นี่คือการสะกดในเอกสารประกอบ โดยมีตัวอย่างดังนี้ `update add newhost.example.com 86400 A 172.16.1.1` อย่างไรก็ตาม ขึ้นอยู่กับว่าคุณเคยใช้ 'โซน' ปรากมามาก่อนหรือไม่
Nikita Kipriyanov avatar
za flag
ใช่ ฉันมี zone pragma มาก่อน และฉันมีรหัส TSIG (ฉันสะท้อนให้เห็นในคำตอบ เพิ่มสคริปต์ `nupdate` ที่สมบูรณ์ของฉันซึ่งใช้งานได้) หมายเหตุ: ไม่มีจุดต่อท้าย *no* ในชื่อ RR ในตัวอย่างของคุณ ตรงตามที่ฉันแนะนำ ผมว่าจุดนี้เป็นต้นตอของปัญหาของอปพร.
tr flag
นี่คือ DNS ในเครื่อง ซึ่งเป็น IP เดียวที่อัปเดตเซิร์ฟเวอร์ DNS เอง ฉันไม่รู้ว่าคีย์ TSIG คืออะไร แต่ฉันคิดว่ามีไว้สำหรับรับรองความถูกต้อง ฉันไม่ได้ใช้มันในทางใดทางหนึ่ง ฉันถอดจุดออกและยังไม่ได้รับการอัปเดต: เซิฟเวอร์ 10.0.0.6 โซนexample.com อัปเดต ลบ example.com 604800 A อัปเดต เพิ่ม example.com 604800 A 192.0.2.1 ส่ง ฉันได้รับเพื่อลบบันทึก "@ A 5.5.5.5" ใน $ORIGIN example.com และแทรกบันทึกใหม่ใน "$ORIGIN " ของไฟล์โซน. แต่จะไม่ลบบันทึกใหม่หรือจะไม่อัปเดต
tr flag
การดำเนินการนี้จะไม่อัปเดตเรกคอร์ด ไม่ว่าจะเป็นการส่งทีละรายการหรือทั้งหมดในคราวเดียว: เซิฟเวอร์ 10.0.0.6 โซนexample.com อัปเดต เพิ่ม example.com 604800 A 192.0.2.3 อัปเดต เพิ่ม example.com 604800ก192.0.2.3 อัปเดตเพิ่ม @ 604800 A 192.0.2.3 ปรับปรุง เพิ่ม. 604800ก192.0.2.3 ส่ง เพื่อให้ชัดเจน บันทึกอยู่ใน "$ORIGIN " ส่วนของไฟล์โซนเป็น " A 5.5.5.5" ไม่มีสัญลักษณ์ @ หรือจุดทางด้านซ้ายของเรกคอร์ด จะชอบความคิดอื่น ๆ ในสิ่งที่จะลอง
Nikita Kipriyanov avatar
za flag
ห้ามใช้สัญลักษณ์ "@" ใน `nsupdate` ไม่ได้ตั้งใจให้ใช้ภายในแบบสอบถาม DNS การใช้งานที่กำหนดไว้เพียงอย่างเดียวคือตัวยึดตำแหน่งที่สะดวกในไฟล์โซน BIND เพื่อไม่ให้กำหนด $ORIGIN ซ้ำไปมา https://datatracker.ietf.org/doc/html/rfc1035#section-5.1 คุณสามารถกำหนดโซนได้อย่างสมบูรณ์โดยไม่ต้องใช้โซนนี้ เช่นเดียวกับที่คุณกำหนดระเบียน SOA นอกจากนี้ โปรดทราบ เรกคอร์ด "เอเพ็กซ์" ที่มีชื่อตรงกับชื่อโซนเป็นเพียงเรกคอร์ดธรรมดาในโซน ไม่มีอะไรพิเศษที่นี่ ยกเว้นความบังเอิญนี้ (ฉันมีความประทับใจอย่างมากที่คุณไม่เข้าใจอย่างถ่องแท้ว่า @ คืออะไร)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา