ช่วงนี้ข่าวค่ายมือถือสีเขียว DNS Query หลุดกำลังอยู่ในกระแสเลย อาจจะไม่ใช่ข้อมูลระดับ Critical แต่ก็ทำให้เราได้เห็นถึงความสำคัญของ DNS over HTTPS กันมากขึ้น เพราะเราได้เห็นแล้วว่า ผู้ให้บริการเครือข่ายอินเทอร์เน็ต (ISP) ใช้ข้อมูล DNS ในการวิเคราะห์พฤติกรรมการใช้งานเว็บไซต์ และใช้ในการเป็นข้อมูลวิเคราะห์เชิง Marketing ได้ เรามาวิเคราะห์กันดูว่า ทำไม "DNS Over HTTPS (DoH) คือคำตอบ" ในการแก้ปัญหาเรื่อง DNS Query Log

ส่วนใครยังนึกไม่ออกว่า DNS Server หรือไอ DNS คืออะไร ลองกลับไปอ่าน Blog นี้ของผม ก่อนจะอ่านบรรทัดต่อไป เพื่อจะได้เข้าใจมากขึ้นนะครับ

มาทำ DNS-over-HTTPS (DoH) ให้เครื่องภายในบ้าน พร้อม Block โฆษณากวนใจด้วย Pi-hole กัน (Part 1 รู้จัก DNS Server)
Pi-hole 5.0 บน Orange Pi Oneด้วยความที่ใช้ Pi-hole 4 มาหลายเดือนละ อีกทั้งตอนนี้ Pi-hole 5 ออกมาเมื่อไม่กี่วันมานี้ เลยถือโอกาสอัพเกรดซะเลย ซึ่งมันมี Feature หลายอย่างที่ต้องการพอดี เลยถือโอกาสติดตั้ง DNS-over-HTTPS (DoH) ซะเลย เด่วมาเล่าให้ฟังกัน ว่าไอ DoH มันคืออะไร ทำทำไม ทำเพื่ออะไร? DNS คืออะไ…

เปลี่ยน DNS Server หนีไม่ได้เลยหรอ?

หลายคนคงจะสงสัยว่า เราก็แค่เปลี่ยนไม่ใช้ DNS Server ของผู้ให้บริการเครือข่ายของเรา แค่นี้ก็น่าจะพอป่ะ เปลี่ยนเป็น 8.8.8.8 เอง ง่ายจะตาย ไม่เห็นต้องไปใช้ DoH ให้ยุ่งยากเลย

คือชีวิตมันไม่ได้ง่ายขนาดนั้นครับ มาผมจะมาเล่าให้ฟัง ว่าทำไมมันถึงไม่ง่ายขนาดนั้น

อย่างที่ผมเขียนอธิบายเอาไว้ใน Blog ด้านบนว่าไอ DNS เนี่ย ตอนที่มันส่งข้อมูลไปถาม DNS Server ว่าเว็บๆนี้ IP อะไรเนี่ย "มันไม่เข้ารหัส" มันพร้อมจะโดนเปลี่ยนเส้นทาง (man-in-the-middle) ได้ทุกเมื่อ โดยที่คุณไม่รู้ตัวซะด้วยซ้ำ ว่าคุณกำลังโดนเปลี่ยนเส้นทาง

สมมติว่าผมใช้ Internet ในบ้านของผม บ้านของผมใช้ DNS Server ของตัวเอง แล้วมีมนุษย์คนนึงในบ้าน ไม่อยากใช้ DNS Server ที่ผมตั้งขึ้นมา เพื่อหนีไม่ให้ผมรู้ว่า เค้าคนนั้นเข้าเว็บไซต์อะไรไปบ้าง หรือผมอาจจะบล็อกเว็บไซต์ที่ไม่ได้ต้องให้คนในบ้านเข้ากันผ่าน DNS Server โดยมนุษย์คนนั้น ได้เปลี่ยน DNS Server ไปใช้ Google DNS (8.8.8.8, 8.8.4.4)  

รูปแสดงการเปลี่ยน DNS ไปใช้ Google DNS
ใช้คำสั่ง nslookup เพื่อสอบถาม DNS Server ว่าเว็บไซต์เว็บนี้ ใช้ IP อะไร ก็แสดงให้เห็นว่าถามไปที่ Server ของ Google DNS แล้ว สบายใจ~

มนุษย์คนนั้นเริ่มตายใจ และเข้าใจว่าในเครื่องของเค้า ได้ใช้ DNS Server ตัวอื่นแล้ว ปลอดภัยไร้กังวล อิอิ

Network Diagram แบบที่หลายๆบ้านใช้กัน

ปกติแล้ว เวลาเราจะใช้งาน Internet เราจะต้องออก Internet ผ่านอุปกรณ์ที่เรียกว่า "Router" อยู่แล้ว ซึ่งมันเป็นทางๆเดียว ที่อุปกรณ์ในบ้าน จะสามารถเชื่อมต่อ Internet ได้ แสดงว่าไอ Router เนี่ย มันเห็นทุกอย่างอยู่แหละ ว่าคนที่บ้านกำลังใช้ Internet ทำอะไรอยู่ ยิ่งพวก Router ที่เป็น Multifunction มันทำอะไรได้เยอะครับ เช่น Mikrotik เป็นต้น

RouterOS ของ Mikrotik ในหน้า Firewall แสดงสถานะการเชื่อมต่อต่างๆภายในบ้าน
แหนะๆ ใครกำลังใช้ Google DNS วิ่งไปถามชื่อเว็บน้าา

