การติดตั้งและใช้งาน AdGuardHome ในการทำระบบ trackers blocking DNS server

Ake_.Net JPK
7 min readFeb 6, 2024

--

AdGuard Home เป็นโปรแกรมที่ใช้สำหรับการกรองและบล็อกเว็บไซต์ที่มีเนื้อหาที่ไม่พึงประสงค์ และป้องกันการเข้าถึงไซต์ที่อาจมีความเสี่ยงต่อความปลอดภัยของผู้ใช้ในระบบเครือข่ายที่เราใช้งานหรือที่เราดูแลอยู่ได้ ซึ่งสามารถจัดการได้สะดวกผ่านทาง Web Application Management นอกจากนี้ AdGuard Home ยังสามารถบล็อกการติดตาม (tracking) ที่ฝังมาในอุปกรณ์ Networks / IoTs ต่างๆได้ด้วย ขึ้นอยู่กับการคอนฟิกใช้งานได้ตามความต้องการ

AdGuard Home สามารถทำงานบนหลายแพลตฟอร์มเช่น Windows, macOS, Linux, และอุปกรณ์ Raspberry Pi. ซึ่งในบทความนี้ ผมจะมาแนะนำวิธีติดตั้ง AdGuard Home บนเครื่องเซิร์ฟเวอร์หรืออุปกรณ์ที่ทำหน้าที่เป็น Gateway ในเครือข่ายที่เราดูแล ซึ่งในบทความนี้คือระบบปฏิบัติการ Ubuntu Server เพื่อใช้สำหรับการกรองและการบล็อคเว็บไซต์สำหรับ Clients ที่เชื่อมต่อกับเครือข่ายของเรา โดย AdGuard Home นั้นจะทำหน้าที่เป็น DNS Server

ถ้าอยากรู้ว่า DNS Server คืออะไร อ่านเพิ่มเติมได้ในบทความของผมได้เลยครับ บทความนี้ครับ -> https://medium.com/@akenetjpk/ba095fb15c55 และถ้าอยากรู้ลึกๆว่า DNS Server เค้าทำกันอย่างไรก็อ่านในบทความนี้ได้เพิ่มเติมครับ -> https://medium.com/@akenetjpk/c2b9c17fa833

รูปแสดง ข้อมูลของโปรแกรม AdguardHome บน Docker Hub

DNS Server ยังมีบทบาทในการบล็อกโดเมนที่เป็นอันตรายหรือที่มีความเสี่ยงต่อความปลอดภัย และมีความสามารถในการแจกจ่ายหรือจัดเก็บข้อมูล DNS query logs สำหรับการตรวจสอบหรือการวิเคราะห์ได้ต่อไปครับ ซึ่งในบทความนี้ ก็คือจะใช้โปรแกรม AdGuardHome นั่นเองครับ

รูปแสดง ตัวอย่าง Web Management ของ Adguard Home

จากที่บอกไปในตอนต้นนั้น ผมจะแนะนำวิธีการติดตั้งโปรแกรม AdguardHome บน Ubuntu Server แต่จะไม่ติดตั้งลงโดยตรงครับ แต่จะติดตั้งในรูปแบบ Container ซึ่งรันอยู่บน Docker อีกที

รูปแสดง Block Diagram การทำงานของ Containers และ Virtual Machines (VM )cr. รูปจาก https://www.docker.com/resources/what-container/

ผมจะอธิบายให้มองภาพง่ายๆ เบื้องต้น ว่า Docker และ Container ว่าคืออะไร ให้มองรูป Block Diagram ด้านบนครับ การทำงานของ Docker จะคล้ายๆกับ Supervisor ที่ใช้สร้าง VM หรือ Virtual Machines ซึ่งคือเครื่องจำลองอีกทีเพื่อจะนำไปติดตั้งระบบปฏิบัติการบนเครื่องนั้นๆอีกที แต่ Docker นั้น จะมีระบบที่รันอยู่บนตัว Docker ซึ่งเรียกว่า Container ซึ่งเราสามารถนำโปรแกรมมารันบน Container นี้ได้เลย โดยไม่ต้อง ติดตั้งระบบปฏิบัติการซ้อนอีกชั้นเหมือนกับลักษณะของ VM ครับ

