Skip to main content

Pi-hole ตัวกันโฆษณา ติดตั้งแบบแบบ macvlan

ลงแบบนี้ต่างกับใช้แบบเดิม ๆ คือจะได้ ip จริง เช่น 192.168.111 ไม่ได้เป็น port Synology ซึ่งจำง่ายและสะดวกกว่าเวลาเอาไปใช้

ขั้นตอนติดตั้ง

จัดเตรียมไฟล์

โหลดไฟล์จาก GitHub หรือ save code ด้านล่างไปทำไฟล์ docker-compose.yaml ตามแต่สะดวก

# Note: 192.168.1.xxx is an example network, you must update all these to match your own.

version: '2.2'

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    hostname: pihole
    domainname: example.com             # <-- Update
    mac_address: d0:ca:ab:cd:ef:01
    cap_add:
      - NET_ADMIN
    networks:
      pihole_network:
        ipv4_address: 192.168.1.111   # <-- Update
    volumes:
      - "./etc-pihole/:/etc/pihole/"
      - "./etc-dnsmasq.d/:/etc/dnsmasq.d/"
    dns:
      - 127.0.0.1
      - 8.8.8.8
    ports:
      - 443/tcp
      - 53/tcp
      - 53/udp
      - 67/udp
      - 80/tcp
    environment:
      TZ: Asia/Bangkok
      ServerIP: 192.168.1.111         # <-- Update (match ipv4_address)
      VIRTUAL_HOST: pihole.example.com  # <-- Update (match hostname + domainname)
      WEBPASSWORD: "yourpassword" # <-- Add password (if required)
    restart: unless-stopped

networks:
  pihole_network:                       # Name of network
    driver: macvlan                     # Use the macvlan network driver
    driver_opts:                        # If open vSwitch is disabled use eth0 (or eth1 +)
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24            # Specify subnet <-- Update 
          gateway: 192.168.1.1              # Gateway address <-- Update
          ip_range: 192.168.1.250/28        # Available IP addresses <-- Update

ใช้ notepad หรืออะไรก็ได้เปิดไฟล์ docker-compose.yaml ขึ้นมา เน้นดูตรงส่วนของ comment ในไฟล์ แก้ให้ตรงกับที่ใช้

ipv4_address: 192.168.1.111
 ServerIP: 192.168.1.111
 WEBPASSWORD: “yourpassword”

ให้แก้จุดที่สำคัญคือส่วนของ ip ให้เป็น ip ของ Pi-hole ที่จะใช้ โดยตั้งให้ตรงกับวง LAN ในบ้าน อย่างของผมใช้ 192.168.1.111 ก็จะตามในไฟล์ แล้วอย่าลืมตั้ง password ที่จะใช้เข้าไปจัดการใน Pi-hole ด้วย

เช็ค Open vSwitch และ LAN ที่ใช้อยู่

เช็ค Open vSwitch และ LAN ที่ใช้อยู่

networks:
 pihole_network: # Name of network
 driver: macvlan # Use the macvlan network driver
 driver_opts: # If open vSwitch is disabled use eth0 (or eth1 +)
 parent: eth0

สำหรับคนที่เปิด Open vSwitch ไว้
เช็คได้จาก
Control Panel > Network > Network Interface > Manage > Open vSwitch Settings ถ้ามีติ๊กถูก แสดงว่าต้องใช้ ovs_eth0
ให้แก้บรรทัดสุดท้ายให้เป็น
ovs_eth0 จาก eth0

parent: ovs_eth0

สำหรับ NAS ที่มี Lan 2 ช่อง ให้เช็ค
Control Panel > Network > Network Interface
ว่าคุณเสียบ LAN ช่องไหนไว้ ถ้าเป็น LAN 1 ไม่ต้องแก้อะไร ถ้าเป็น LAN 2 ให้แก้เป็น

parent: eth1



ipam:
 config:
 — subnet: 192.168.1.0/24 # Specify subnet ← Update 
 gateway: 192.168.1.1 # Gateway address ← Update
 ip_range: 192.168.1.250/28 # Available IP addresses ← Update

