DNS Propagation Check

เจอปัญหาว่าตอนเช็ค domain ที่ดูแล ว่าตอน client ไป resolve กับ DNS resolver เจ้าต่าง ๆ ได้ผลตอบกลับออกมาเป็น IP อะไรบ้าง เพื่อตรวจสอบว่าแต่ละ DNS resolver เข้าที่ CDN/Server ชุดไหน (ถ้ามีหลายเครื่อง) หรือตรวจสอบว่าเป็นข้อมูลล่าสุดแล้วหรือยัง

หากตรวจสอบแค่ 1-2 ISP หรือ Public DNS หลัก ๆ ก็ไม่ยาก แต่ถ้าเยอะ ๆ สัก 4-5 ตัวขึ้นไป ก็จะลำบากแล้ว ต้องมานั่ง dig ทีละ Nameserver ก็ยุ่งยากเสียเวลา หรือใช้ whatsmydns.net ก็มีไม่ครบสำหรับ ISP ในไทย

ก็เลยเขียน console app ง่าย ๆ เร็ว ๆ ไว้ใช้เอง (เขียนแบบลวกมาก แบบให้มันใช้ได้ก่อน)

แต่ก็เจอปัญหาอยู่บ้างว่ามี DNS resolver พวก ISP หลายที่เค้าไม่เปิด public ให้คนนอก ISP ใช้ ก็ลำบากนิดหน่อยแต่รวม ๆ ก็ทุ่นเวลาไปได้พอสมควรถ้าตรวจสอบกับ DNS resolver หลัก ๆ ได้ (ISP บางเจ้าข้อมูลอาจจะไม่อัพเดท เดี่ยวค่อยปรับรายการอีกที)

โปรแกรมชุดนี้พัฒนาด้วย C# บน .NET Core 3.1 ทำงานได้ทั้งบน Windows และ Linux ซึ่งตอนนี้บน GitHub ได้ build รองรับทั้ง 2 platform

สำหรับ binary ที่ได้จาก build ทดสอบบน Windows 10 (1909) และ Ubuntu 18.04 ซึ่งทำงานได้ตามวัตถุประสงค์

ตัว source code เปิด source อยู่ที่ GitHub นี้ DNS Propagation Check และ binary โหลดได้จากในส่วน Release ของ GitHub

DNSSEC และ DANE ช่วยป้องกันการโดน Pharming และป้องกันการออก Certficate ปลอมหรือซ้ำซ้อน

การทำ DNSSEC ช่วยป้องกันการโดน Pharming (หรือเรียก DNS spoofing หรือ DNS cache poisoning) เพราะเป็นการ signed ตัว DNS Server ที่ใช้งานคู่กับ domain name ที่จดกับผู้รับจด domain เวลาตรวจสอบคำตอบที่ Resolver จะเช็คว่ามาจาก Name server ตัวจริงหรือไม่ ช่วยให้การได้รับ IP ส่งให้ client มีความถูกต้องเสมอ (ทดสอบแบบง่ายๆ คือแก้ไขไฟล์ hosts บนเครื่องให้วิ่งไปอีกเครื่องหนึ่งที่มีข้อมูลเหมือนกันทุกประกาศ ทำตัวเหมือนโดน trojan มาเปลี่ยนบนเครื่องให้ไปเครื่องปลอมเพื่อหลอกเอาข้อมูล)

image 

image

image

image

 

สำหรับการทำ DANE ป้องกันการถูก fake certificate หรือเจอ Certification Authority ออกใบ certificate ซ้ำซ้อน เพราะเราจะเอา fingerprint ของ certificate ใส่ลงใน TLSA record บน DNS Server ทำให้ตอนตัว browser เรียกเว็บ จะมีการตรวจสอบว่า certificate ที่ได้มา มี fingerprint ตรงกับที่อยู่ใน TLSA record หรือไม่

image 

image

 

ซึ่งทั้งสองอย่างยังไม่ค่อยเจอเว็บทั่วไปทำสักเท่าไหร่ และ browser ทั้ง 3 อันดับแรก ถ้าไม่ลง plugins ก็ยังตรวจสอบไม่ได้ครับ แต่เชื่อว่าอีกสักพักคงทยอยค่อยๆ ปรับกันมาแล้ว และเว็บในไทยที่เท่าที่เจอยังไม่ค่อยมีใครทำขนาด Google, Facebook, Micorosft ยังไม่ทำเลย