ซึ่งทำให้ผู้พัฒนาโปรแกรมต่างๆ นั้นได้พัฒนาออกมาในรูปแบบของ Container เพื่อนำไปรันบน Docker ได้เลย เช่นเดียวกันกับ AdguardHome ในบทความนี้ ก็เป็นโปรแกรมที่ผู้พัฒนาออกแบบมาเป็นรูปแบบของ Container โดยจะทำให้เรานำมาใช้รันบน Docker ได้เลย

แสดงให้เห็นว่า Docker ทำงานโดยแยกแอปพลิเคชันออกเป็น Container โดย Container แต่ละตัวจะบรรจุ Software และทุกสิ่งที่ Software ต้องการในการเรียกใช้งาน รวมทั้ง Library เครื่องมือ (Tools) สำหรับระบบ โค้ด ( Code ) และรันไทม์ ( Runtime ) สิ่งนี้ทำให้คอนเทนเนอร์ ( Container ) สามารถทำงานได้อย่างอิสระจากคอนเทนเนอร์อื่นๆ และสามารถย้ายจากสภาพแวดล้อมหนึ่ง ไปยังอีกสภาพแวดล้อมหนึ่งได้สะดวก

ดังนั้นในขั้นตอนต่อไป เราจะต้องมี Host Operation System ซึ่งในบทความนี้ผมจะใช้ Ubuntu Server จากนั้น ต้องทำการติดตั้ง Docker เพื่อรองรับการรันโปรแกรมในลักษณะ Container ต่อไป

ขั้นตอนการติดตั้ง Docker & Portainer ( Web management ในการจัดการ Containers ) บน Ubuntu Server

  1. ทำการเตรียมเครื่อง โดยติดตั้ง Ubuntu Server ดูวิธีการติดตั้งได้ในบทความนี้ของผมได้ครับ -> https://medium.com/@akenetjpk/02f41db83c34
รูปแสดง Network Diagram ตัวอย่างที่ใช้อธิบายอ้างอิงในบทความ

2. ทำการ Login เข้าใช้งานเครื่อง Ubuntu Server Linux ตามรูปใน Network Diagram ในทีนี้เราได้ตั้งค่า IP ให้กับ Ubuntu Server ตามต้องการได้เลย เพื่อให้ใช้งาน Internet ได้ หรือ ให้เป็น Network/Subnet ที่เราต้องการ เพื่อให้ติดต่อกับ Clients ได้ตามรูป Network Diagram

3. ทำการใช้คำสั่ง sudo apt update และ sudo apt upgrade ถ้าระบบถาม Y/n ให้กดตอบ Y แล้วกด Enter ได้เลย

4. จากนั้นทำการใช้คำสั่ง

1.

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

จากนั้นกดและ Enter รอจนเสร็จกลับมาที่ prompt $ เช่นเดิม และใช้คำสั่ง
2.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg เครื่องหมายลบลบdearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

จากนั้นกดและ Enter รอจนเสร็จกลับมาที่ prompt $ เช่นเดิม และใช้คำสั่ง
3.

echo “deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

จากนั้นกดและ Enter รอจนเสร็จกลับมาที่ prompt $ เช่นเดิม และใช้คำสั่ง
4.

sudo apt update

จากนั้นกดและ Enter รอจนเสร็จกลับมาที่ prompt $ เช่นเดิม

แต่ถ้า error ว่า

E: Type ‘“deb’ is not known on line 1 in source list /etc/apt/sources.list.d/docker.list
E: The list of sources could not be read.

ให้เข้าแก้ไขไฟล์ โดยใช้คำสั่ง