ส่วนนี้คือ subnet, gateway และ ip_range ให้ตั้งเป็นวง LANในบ้าน
คือถ้าบ้านเป็นวง 192.168.0.1 ก็ต้องเปลี่ยนจาก 192.168.1.0/24 ให้เป็น 192.168.0.0/24 ทำนองนั้น ทำทั้ง 3 บรรทัดให้ครบ (ถ้าเป็นวง 192.168.1.x อยู่แล้วก็ไม่ต้องทำอะไร)



domainname: example.com
 VIRTUAL_HOST: pihole.example.com

อันนี้ไม่สำคัญแต่เป็นโดเมนไว้เข้า pihole ง่าย ๆ ถ้าไม่แก้อะไรเลยเวลาใช้งานก็เข้าผ่าน pihole.example.com หรือ pi.hole

แก้เสร็จหมดแล้วให้เซฟไฟล์


จัดเตรียม folder ติดตั้ง

ย้อนกลับไปดูไฟล์ docker-compose.yaml อีกครั้ง ในส่วนของ volume

    volumes:
      - "./etc-pihole/:/etc/pihole/"
      - "./etc-dnsmasq.d/:/etc/dnsmasq.d/"

จะเห็นได้ว่าเราจะต้องมีการสร้าง 2 folder ย่อยใน docker โดยโครงสร้าง folder ก็จะมีหน้าตาประมาณนี้

docker
│
└─── pihole
     │   docker-compose.yaml
     │
     └─── etc-pihole
     │
     └─── etc-dnsmasq.d

 

เข้าไปจัดการสร้าง folder ผ่าน File Station ใน DSM ให้เรียบร้อย

หลังจากนั้น copy ไฟล์ docker-compose.yml ที่ทำไว้แล้วไปใส่ไว้ใน pihole

 ตัวอักษรเล็กใหญ่มีผล ตั้งให้ถูกต้อง ไม่งั้นจะไป error ในขั้นตอนติดตั้ง

image.png

ขั้นตอนเตรียมไฟล์ต่าง ๆ เสร็จเรียบร้อยแล้วต่อไปคือติดตั้ง

 

ติดตั้ง

SSH แล้วติดตั้งโปรแกรมตามขั้นตอนปกติ

cd /volume1/docker/pihole
docker-compose up -d

 

หลังจากติดตั้งเสร็จแล้ว pihole จะขึ้นไปแสดงใน tab Container เอง โดยหากดูที่ tab Network ก็จะเห็น macvlan แสดงขึ้นมาด้วย

1 DHGGSUDWUKo7ajLnMCVK7w.jpeg

จบขั้นตอนติดตั้งแล้วอย่าลืม

  • เข้าไปตั้งค่าใน Router ให้ DHCP ชี้ไปที่ IP ของ pihole โดยในตัวอย่างคือให้ชี้ไปที่ 192.168.1.111
  • fix ip ใน DHCP โดย mac address ดูในจากในสคริปต์ ในตัวอย่างคือ mac_address: d0:ca:ab:cd:ef:01 เพื่อกันอุปกรณ์อื่นพลาดมาใช้ ip เดียวกัน
  • เข้า Pi-hole ได้ผ่าน IP ที่ตั้งไว้ หรือใช้หรือโดเมน pi.hole และ pihole.example.com เข้าไปตั้งค่าได้เลย



Blocklists

ลงไม่ต้องเยอะไม่งั้นจะสร้างปัญหาให้แทน

https://firebog.net/ — Pi Hole blocklists



อัพเดท Pi-hole

ง่าย ๆ ค่าที่ตั้งไว้ไม่หายโดย

  • เปิด Docker ใน Synology ขึ้นมา
  • tab Container ให้หยุดการทำงานแล้วลบทิ้ง
  • tab Image ให้ลบ pihole/pihole:latest ทิ้ง
  • tab Network ให้ลบ pihole_network ทิ้งได้เลย
  • ทำซ้ำขั้นตอนติดตั้งจบที่ docker-compose up -d
  • เรียบร้อย

หรือ ลง watchtower แล้วก็ไม่ต้องมาสนใจเรื่องอัพเดทเองอีกเลย

Source
https://www.reddit.com/r/synology/comments/gmfta3/pihole_5_on_synology_using_docker_simplified_with/
http://tonylawrence.com/posts/unix/synology/free-your-synology-ports/