Pi-hole (DoH) ตัวกันโฆษณา พร้อมปกป้องความเป็นส่วนตัว ติดตั้งแบบแบบ macvlan
ลงแบบนี้ต่างกับใช้แบบเดิม ๆ คือถ้าไม่ได้ตั้ง Pi-hole เป็น DHCP ก็จะยังเห็น client ที่ connect เข้ามาแยกกัน ไม่รวมเป็นอันเดียวว่ามาจาก router และจะได้ ip จริง เช่น 192.168.111 ไม่ได้เป็น port Synology ซึ่งจำง่ายและสะดวกกว่าเวลาเอาไปใช้ นอกจากนี้ยังทำ DNS-over-HTTPS ให้ด้วยเพื่อความเป็นส่วนตัว
ขั้นตอนติดตั้ง
จัดเตรียมไฟล์
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:
cloudflared:
container_name: cloudflared
image: cloudflare/cloudflared
command: proxy-dns
environment:
- "TUNNEL_DNS_UPSTREAM=https://1.1.1.1/dns-query,https://1.0.0.1/dns-query,https://9.9.9.9/dns-query,https://149.112.112.9/dns-query"
# Listen on an unprivileged port
- "TUNNEL_DNS_PORT=5053"
# Listen on all interfaces
- "TUNNEL_DNS_ADDRESS=0.0.0.0"
# Attach cloudflared only to the private network
networks:
internal:
ipv4_address: 172.30.9.2
restart: unless-stopped
pihole:
container_name: pihole
image: pihole/pihole:latest
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
hostname: pihole
domainname: example.com # <-- Update
mac_address: d0:ca:ab:cd:ef:01
cap_add:
- NET_ADMIN # Required if you are using Pi-hole as your DHCP server, else not needed
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 # Only required if you are using Pi-hole as your DHCP server
- 80/tcp
environment:
TZ: Asia/Bangkok
FTLCONF_REPLY_ADDR4: 192.168.1.111 # <-- Update (match ipv4_address)
VIRTUAL_HOST: pihole.example.com # <-- Update (match hostname + domainname)
WEBPASSWORD: "yourpassword" # <-- Add password (if required)
PIHOLE_DNS_: "172.30.9.2#5053;no"
# Listen on all interfaces and permit all origins
# This allows Pihole to work in this setup and when answering across VLANS,
# but do not expose pi-hole to the internet!
DNSMASQ_LISTENING: "all"
networks:
internal:
ipv4_address: 172.30.9.3
default:
ipv4_address: 192.168.1.111 # <-- Update
restart: unless-stopped
# Starts cloudflard before Pi-hole
depends_on:
- cloudflared
networks:
# Create the internal network
internal:
ipam:
config:
- subnet: 172.30.9.0/29
default: # 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 ในไฟล์ แก้ให้ตรงกับที่ใช้ ส่วนที่สำคัญที่ต้องดูจริง ๆ คือ
mac_address: d0:ca:ab:cd:ef:01
mac_address: ใช้ในการ fix IP บน router ตั้งให้ถูกหลักพอ หรือไม่ตั้งก็ได้
FTLCONF_REPLY_ADDR4: 192.168.1.111 # <-- Update (match ipv4_address)
FTLCONF_REPLY_ADDR4: แก้ ip ของ Pi-hole ที่จะใช้ โดยตั้งให้ตรงกับวง LAN ในบ้าน อย่างของผมใช้ 192.168.1.111 วงในบ้านคือ 192.168.1.1
VIRTUAL_HOST: pihole.example.com # <-- Update (match hostname + domainname)
WEBPASSWORD: "yourpassword" # <-- Add password (if required)
VIRTUAL_HOST: อันนี้ไม่สำคัญแต่เป็นโดเมนไว้เข้า Pi-hole ง่าย ๆ ถ้าไม่แก้อะไรเลยเวลาใช้งานก็เข้าผ่าน pihole.example.com หรือ pi.hole ซึ่งเป็นค่าเริ่มต้น ถ้าจะแก้ VIRTUAL_HOST: อย่าลืมย้อนไปแก้ hostname: และ domainname: ให้ตรงด้วย
WEBPASSWORD: ตั้งรหัสผ่านเพื่อเข้าใช้หน้า admin page
networks:
internal:
ipv4_address: 172.30.9.3
default:
ipv4_address: 192.168.1.111 # <-- Update
network ในส่วนของ Pi-hole ดูเฉพาะส่วน ipv4_address: ของ default: ที่เขียนให้อัพเดท โดยตั้งให้ตรงกับ FTLCONF_REPLY_ADDR4:
default: # Name of network
driver: macvlan # Use the macvlan network driver
driver_opts: # If open vSwitch is disabled use eth0 (or eth1 +)
parent: eth0
network ในส่วนล่างสุดใช้ในการสร้าง network ของ docker จุดสำคัญคือต้องไปเช็คว่าใช้ eth0 หรือใช้ ovs_eth0 โดยดูได้จากภาพ
เช็ค Open vSwitch และ LAN ที่ใช้อยู่
สำหรับคนที่เปิด 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 อยู่แล้วก็ไม่ต้องทำอะไร) แก้เสร็จหมดแล้วให้เซฟไฟล์
จัดเตรียม 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 ในขั้นตอนติดตั้ง
ขั้นตอนเตรียมไฟล์ต่าง ๆ เสร็จเรียบร้อยแล้วต่อไปคือติดตั้ง
ติดตั้ง
SSH แล้วติดตั้งโปรแกรมตามขั้นตอนปกติ
cd /volume1/docker/pihole
docker-compose up -d
หลังจากติดตั้งเสร็จแล้ว pihole จะขึ้นไปแสดงใน tab Container เอง โดยหากดูที่ tab Network ก็จะเห็น macvlan แสดงขึ้นมาด้วย
จบขั้นตอนติดตั้งแล้วอย่าลืม
- เข้าไปตั้งค่าใน 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เข้าไปตั้งค่าได้เลย - หลังจากทุกอย่างทำงานเรียบแล้วแล้วเช็คว่า DoH ทำงานหรือไม่ได้ที่ https://1.1.1.1/help
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/



No comments to display
No comments to display