อย่างที่เราทราบกันครับ ว่า DNS ปกติธรรมดา มันไม่เข้ารหัส อะไรที่ส่งผ่านมัน สามารถมองเห็นและดักจับได้หมด ผมจะสาธิตการเปลี่ยนเส้นทาง DNS Server ถ้าคนในบ้านไปใช้ DNS ที่อื่น ให้วิ่งกลับมาที่ DNS ของผม เดี่ยวนี้! ตอนนี้! สร้าง Rule Firewall ขึ้นมาสิ รออะไร!

ตั้งค่าว่า ถ้า RouterOS เจอ Packet ขาออก UDP Port 53 ซึ่งเป็น Port ของ DNS ให้เข้ากฏข้อนี้
โดยกฏข้อนี้ จะทำการเปลี่ยนเส้นทาง จากต้นทางเป็น IP อะไรก็ตาม ให้วิ่งไปที่ IP 192.168.50.1 แทน พร้อมเขียน Log ให้ดูด้วย ว่าเข้ากฏข้อนี้

จะเห็นว่า RouterOS เห็นว่ามีการร้องขอการเชื่อมต่อไปที่ Google DNS ตามกฏที่ตั้งไว้ข้างต้น พร้อมเปลี่ยนเส้นทางกลับมาที่ DNS Server ที่ตั้งค่าไว้ ไม่ได้วิ่งไปที่ Google DNS! โดยที่ผู้ใช้ไม่รู้ตัว

ถ้าไม่เห็นภาพ ผมจะทำการเปลี่ยนที่อยู่ DNS ใหม่ โดยปลอมแปลง IP Address ของ Facebook ให้วิ่งมาที่ IP ที่ผมต้องการแทน แทนที่จะเป็น IP ของ Facebook จริง

ผมดำเนินการแก้ไขให้ DNS Server ตอบที่อยู่ปลอมของ Facebook มา แต่ที่เครื่องของเรายังแสดง IP 8.8.8.8 อยู่ ซึ่งตอนนี้มันไม่ใช่แล้ว!! (อันนี้ในทางปฏิบัติจริง ทำแบบนี้ได้ยากนะครับ เนื่องจากเว็บไซต์ของ Facebook นั้นใช้ https ซึ่งเข้ารหัสการเชื่อมต่อ และมี HSTS เพื่อบังคับให้เชื่อมต่อแบบเข้ารหัสที่ถูกต้องเท่านั้น)

จะเห็นว่า DNS Server ของเครื่องเรายังตั้งเป็น 8.8.8.8 อยู่ แต่ความจริงแล้ว มันโดนเปลี่ยนเส้นทาง (man-in-the-middle) ให้วิ่งไปที่อื่นแทน โดยที่เราไม่รู้ตัวเลย อิอิ

พูดต่อใน Scale ที่ใหญ่ขึ้น ในระดับผู้ให้บริการอินเทอร์เน็ต

ด้านบนผมพูดถึง Scale ระดับในบ้านนะครับ ซึ่งก็เห็นว่า แค่เครือข่ายภายในบ้าน เราก็สามารถเปลี่ยนเส้นทางของ DNS Server หรือบริการต่างๆได้ ผ่านอุปกรณ์เครือข่าย ซึ่งผู้ให้บริการ Internet ก็ใช้วิธีประมาณนี้อยู่เหมือนกัน ในการเปลี่ยนเส้นทาง DNS Server ที่คุณตั้งค่าไว้ ให้กลายเป็น DNS Server ของผู้ให้บริการเอง เพื่อใช้ในการเก็บข้อมูลเว็บไซต์ที่ลูกค้าใช้งาน เพื่อนำไปต่อยอดและวิเคราะห์ข้อมูลต่างๆ ก็เป็นเรื่องปกติแหละครับ ใช้บริการเค้า วิ่งผ่านเค้าออกไป ขอข้อมูลหน่อยยย จะเป็นไรไปละ :)

แก้ปัญหาด้วย DNS over HTTPS (DoH)

DNS over HTTPS เกิดมาแก้ปัญหาสิ่งนี้โดยเฉพาะเลยครับ เพราะเป็นการย้าย DNS Server จาก UDP Port 53 ที่ไม่เข้ารหัส มาเป็น TCP Port 443 มาตรฐานเดียวกับการเข้าเว็บไซต์แบบเข้ารหัสทั่วไปเลย ซึ่งข้อดีของมันก็คือ หากเทคโนโลยีการเข้ารหัสเว็บไซต์ออกเวอร์ชันใหม่ ตัว DNS over HTTPS ก็จะถูกอัพเกรดความปลอดภัยเบื้องต้นไปด้วย ไม่เจอปัญหาการเปลี่ยนเส้นทางแบบที่สาธิตให้ดูด้านบนแน่นอนครับ เพราะว่ามันวิ่งอยู่บน HTTPS ตัวผู้ให้บริการหรือ Router ที่บ้านเรา ไม่สามารถมองเห็นได้เลยครับ ว่าเรากำลังร้องขอเว็บอะไรอยู่ ซึ่งก็เป็นการยกระดับความปลอดภัยของ DNS ขึ้นมาเยอะเลยครับ แต่นั้นแหละครับ ยังคงต้องรอให้โปรแกรมและระบบปฏิบัติการรองรับอีกสักพัก

ที่จริงผมจะมีบทความทำให้เครื่องที่ไม่ Support ตัว DNS over HTTPS วิ่งผ่าน DNS over HTTPS ได้ผ่าน Tunnel บางอย่างของ Port 53 แล้วไปทะลุ Port 443 แต่ยังเขียนได้ Part เดียวอยู่เลย  5555555 ไว้ว่างๆจะมาเขียนต่อเนออ