sudo nano /etc/apt/sources.list.d/docker.list

เพื่อลบ “” ออก ให้เหลือเพียงตามรูปด้านบน จากนั้นกด ctrl+o และ ctrl+x เพื่อออกจากโปรแกรม nano

จากนั้นให้ใช้คำสั่ง

sudo apt update

กด Enter รอจนเสร็จกลับมาที่ prompt $ เช่นเดิม

และใช้คำสั่ง
5.

sudo apt install -y docker-ce docker-ce-cli containerd.io

จากนั้นกดและ Enter รอจนเสร็จกลับมาที่ prompt $ เช่นเดิม และใช้คำสั่ง
6.

sudo usermod -aG docker $USER

5. เมื่อติดตั้ง Docker เสร็จตามขั้นตอนข้างต้นแล้ว ให้ใช้คำสั่ง

docker เครื่องหมายลบลบversion

จะเห็นเวอร์ชั่นตามรูปด้านบน แสดงว่าติดตั้ง Docker ได้เสร็จสมบูรณ์แล้ว

รูปแสดง Web Management Docker containers ::: Portainer

6. Docker นั้นจะมีตัวจัดการ Container ได้ในรูปแบบกราฟิค ที่ให้การจัดการผ่านทางอินเตอร์เฟซกราฟิก (GUI) ทำให้ง่ายต่อการเรียกดูและจัดการ Docker containers ได้ โดยตัวนั้นชื่อว่า Portainer, เป็นตัวจัดการ Docker containers ผ่านเว็บเบราว์เซอร์ได้เลย

7. ใช้คำสั่ง

sudo docker run -d -p 9000:9000 เครื่องหมายลบลบname portainer เครื่องหมายลบลบrestart always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer-ce

จากนั้นกดและ Enter รอจนเสร็จกลับมาที่ prompt $ เช่นเดิม

8. ทดสอบใช้เครื่อง Clients ในระบบ Network ของเรา ทำการเปิด Web Browser แล้วพิมพ์ URL: ใส่

http://ip-Ubuntu-Server-Linux:9000

จากนั้นกด Enter จากนั้นระบบจะให้ใส่ Username / Password ทำการใส่ตามที่เราต้องการได้เลย จากนั้นกด Create user ตามรูปด้านบน

9. เมื่อเข้ามาแล้ว จะเห็นหน้าตาตามรูปด้านบนครับ จากนั้นเราจะดำเนินการติดตั้ง AdGuardHome ผ่านทาง Web : Portainer นี้ครับ โดยให้กดที่ Get Started ได้เลย จะขึ้นหน้าต่างตามรูปด้านบน

ขั้นตอนการติดตั้ง AdGuardHome

จากขั้นตอนก่อนหน้านี้ เราได้ติดตั้ง Ubuntu Server Linux และได้ทำการติดตั้ง Docker พร้อมกับติดตั้ง Docker containers Web Management ( Portainer ) เพื่อใช้จัดการ Containers เสร็จเรียบร้อยแล้ว ในขั้นตอนต่อไป ผมจะมาแนะนำวิธีการติดตั้ง AdGuardHome ผ่านทาง Web Browser ของ Portainer ครับ

รูปแสดง Network Diagram ตัวอย่างที่ใช้อธิบายอ้างอิงในบทความ
  1. ที่เครื่อง Clients ในระบบหรือเครื่องใดๆในระบบ Network ของเราให้ใช้โปรแกรม putty เพื่อ remote เข้าไปที่เครื่อง UBuntu Server Linux จากนั้น ให้ทำการพิมพ์คำสั่ง

sudo nano /etc/systemd/resolved.conf

จะขึ้นหน้าต่างแก้ไขตามรูปด้านบนให้ ให้เลือก cursor ลงมา หาคำว่า

#DNSStubListener=yes -> no

