Блакаванне VPN праз PF на Mac: палітыка сайта, а не функцыя для пастаўкі
Packet Filter не з'яўляецца падтрымліваным API для распаўсюджваемых прадуктаў. Дайце набору правілаў уласніка, назвіце кожнае выключэнне і праверце пераходы.
Гэта працуе на вашым Mac, таму выглядае як нешта, што можна аддаць карыстальнікам. Гэта дапушчэнне — першае, ад чаго трэба адмовіцца. У дакуменце Apple TN3165 прама гаворыцца, што Packet Filter не з'яўляецца падтрымліваным API для прадуктаў, якія шырока распаўсюджваюцца, і прывілеяванае, кантраляванае кіраванне сайтам разглядаецца як разумны выпадак. Такім чынам, замак VPN, пабудаваны на PF, — гэта лакальная аперацыйная палітыка з уласнікам, а не функцыя, якую можна паставіць у праграме.
PF — не паверхня для пакавання
Гэта адрозненне не акадэмічнае. Распаўсюджваемы прадукт, які залежыць ад PF, атрымлівае ў спадчыну кожнае змяненне, якое Apple уносіць у яго, кожны канфлікт з іншым інструментам, які таксама піша правілы, і ніякіх абавязацельстваў падтрымкі, што гэтая схема працягне працаваць. Сайт, які сам кіруе сваімі машынамі, мае іншыя адносіны: ён можа дакументаваць залежнасць, тэставаць яе на кожным выпуску АС і прымаць абслугоўванне.
Некаторыя парады па ўсталяванні перасякаюць мяжу, якую варта назваць. Перазапісванне ўсяго сістэмнага набору правілаў, каб загрузіўся адзін якар, рэдагаванне сістэмнай канфігурацыі запуску Apple або адключэнне System Integrity Protection не з'яўляюцца дапушчальнымі патрабаваннямі для паўторна выкарыстоўванага рэцэпту. Калі апублікаваны даведнік патрабуе хоць бы адно з гэтага, ён апісвае лабараторыю, а не палітыку, якую можна разгарнуць.
Напішыце намер выхаду да сінтаксісу
Вызначыце, што дазволена, перш чым выбраць хоць адно ключавое слова. Звычайна павінны існаваць тры шляхі: уласны транспарт VPN-кліента да яго сервера, трафік абароненай праграмы ўнутры тунэля і ўсё, што наладжванне або лакальныя службы сапраўды патрабуюць прамога шляху.
Дайце кожнаму прапанаванаму выключэнню прызначэнне, транспарт і ўласніка. Дазвол усіх партоў да канчатковай кропкі дазваляе значна больш, чым адзіны транспарт, які выкарыстоўвае тунэль, і дадатковая экспазіцыя прыходзіць без чыйго-небудзь рашэння, што так павінна быць. Дазвол публічнаму рэзалверу — тая ж пастка ў больш прыязнай вопратцы: ён стварае прамы шлях DNS нават тады, калі тунэль не працуе, таму пошук імёнаў усё роўна ўцякае.
| Path | Destination | Owner |
|---|---|---|
| VPN transport | Gateway address, one UDP port | Network team |
| Tunnel traffic | Internal prefixes | Application owner |
| Resolver exception | Named internal resolver | Security team |
Карысны тэст для выключэння — ці можаце вы назваць чалавека, які яго папрасіў, і збой, які яно прадухіляе. Калі ніводнага адказу няма, правіла, верагодна, абыход неправільнай канфігурацыі, якая інакш засталася б нябачнай.
Нумары utun — не ідэнтычнасць
MacOS стварае тунэльныя інтэрфейсы як прылады utun, і нумар, прызначаны вашаму VPN, не стабільны паміж перазагрузкамі, перападключэннямі або пры наяўнасці іншага кліента. Правіла, якое пералічвае некалькі меркаваных нумароў, — гэта не палітыка; гэта здымак аднаго паўдня.
Прывяжыце правіла да чагосьці, што ідэнтыфікуе меркаванага пастаўшчыка: план адрасоў, які прызначае тунэль, працэс, што валодае інтэрфейсам, або канфігурацыя, якую падтрымлівае сам VPN-кліент. Затым запішыце, як працуе гэтая ідэнтыфікацыя, бо чалавек, які будзе правяраць правіла праз год, не будзе мець вашай гісторыі каманднага радка.
Зрабіце загружаную палітыку адназначнай
Назва якара арганізуе правілы; яна не даказвае, што эфектыўная палітыка — гэта менавіта тое, што вы задумалі. Прыярытэт паміж якарамі, правілы, загружаныя іншым праграмным забеспячэннем, і існуючы стан могуць змяніць вынік. Пераглядзіце эфектыўны набор разам з тым, хто яшчэ валодае PF на гэтай машыне, і дакументуйце ўласнасць у тым жа месцы, што і канфігурацыю. Два ўласнікі, якія рэдагуюць розныя якары з рознымі дапушчэннямі, — звычайны спосаб, якім у замку з'яўляецца дзірка.
Трымайце набор правілаў у падтрымліваным шляху канфігурацыі сайта, версіяйце яго і адзначайце, якія выпускі macOS былі пратэставаны. Змяненне, ужытае ўручную і запомненае адным чалавекам, не з'яўляецца абслугоўванай інфраструктурай, што б ні гаварыў загаловак файла.
Праверце пераходы, а не падключаны стан
Здымак экрана, зроблены, калі тунэль працуе, амаль нічога не даказвае. Прайдзіце стан за станам: запуск да любога злучэння, працоўны тунэль, тунэль, які падае без папярэджання, наўмыснае адключэнне і пераход з Wi-Fi на кропку доступу. Кожны стан мае свой адказ, і цікавыя з іх — збоі, а не ўдалы шлях.
У кожным стане запішыце, што наўмысна дасягальна. Праверце IPv4 і IPv6 асобна, пратэстуйце развязанне імёнаў і ўключыце паток, які ўжо быў усталяваны да пераходу, бо існуючыя злучэнні не заўсёды ідуць за новай палітыкай. Браўзер, які збоіць, калі тунэль не працуе, — гэта адна кропка даных, а не доказ, што ўсе астатнія шляхі заблакаваныя.
Нарэшце, захавайце метад аднаўлення, які не залежыць ад сеткавага шляху, які вы змяняеце. Правераная добрая канфігурацыя на лакальным носьбіце і дакументаваны спосаб яе загрузкі ператвараюць замак у палітыку; без іх адна дрэнная рэвізія замыкае адміністратара па-за машынай, якая павінна была быць абароненай.