Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> Internet

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Internet hiện đại nơi khá phiền toái. Thường xuyên, hoạt động innocent như đọc text hay xem video bị ngắt quãng bởi promotional messages gọi là quảng cáo. Điều này không thành vấn đề nếu quảng cáo relevant, well-timed, hoặc non-intrusive, nhưng dù "tiến bộ" AI, deep learning và buzzwords khác, chúng không phải cái nào. Rồi, chúng ta có privacy và vân vân.

Cuộc chiến giữa ad givers và ad blockers tiếp diễn. Cũng leo thang chậm, vì càng nhiều người quay lưng aggressive in-yer-face ad model. Phần lớn, nếu bạn dùng adblocking extension trong trình duyệt, bạn ổn. Nhưng bạn at the mercy của công ty browser và những gì họ cho phép, cộng này không luôn work mọi browser/OS. Giải pháp: chặn hoàn toàn network request đến ad server, và đó là Pi-Hole làm. Hãy review.

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Bắt đầu

Pi-Hole là black hole cho Internet advertisers. Nó là bộ công cụ phần mềm chặn DNS request đến domain identified là ad serving, nên browsing session - hoặc bất kỳ Internet-facing activity nào - không bao gồm quảng cáo. Đây là network-level solution, và nên work mọi scenario. Lợi ích, ngoài giảm noise, bao gồm giảm traffic volume, cải thiện privacy.

Điều này intrigued tôi, và tôi quyết định setup Pi-Hole. Nói chung, Pi-Hole designed dùng như appliance. Như tên gợi ý, bạn có thể dùng Raspberry Pi rẻ, cài Pi-Hole, và dùng làm network filter. Vấn đề số một - bạn cần hiểu networking để config Pi-Hole đúng. Tổng thể, giải pháp Pi-Hole hoàn chỉnh bao gồm:

  • Setup device chạy Pi-Hole - có thể dedicated system trên network, hoặc config Pi-hole trên bất kỳ máy Linux nào. Ví dụ, nếu bạn có vài laptop/desktop Linux, mỗi cái có thể là network filter riêng.
  • Bước tiếp: config Pi-Hole làm DNS server - Bản chất, chúng ta browse dùng domain name thay vì IP. Con người dễ nhớ dedoimedo.com hoặc example.com hơn dãy số 1.2.3.4. Điều này qua Domain Name System (DNS) resolution service, dịch tên readable sang số. Pi-Hole áp dụng filtering rules tại điểm này - nếu identify request đến address nó cho là advertiser, nó drop request, và content đó không bao giờ served. Tất nhiên, có thể false positives.
  • Bước cuối: config các system khác dùng Pi-Hole làm DNS server - Lại cần kiến thức networking. Nhưng áp dụng mọi OS. Mặc dù Pi-Hole appliance cần Linux, bất kỳ máy nào có thể đổi DNS config dùng appliance, và từ đó, Pi-Hole là middleman, lọc network request.

Nhớ rằng tất cả trên yêu cầu expertise. Bạn không thể casually plug 'n' play giải pháp này. Nhưng nếu bạn có nerdy friend, họ có thể làm giúp. Về simple hay complicated, hãy tiếp tục.

Installation wizard

Tải script và chạy. Bạn có text-based wizard relative simple. Chạy trên KDE neon, chỉ cài software từ system repositories, ngoài component riêng từ GitHub.

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Bạn cần nói Pi-Hole dùng DNS gì. Ví dụ, router của bạn, thường Linux system dùng, như 192.168.1.1 hoặc 192.168.2.1. Việc hơi khó hiểu với systemd, nhưng chúng ta sẽ đến. Bạn cũng có option dùng Internet DNS existing (Google hoặc CloudFlare). Tôi quyết định bắt đầu custom setup.

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Giống adblocker, Pi-Hole dùng lists chặn quảng cáo. Đây là strongest và weakest link, vì nếu lists không up-to-date, inaccurate, hoặc badly made, bạn có gaps hoặc false positives, legitimate domain bị reject. Nhưng vấn đề này không khác adblocking qua browser extension, trừ nó thorough hơn, do đó aggressive hơn. Hầu hết browser extension áp dụng rule chỉ third-party domain, nên chance expected domain không behave relative thấp. Pi-Hole meant to be foolproof, nghĩa là có thể prevent legit site load.

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Web UI nghe nice. Tôi config nó.

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Và xong. Giả sử Pi-Hole cài và config xong, tôi có thể dùng.

Nó work?

Không. Tôi không có Internet connectivity - failure name resolution. Local system - neon - dùng chính nó làm DNS (hoặc Pi-Hole cài, dùng router), nhưng Pi-Hole không cung cấp resolution service.

Vấn đề lúc này - bạn không online vì không Internet, nên nếu muốn search answer, cần máy khác. Tôi thử uninstall Pi-Hole, simple clean, connectivity restored ngay. Cài lại, cùng kết quả.

Tôi thử command-line checks. Pi-Hole có vài command enable, disable, start name resolution, check status. Hóa ra tôi gặp vấn đề pihole-FTL. Vâng.

pihole enable
  [i] Enabling blocking
  [✗] pihole-FTL: no process found
  [✓] Pi-hole Enabled