จากนั้นให้ลบ # ออก และให้แก้ไขจาก yes เป็น no จากนั้นให้กดปุ่ม ctrl+o แล้ว enter และกด ctrl+x แล้ว enter จะออกจากโปรแกรม nano จากนั้นให้ใช้คำสั่ง

sudo systemctl restart systemd-resolved.service

เพื่อทำการ restart services จากนั้นให้ทำเปิด Web Browser แล้วพิมพ์ URL :

http://ip-Ubuntu-Server-Linux:9000

จากนั้นทำการ login เข้าใช้งาน Portainer

2. จากนั้นคลิกที่รูป Logo Docker จะเข้าไปยังหน้าจัดการของ Docker Containers

3. ที่เมนูด้านซ้ายมือ ให้คลิกเข้าไปที่เมนู Containers ตามรูปด้านบน

4. ที่เมนูบริเวณด้านมุมขวาบน ให้คลิกที่ + Add container ตามรูปด้านบน

5. จะเข้าสู่หน้าต่าง Create container ให้ทำการตั้งค่า เพื่อจะติดตั้ง AdGuardHome โดย
Name : ตั้งชื่อตามต้องการ(โดยใส่ตัวเล็กพิมพ์ติดกันทั้งหมด)
Image : adguard/adguardhome เป็นการระบุให้ Docker ทราบว่าจะดึง image ใดมาติดตั้ง ซึ่งก็คือ AdguardHome นั่นเอง โดยจะดึงข้อมูลผ่านทาง Internet ฉะนั้นแล้วเครื่อง Ubuntu Server ต้องเข้าสู่ Internet ได้ตามปกติ (ตามรูป Network Diagram)
Manual network port publishing ให้กดที่ + publish a new network port
เพื่อทำการกำหนด Listening port ให้กับระบบ ซึ่งก็พอร์ที่ใช้งานเกี่ยวกับการเข้าจัดการ AdguardHome และ ให้บริการ DNS จะมี Port ดังนี้ 3000 tcp ใช้สำหรับจัดการ AdGuardHome ผ่านทาง WebBrowser , 53 tcp/udp ใช้เพื่อให้บริการ DNS Server , 853 tcp ให้เพื่อให้บริการ DNS-over-TLS server. เบื้องต้นใส่ไปตามที่ผมแนะนำก่อนได้ครับ ตามรูปด้านบน จากนั้นกดที่ปุ่ม Deploy the container

6. ระบบจะทำการ Deploy container จาก Image ที่เราต้องการซึ่งก็คือ Image ของโปรแกรม AdGuardHome เมื่อเสร็จแล้ว เราจะได้ Container ของโปรแกรม AdGuardHome ที่พร้อมใช้งานตามรูปด้านบน

7. จากนั้นให้ทำเปิด Web Browser แล้วพิมพ์ URL : ip-Ubuntu-Server-Linux:3000 จากนั้นทำการ login เข้าใช้งาน เพื่อตั้งค่าให้กับ AdGuardHome กดที่ เริ่มต้นการใช้งาน

8. ในช่องแรก ให้ใส่พอร์ทที่เราใช้สำหรับเข้า manage AdguardHome ก็คือพอร์ท 3000 และในส่วนที ่2 ให้เราใส่พอร์ทที่ให้บริการ DNS Server ก็คือพอร์ท 53 จากนั้นกดปุ่ม ถัดไป

9. ทำการตั้งค่า username / password ที่ต้องการ จากนั้นกด ถัดไป

10. ระบบจะทำการสรุปค่าต่างๆให้ทราบ จากนั้นกด ถัดไป เป็นอันเสร็จเรียบร้อย ให้กดที่ เปิดหน้าควบคุม

11. ทำการ Login หรือ เลือก ภาษา หรือ เลือก theme สี ได้ จากนั้น login เข้าใช้งานโปรแกรม AdGuardHome ได้เลย จะขึ้นหน้าจอตามรูปด้านบน เพื่อให้เราตั้งค่า และดูค่าต่างๆที่เกี่ยวกับการ Block web หรือ สถิติการเข้าใช้งานเว็บไซต์ต่างๆได้

