Pi-hole і VPN на одному Pi: чи ще підтримується операційна система?
Перш ніж розмістити Pi-hole і VPN на одному Raspberry Pi, узгодьте підтримку плати, архітектуру простору користувача, підтримку служб і шлях оновлення.
На одному суміщеному пристрої з Pi-hole і VPN змішуються дві речі: встановлена родина дистрибутива та випуск з архітектурою, які компоненти справді підтримують. Плата, що завантажує образ, доводить, що ядро працює; вона не доводить, що бінарник FTL від Pi-hole і ваш інсталятор VPN націлені на один простір користувача. Справжня перевірка — чотиристоронній перетин підтримки плати, гілки випуску, архітектури пакетів і шляху оновлення, яким ви можете керувати самі. Втратьте будь-яку з цих чотирьох опор, і пристрій пропрацює цей тиждень, а потім підведе на наступному оновленні безпеки.
Підтримку визначає гілка випуску, а не назва родини
Запитайте, проти якого випуску проєкт ще тестує, і запишіть відповідь рядком версії, а не словом Debian. Сторінка попередніх вимог Pi-hole перелічує підтримувані операційні системи та готові архітектури FTL як дві окремі вимоги, обмежує підтримку випусками, які сама дистрибуція ще супроводжує, і попереджає, що варіанти або незвичні конфігурації можуть не працювати навіть усередині підтримуваного списку. Це формулювання важливе: підтримувана родина не охоплює кожного її члена.
Старий образ, який ще завантажується на вашому Pi, не доводить підтримку. Плата гаразд, індекс пакетів застарілий, а невідповідність проявиться пізніше, коли інсталятор потягне залежність, яку випуск уже не може задовольнити.
У боку VPN більше частин, кожна зі своїм вікном: демон тунелю, інсталяційний помічник, що пише його конфігурацію, клієнтський застосунок провайдера й інтеграційний пакет дистрибутива — чотири окремі проєкти. Інсталятор, що розпізнає ваш дистрибутив, та інсталятор, що створює службу, яку випуск може тримати в роботі, — різні твердження. Подивіться власний список платформ демона, а потім — чи торкалися помічника, який ви збираєтеся запускати, від часу виходу того випуску. Там, де проєкт заявляє підтримку лише до названого випуску, вважайте наступний неперевіреним, доки самі його не завантажите.
Узгодьте бінарну ціль з наявним простором користувача
Архітектура — тихіша відмова. 64-бітне ядро з 32-бітною землею користувача — реальне, підтримуване поєднання на кількох платах, і воно запускає 32-бітний бінарник FTL без скарг, аж до моменту, коли ви встановите щось, що публікується лише для arm64. Надрукуйте обидві половини, перш ніж вибирати образ, і тримайте вивід поруч із нотатками.
uname -m
dpkg --print-architecture
grep -E '^(PRETTY_NAME|VERSION_ID)=' /etc/os-release
apt-cache policy pihole-ftl
Якщо ці два рядки архітектури не збігаються, ви на змішаній збірці: робочій для самого Pi-hole, крихкій, щойно другій службі знадобляться нативні бібліотеки. Перезапис на чистий 64-бітний образ зазвичай швидший за перебудову ланцюжка інструментів, що створив невідповідність.
Маркетинг плати цього теж не вирішує. Розмір пам'яті та модель процесора нічого не кажуть про те, з якою libc пов'язані ваші пакети, тож вирішуйте за надрукованими значеннями, а не за сторінкою продукту.
Один корпус, дві служби, один власник мережі
Визначте, кому належать адресація, резолвер і тунель, перш ніж встановиться перший пакет, інакше дві служби претендуватимуть на один обов'язок і жодна не переможе чисто. Дайте Pi статичну адресу поза пулом DHCP, який роздає ваш маршрутизатор, і тримайте тунель у власній підмережі: 192.168.50.10 для Pi і 10.42.0.0/24 для тунелю — один робочий поділ, і самі числа довільні, доки не конфліктують із тим, що маршрутизатор уже обслуговує. Потім запишіть, який компонент відповідає на порту 53, який роздає DHCP, якщо ви ним користуєтеся, і який володіє маршрутом за замовчуванням, поки тунель піднято. На образі без екрана ця остання задача належить NetworkManager або systemd-networkd, а встановлення клієнта провайдера, який заодно переписує конфігурацію резолвера — це шлях, яким люди залишаються з живим тунелем і мертвим DNS.
Ділити корпус можна. Ділити роль — ні. Pi-hole хоче бути єдиним слухачем на порту 53, а демон VPN хоче проштовхувати свої налаштування DNS клієнтам, тож виберіть, кому з двох клієнти мають довіряти, і налаштуйте другого не заважати.
Тримайте шлях адміністрування поза тунелем, де можете. Якщо резолвер і тунель відмовлять разом, вам усе ще потрібен SSH за адресою LAN, а це означає, що служба керування не повинна залежати ні від одного з них.
Зробіть наступне оновлення частиною вибору
Випуск, який ви не можете оновити, — це стеля підтримки, яку ви вже прийняли. Перевірте механіку оновлення на запасній карті, перш ніж пристрій почне нести DNS вашої домівки, і прочитайте, що проєкти кажуть про перехід між гілками, замість того щоб припускати, що оновлення пакета достатньо.
sudo apt update
apt-mark showhold
sudo apt full-upgrade
pihole -up
Утримувані пакети — звична причина того, що оновлення виглядає успішним і нічого не змінює. Знімайте утримання навмисно, одне за одним, і зазначайте, якій службі потрібне було фіксування.
Перед стрибком експортуйте конфігурацію Pi-hole, статичні оренди та будь-які профілі тунелю і підтвердьте, що можете відновити їх на свіжому образі. Після стрибка перевірте звичайний DNS клієнтів, приватний ресурс за тунелем, повторне підключення та будь-яке правило переадресації на шлюзі. Корпус, який завантажується і відповідає на ping, не пройшов майже нічого.
Коли жоден випуск не пасує обом службам
Іноді перетин порожній: помічник VPN перейшов на новіший випуск, ніж пакет Pi-hole, який ви можете встановити, або образ виробника плати відстає від обох. У такому разі розділіть ролі, а не редагуйте метадані випуску, щоб догодити інсталятору. Два невеликі пристрої або один пристрій плюс контейнер для другої служби коштують менше, ніж корпус, історія підтримки якого тримається на брехні.
Підробка версії — єдиний короткий шлях, від якого треба відмовитися навідріз. Менеджери пакетів вірять тому, що написано у файлі випуску, тож підроблений ідентифікатор дає інсталяцію, у налагодженні якої не допоможе жоден із двох проєктів.
Якщо два поточні випуски задовольняють усе, виберіть той, чиї нотатки про оновлення ви можете виконувати без здогадів, і припиніть шукати. Потім запишіть версію, архітектуру, власників служб і крок відновлення в одному місці, бо наступній людині, яка торкнеться SD-карти, знадобляться всі чотири.