Thử chạy pihole-FTL, nhưng không start. Hóa ra cần sudo. Xem doc online, setup errors không well documented. Vậy tôi qua được rào cản đầu tiên.

pihole-FTL
FATAL: Opening of FTL log (/var/log/pihole-FTL.log) failed!
       Make sure it exists and is writeable by user neon

sudo pihole-FTL
FTL started!

Nhưng vẫn không Internet. Tôi đoán DNS service vẫn down, thử restart.

pihole restartdns
  [✗] Failed to start pihole-FTL.service: Unit pihole-FTL.service not found.

Từ error, tôi đoán không có unit file start FTL service, hoặc nó borked. Search online, học rằng service file cần thay. Cụ thể, dưới /etc/init.d/pihole-FTL, edit line invoke FTL từ:

su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER"

Thành line này:

/usr/bin/pihole-FTL

Sau này, Pi-Hole start không error.

sudo pihole restartdns
  [✓] Starting DNS service

Pi-Hole không chặn quảng cáo

Tôi có connectivity, nhưng quảng cáo vẫn đó. Pi-Hole không filtering. Vậy tôi thử truy cập Web UI xem có thể change/tweak không. Nhưng khi vào địa chỉ Pi-Hole, không có web server listening. https://ip-address/admin và https://pi-hole/admin không làm gì.

Làm thêm test command line, và hóa ra lighttpd service không chạy, giải thích tại sao không có Web UI. Lúc làm wizardry nữa, doc hơi sparse. Gặp thêm error:

sudo systemctl restart lighttpd.service
Job for lighttpd.service failed because the control process exited with error code. See "systemctl status lighttpd.service" and "journalctl -xe" for details.

Lần này, vì có Internet, tôi search online, và sớm tìm ra lý do - dù CÓ THỂ không có gì trong error logs chỉ solution. Ở đây, tôi muốn chỉ ra, lần nữa, undecipherable complexity của systemd. Tôi phải search info trong binary log, và即便如此, info useless.

Thực tế tôi thiếu package - gamin - tại sao không cài dependency ngay, không idea. Nhưng một khi cài, lighttpd start fine, Web UI hiện ra.

sudo apt-get install gamin

systemctl status lighttpd.service
● lighttpd.service - Lighttpd Daemon
  Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
  Active: active (running) since Thu 2019-05-09 15:34:03 CEST; 2s ago
Process: 19060 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
Main PID: 19069 (lighttpd)
   Tasks: 6 (limit: 4915)
  CGroup: /system.slice/lighttpd.service
          ├─19069 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
          ├─19078 /usr/bin/php-cgi
          ├─19079 /usr/bin/php-cgi
          ├─19080 /usr/bin/php-cgi
          ├─19081 /usr/bin/php-cgi
          └─19082 /usr/bin/php-cgi

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Web UI login và password

Nhưng vẫn không chặn quảng cáo. Thử login, nhận ra vấn đề khác - không truy cập admin page để check log, detail, change. Search online, tìm ra phải reset default password từ command line:

pihole -a -p

Sau đó truy cập Web UI settings. Interface really nice và powerful. Nhiều option, bao gồm tạm dừng Pi-Hole, nên nếu gặp vấn đề, thay vì đổi mọi thứ, chỉ pause filtering. Không cần chơi DNS settings.

Điền blocklists

Duyệt interface, nhận ra blocklists trống. Yes, evident từ main page, nhưng cần biết nhìn gì. Tại sao Pi-Hole không prompt update lists hoặc làm trong setup? Chạy manual update command line, lists generated.

pihole -g -f

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Ok, nó work?

Yes, cuối cùng working! Pi-Hole làm DNS duty và filtering traffic. Tôi nói effective và non-intrusive. Nếu không nhầm, có performance boost nhẹ network side, vì system handle fewer queries, serve less content. Thực tế, browsing innocent, 20% queries bị chặn. Nghe nhiều. Nhưng cũng highlight hiện trạng Internet buồn bã. Hơn 100,000 domain trên blocklist cũng kể phần câu chuyện. Cũng giải thích latency improvement nhẹ.

Pi-Hole: Thần Thoại DNS Chặn Quảng Cáo & Bảo Vệ Quyền Riêng Tư

Kết luận

Cuối ngày, tôi có Pi-hole chạy, nhưng setup far from trivial. Có bốn năm cardinal problems, không cái nào nên xảy ra, vì installation wizard có thể qua separate checks đảm bảo things working. Phần first-time run có thể service check, nếu issue, self-diagnosis đảm bảo FTL up. Tương tự Web service. Sau đó, password reset và list update. Tất cả làm experience streamlined hơn.

Là product, Pi-Hole tool rất nice và powerful. Làm việc cực tốt, fast, effective, robust, Web UI designed nice. Bạn cũng gain traffic side, less content served, fewer queries resolved, hence performance improvement cho stuff matters. Setup không trivial nhưng achievable, và bạn có flexibility wiring network. Pi-Hole standalone, hoặc serve tất cả device nhà. Tóm lại, đây là doomsday weapon khi Internet quay lùi bạn. Well worth testing, nhưng nhớ rule two của thermodynamics. Bạn không thể vừa trivial vừa complex cùng lúc.

Chào.