การทำให้เว็บรองรับ DNSSEC และ DANE ช่วยเพิ่มระบบในการป้องกันการที่ผู้ใช้งานเข้าใช้บริการของเว็บต่างๆ ได้ปลอดภัยมากขึ้นจากการทำ Man-in-The-Middle attacks ได้

วิดีโออธิบายการทำงานของ DNSSEC และ DANE

Tutorial on DANE and DNSSEC

ตัวอย่างเว็บที่ implement DNSSEC หรือ DANE

อ้างอิง

ข้อควรทราบของ Virtual Public IP (VIP) บน Windows Azure Virtual Machines กับ DNS

บน Windows Azure ยังไม่มีบริการแบบเดียวกับ Amazon EC2 Elastic IP Addresses ซึ่งเป็นการเช่าชุดหรือเลข IP สำหรับใช้งานกับบริการประมวลผลต่างๆ โดยไม่มีการเปลี่ยนแปลงใดๆ หรือพูดง่ายๆ คือเป็นเจ้าของเพียงผู้เดียว และควบคุมการใช้งานได้ (ถ้าจ่ายเงินไปตลอด)

ซึ่งบน Windows Azure นั้น ตัว Virtual Machines จะใช้ได้แต่ Virtual Public IP (VIP) ซึ่งมีข้อควรจำ (หรือบางคนเรียกว่าข้อเสียก็ได้) ตรงที่จะเปลี่ยนแปลงทุกครั้งที่ Shutdown หรือลบ Virtual Machines แล้วสร้าง Virtual Machines จาก Image Data ชุดเดิม และเราควบคุม VIP ไม่ได้ เพราะฉะนั้น ใช้ A (address record) Type Record บน Zone file ใน DNS ไม่ได้เลย เพราะต้องกลับมาเปลี่ยนตลอดถ้า Virtual Machines ตัวนั้นพังและต้องสร้างใหม่ ทำให้กำหนดการใช้งานผ่าน VIP จะมีปัญหาตอนโยก development/staging machines ด้วย เพราะมันดิ้นไป-มา

แต่แน่นอนว่าคำแนะนำคือให้ใช้ CNAME (alias record) Type Record แทน เพื่อให้ CNAME จับคู่กับ DNS แทนจะทำงานได้ดีก็ตาม (ลบจุดด้อยได้) แต่ก็มีปัญหาต่อมาคือ CNAME มันกำหนด root domain name ไม่ได้ ต้องใช้ A Type Record แล้วกำหนด IP เท่านั้น ซึ่งต้องหาบริการหรือทำ domain forwarding กับตัว root domain name ร่วมด้วย ไม่งั้นทำงานจะมีปัญหาเวลาคนพิมพ์ domain name จาก root เข้าระบบเว็บที่ทำงานบน Windows Azure Virtual Machines ล้วนๆ ไม่ได้

แนะนำ zonomi บริการ DNS hosting ราคาไม่แพงแต่ประสิทธิภาพดี

แนะนำ DNS hosting เพราะจากที่ใช้มาต้องบอกว่า UI เรียบง่ายดี ถ้ารู้เรื่อง Domain Name System (DNS) zone file อยู่แล้วคงจะใช้งานไม่ยากมากนัก โดยรวมแล้วที่นี่ Update ตัว DNS รวดเร็วดี ใครอยากทดลองใช้ ก็มีแบบฟรีให้ โดยให้ 1 domain ใช้ได้ 10 records แต่ถ้ามากกว่านั้น ราคาต่อปีก็ไม่แพงจนเกินไป แต่ถ้าใช้ร่วมกับ google apps อาจไม่เพียงพอคงต้องจ่ายเพิ่มเป็นรายปี แต่ส่วนตัวใช้กับ domain อยู่ 17 ตัวก็เสียเดือนละ $2.55 แลกกับความง่ายและระบบ DNS แบบ Fully redundant, fault-tolerant, reliable name servers (ระหว่าง London, Dallas, New York และ Auckland) ทั้งหมด 4 ระบบ มีระบบ API สามารถเขียนระบบเชื่อมต่อทำ Dynamic DNS ได้ และ รองรับ pingability.com สำหรับทำ service monitor ต่างๆ ซึ่งถ้าใครต้องการใช้ DNS Server ที่เป็นระบบโดยไม่อยากทำเอง และแยกจาก Server บริการต่างหาก อย่างเช่น Web หรือ Mail ด้วย ส่วนตัวแล้วนั้น ดูจะถือว่าคุ้มค่ามากๆ

Zonomi – DNS hosting – Zonomi