การใช้งาน AgGuardHome เบื้องต้น

รูปแสดง Network Diagram ตัวอย่างที่ใช้อธิบายอ้างอิงในบทความ
  1. ตามรูป Network Diagram นั้น เครื่อง Clients ต่างๆในระบบที่เราดูแลอยู่ ให้ดำเนินการตั้ง IP DNS Server มาที่ IP ของเครื่อง Ubuntu Server ได้เลย เพื่อที่เครือง Clients ต่างๆ เมื่อเข้าถึงเว็บไซต์ หรือ โดเมนใดๆ จะมาถามที่เครื่อง Ubuntu Server ก่อน เพื่อจะทำการ Lookup เพื่อหา IP และเข้าใช้งานเว็บไซต์ หรือ โดเมนนั้นๆได้ต่อไป

2 ตัวโปรแกรม AdGuardHome นั้นจะมี Blocklist defaut เพื่อให้เรานำมาใช้งานได้ เพื่อป้องกันให้ Clients ไม่สามารถเข้าถึงเว็บไซต์ที่ไม่พึงประสงค์ หรือ เว็บไซต์ที่ผู้ดูแลระบบไม่ต้องการให้เข้าถึงได้ โดยไปที่เมนู ตัวกรอง -> DNS Blocklists สามารถกดเลือก หรือ ไม่เลือก เพื่อกำหนดการตั้งค่า Block ได้

3. หากเราต้องการจะ Block website หรือ โดเมน ก็สามารถทำได้ โดยเข้ามาที่เมนู ตัวกรอง -> กฏการกรองที่กำหนดเอง จากนั้นสามารถพิมพ์เว็บไซต์ หรือ โดเมน ที่ต้องการจะ Block ลงไปได้เลย โดยใช้ syntax หรือ รูปแบบ ตามตัวอย่าง เช่น หากต้องการบล็อคเว็บไซต์ facebook.com ก็พิมพ์ไปว่า ||facebook.com^ ตามรูปด้านบน แล้วกดที่ปุ่ม นำไปใช้ เครื่อง Clients จะไม่สามารถเข้าถึง facebook.com ได้

4. เมื่อเครื่อง Clients มีการเข้าใช้งานเว็บไซต์ หรือ โดเมน ต่างๆ ระบบจะรายงานค่าสถิติต่างๆให้เราทราบ ตามรูปด้านบน สามารถคลิกเข้าไปดูรายละเอียดแต่ละค่าได้

5. เช่น คลิกเข้าไปในส่วนของ Top Clients ของ ip 192.168.3.196 ก็จะเห็นรายการ โดเมน หรือ เว็บไซต์ ที่เครื่อง 192.168.3.196 นั้นได้เรียกใช้

6. สามารถปรับตั้งค่าของระบบ ได้ตามต้องการ โดยเข้าไปที่เมนู การตั้งค่า และแก้ไขการตั้งค่าต่างๆที่ต้องการได้เลย

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
ผมขอจบบทความนี้ไว้เพียงเท่านี้ครับ หากท่านผู้อ่านมีคำแนะนำ ติชมเพิ่มเติมใดๆ สามารถคอมเม้นท์พูดคุยกันได้ครับ ขอขอบคุณที่ติดตามอ่านบทความของผมครับ ขอบคุณครับ

--

--

Ake_.Net JPK
Ake_.Net JPK

Written by Ake_.Net JPK

ชอบเขียนบทความเกี่ยวกับระบบ Computer Network เพื่อทบทวนความรู้ความเข้าใจให้กับตนเองเป็นหลัก และให้ผู้ที่สนใจสามารถเข้ามาอ่านได้ครับ ขอขอบคุณที่ติดตามครับ