มาทำ 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-over-HTTPS (หลังจากนี้จะพิมพ์เป็น DoH แล้วนะ จะได้เขียนสั้นๆ) เราต้องไปรู้จักไอสิ่งที่เรียกว่า DNS ก่อน ว่าไอ DNS มันคืออะไร มีผลอะไรในการใช้งานอินเทอร์เน็ตในชีวิตประจำวันของเราบ้าง

คงต้องเท้าความกลับไปเมื่อ 20 กว่าปีที่แล้ว สมัยที่อินเทอร์เน็ตยังไม่ได้รับความนิยมมาก และยังใช้ในวงจำกัด การที่เครื่องคอมพิวเตอร์จะคุยกันผ่านอินเทอร์เน็ตได้นั้น จะต้องอาศัยการอ้างอิงด้วยเบอร์ที่อยู่อินเทอร์เน็ต หรือเรียกง่ายๆว่า IP (Internet Protocal) Address อารมณ์เหมือนเราจะโทรหาเพื่อนหรือห้างร้านต่างๆนั้นแหละ เราก็ต้องจำเบอร์เพื่อนหรือห้างร้านที่เราจะติดต่อให้ได้ ซึ่งสมัยนั้นน่าจะเป็น Internet Protocal เวอร์ชัน 4 มั้ง (IPv4) ซึ่งไอ IPv4 เนี่ย มันคือเลขฐานสอง จำนวน 32 บิท เลขจะประมาณ 192.168.1.1 ประมาณนี้

ซึ่งตอนแรกมันก็ไม่มีปัญหาหรอก ถ้าใช้กันไม่มาก ไปๆมาๆไออินเทอร์เน็ตเนี่ย ดันได้รับความนิยมมากขึ้น คนใช้เยอะขึ้น ที่นี้การจะให้มาจำเลขอะไรก็ไม่รู้ เยอะๆ ไม่มีความหมาย มันก็ดูแปลกๆ จำยากเป็นบ้าเลย (อารมณ์เหมือนจำเบอร์โทรหลายๆคนแหละ ใครมันจะไปจำได้ เยอะแยะไปหมด) มันเลยมีคนบอกว่า เฮ้ย งั้นเราก็ทำให้มันเรียกเป็นชื่อง่ายๆดิ แล้วค่อยแปลงมันกลับมาเป็นเลขที่อยู่อินเทอร์เน็ต แล้วตั้งหน่วยงานมากำกับดูแลชื่อซะเลย ซึ่งเราเรียกไอสิ่งนี้ว่า "Domain Name System (DNS)" ผ่านมาแล้วกว่า 20 ปีจนมาถึงปัจจุบัน เราก็ยังใช้เทคโนโลยีนี้อยู่นะครับ :)

DNS มันทำงานอย่างไร

อย่างที่เล่าให้ฟังตอนแรกครับ การที่เราใช้อินเทอร์เน็ตผ่านอุปกรณ์ต่างๆ มันติดต่อกันด้วยสิ่งที่เรียกว่า IP Address ไม่ได้ติดต่อกันด้วยชื่ออย่างที่เราเห็นใน Browser นะครับ การที่เราจะเข้าเว็บไซต์ซักเว็บนึง เช่น www.facebook.com ตัว Browser ก็จะไปถามสิ่งที่เรียกว่า DNS Server โดย DNS Server เนี่ย จะทำหน้าที่เป็น "สมุดโทรศัพท์ หรือสมุดหน้าเหลือง" คอยแปลงชื่อเว็บไซต์ที่เราอยากเข้า ให้กลายเป็น IP Address หลังจากที่เราได้ IP Address แล้ว Browser ก็สามารถติดต่อกับเครื่อง Server ของเว็บที่ให้บริการได้ครับ

https://devopedia.org/domain-name-system
เมื่อเราเข้า Facebook.com สิ่งที่ DNS Server ตอบเรามาว่า ที่อยู่ของ Facebook.com เนี่ย คือ 157.240.218.35 นะจ๊ะ

แล้วทำไมต้อง DoH (DNS-over-HTTPS)

อย่างที่พูดไปตอนต้นครับ เทคโนโลยี DNS เกิดขึ้นมากว่า 20 ปีแล้วครับ ซึ่งตอนที่คิดค้นขึ้นมา ก็ไม่ได้นึกว่าระบบอินเทอร์เน็ตมันจะ Scale ใหญ่ขนาดนี้ แล้วก็ไม่ได้คิดถึงเรื่องของ Privacy เยอะนักในตอนนั้น

ด้วยปัญหาที่ว่าของไอ Protocal DNS เนี่ย เวลามันส่งข้อมูลไปถามว่าชื่อเว็บที่เราอยากเข้าใช้งานเนี่ย มัน IP Address อะไร "มันไม่ได้เข้ารหัส!" อย่างที่รู้กันว่า อินเทอร์เน็ตเนี่ย มันทำงานแบบ Distributed System เวลาเราจะเข้าเว็บไซต์อะไรซักอย่าง เครื่องคอมพิวเตอร์หรืออุปกรณ์ที่ต่ออินเทอร์เน็ตของเรา ไม่ได้เชื่อมต่อกับเว็บไซต์นั้นโดยตรง มันจำเป็นต้องผ่านผู้ให้บริการหลายต่อมาก กว่าจะไปถึงปลายทาง ซึ่งผู้ให้บริการก็จะเห็นว่า "คุณเข้าเว็บไซต์อะไรบ้าง เวลาไหน ช่วงไหน" ก็ไม่ต้องแปลกใจครับ ถ้าคุณจะเห็นโฆษณาที่ตรงใจคุณเวลาที่ผู้ให้บริการอินเทอร์เน็ตส่งมาให้คุณ

จะเห็นว่า ผู้ให้บริการสามารถเห็นได้ว่า คุณเข้าเว็บไซต์อะไร เวลาเท่าไหร่ ผมดักข้อมูลด้วย Pi-hole

เมื่อไม่กี่ปีที่ผ่านมา ก็มีหน่วยงานนึงในโลกอินเทอร์เน็ต ยกมือขึ้นมาบอกว่า "เห้ย ไอ DNS ที่เราใช้อยู่เนี่ย มันไม่เข้ารหัสนะ ผู้ให้บริการนี่เห็นหมดเลยว่าเข้าเว็บอะไร เราควรจะเข้ารหัสไอ DNS ได้แล้วนะ" เลยเกิดสิ่งที่เรียกว่า DNS-over-HTTPS (DoH) ขึ้นมา

ตอนนี้มีโปรแแกรมที่เริ่ม Support ตัว DoH แล้ว เช่น Google Chrome, Firefox หรือตัว Windows 10 เองก็เริ่ม Support แล้ว แต่ยังอยู่ในช่วงทดสอบและไม่เต็มรูปแบบ แล้วเราจะทำยังไงให้เครื่องหรือโปรแกรมที่ไม่ Support ตัว DoH  สามารถใช้งานได้เสมือน Support หล่ะ? เด่ว Part 2 เราจะติดตั้งและตั้งค่า Pi-hole ให้เครื่องที่ไม่ Support DoH ใช้งานได้กันครับ :)