OpenVPN pull-filter siz nazarda tutgan marshrutdan ko'proq narsaga mos keladi
pull-filter matningizni prefiks sifatida itarilgan variantlar bilan solishtiradi, shuning uchun route route-gateway va route-ipv6 ni ham ushlaydi. Avval fe'llarni, keyin marshrutlarni tekshiring.
Siz mahalliy standart marshrutingizni saqlash uchun bitta satr qo'shasiz va shundan keyin tunnel endi ichki DNS serverga yetib bormaydi. Bu satr pull-filter ignore "route" edi, bu "bu marshrutni e'tiborsiz qoldir" degani emas. Bu "matni o'sha besh harf bilan boshlanadigan har bir itarilgan variantni tashla" degani va oddiy serverda bu marshrutlarning o'zi bilan birga route-gateway, route-metric va route-ipv6 ni ham o'z ichiga oladi. Quyidagi tekshiruv ro'yxati boshqa birov ishlatishi kerak bo'lgan profilga tegishdan oldin o'tkazadigan ro'yxatimdir.
Filtr faqat itarilgan variantlarga ta'sir qiladi
pull-filter faqat tunnel o'rnatilgandan keyin server yuboradigan variant satrlarida ishlaydi, boshqa hech narsada emas. Mahalliy faylingizda yozilgan variantlar bundan ta'sirlanmaydi, ilova trafigi ham. Agar biror jarayonning tunneldan foydalanishini to'xtatishni kutgan bo'lsangiz, bu mutlaqo noto'g'ri vosita va filtrlarning hech qanday birikmasi buni qilmaydi.
Bu qamrov foydali, chunki server konfiguratsiyasini o'z holida qoldirib, uning bir qismini mahalliy darajada rad etish mumkin. Bu biletda yozishga arziydigan cheklov ham: filtr bu mijoz nimani qabul qilishini o'zgartiradi, server nimani taklif qilishini emas. U xuddi shu profilning boshqa foydalanuvchilariga ta'sir qilmaydi. Bu variantni amalga oshirmaydigan boshqa mijozga o'tganda ham saqlanmaydi, buni uning ustiga ish oqimi qurishdan oldin bilish kerak.
Naqshni yozishdan oldin server aslida nima yuborishini tasdiqlang. Yuqori tafsilot darajasida mijoz olgan itarilgan variantlar satrini chop etadi va bu siz solishtiradigan aniq matn uchun yagona halol manbadir:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
Itarilgan satrni vergul bilan ajratilgan variantlar ro'yxati sifatida o'qing va variant nomlari bilan ularning argumentlari bo'sh joy bilan ajratilishini e'tiborga oling. Filtr matningiz o'sha oqim bilan solishtiriladi, shuning uchun keyingi qadamda bo'sh joylar shunchalik muhim.
Moslik prefiksdir, shuning uchun bo'sh joylar hamma narsani hal qiladi
Taqqoslash satr prefiksi, tahlil qilingan variant nomi emas. Shuning uchun "route" route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 va route-metric 100 bilan mos keladi. Oxiriga bitta bo'sh joy qo'shish uni siz nazarda tutgan oilaga toraytiradi, to'liq prefiks esa aniq manzilgacha yanada toraytiradi.
| Filter text | What it actually matches | Typical outcome |
|---|---|---|
"route" | Every option beginning with those letters | Routes, gateway, metric and IPv6 routes all dropped |
"route " | Route entries only, not the hyphenated siblings | The routes go, the rest survives |
"route 10.60." | A single destination range | The narrowest rule, and the easiest to audit |
"dhcp-option DNS" | Pushed DNS settings | Resolver stays local, internal names stop resolving |
Oxirgi qator bo'lingan tunnel ishida odamlarni ushlaydigan qatordir. O'z resolveringizni saqlash qonuniy tanlov va bu endi har bir ichki nom xususiy zonani ko'ra olmaydigan resolverga bog'liq degani. Bu ishlab chiqarishda topiladigan yon ta'sir emas, ataylab qabul qilinadigan natija.
Prefiks bo'yicha moslik qoida keyinchalik jimgina kengayishi mumkinligini ham bildiradi. Server sizning matningiz bilan boshlanadigan yangi variant qo'shganda, filteringiz hech kim profilingizni tahrirlamasdan unga qo'llana boshlaydi. Bu dizayn qilish kerak bo'lgan nosozlik rejimi va yumshatish variantning iloji boricha ko'p qismini moslashtirish, iloji boricha ozini emas.
Uch fe'l, uch xil natija
accept, ignore va reject bir g'oyaning uchta yozilishi emas. Ular mijozning moslik bilan nima qilishida va kimdir buni bilishida farq qiladi.
ignore mos keladigan variantni jimgina tashlaydi, ataylab almashtirgan sozlamangiz uchun shu kerak. reject uni tashlaydi va mijozni shikoyat qilishga majbur qiladi, uning yo'qligi keyin topilish o'rniga jurnalda ko'rinishi kerak bo'lganda shu kerak. accept ijobiy shakl, alohida variantlarni olib tashlash o'rniga ruxsat ro'yxatini qurganingizda ishlatiladi.
Qaysi fe'lni ishlatmang, filtrlar ular paydo bo'lgan tartibda qo'llanadi, shuning uchun ikkita ustma-ust tushadigan qoida tartibga bog'liq va ko'rib chiqish juda qiyin natija beradi. Har bir maqsad uchun bitta qoida saqlang va har biriga eng aniq matnni qo'ying. Ruxsat ro'yxati kerak bo'lsa, xuddi shu narsaga yig'iladigan ignore qoidalar uyumi o'rniga bir nechta accept qoidani afzal ko'ring. Shunda ko'rib chiquvchilar faylni yuqoridan pastga o'qib natijani oldindan aytishi mumkin va bu kengayadigan yagona sinovdir.
Qo'llangan marshrut va resolverni tekshiring, profilni emas
Faylda to'g'ri ko'rinadigan filtr ham sizni foydali hech narsani yo'naltirmaydigan tunnel bilan qoldirishi mumkin. Itarilgan variantlar allaqachon qo'llangan yoki tashlangan ishlab turgan tizimda ta'sirni tekshiring:
ip route show default
ip route show | grep -c 'proto static'
resolvectl status | grep -A4 'Link.*tun0'
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://intranet.example.internal/
Birinchi ikki qator sizga itarilgan standart marshrut keldimi va qancha statik yozuv omon qolganini aytadi. Resolver so'rovi tunnel interfeysi aslida qaysi serverdan foydalanishini ko'rsatadi va odatda DNS hayrati aynan shu yerda chiqadi. Oxirgi qator foydalanuvchi uchun muhim bo'lgan yagona savolga javob beradi.
U yerda bo'lganingizda ikkala yo'nalishni ham sinab ko'ring. Mahalliy internetingizni ishlab turishiga qo'yib, ichki nom hal qilishni jimgina buzadigan qoida yuzaki tekshiruvdan o'tadi va birinchi haqiqiy vazifada muvaffaqiyatsiz bo'ladi, shuning uchun o'sha sinovga bitta ichki resurs va bitta ochiq saytni kiriting.
Istisno va uning egasini yozib qo'ying
Filtr operator dizayniga istisno, shuning uchun uni sabab va ko'rib chiqish nuqtasi bilan yozib qo'ying. "Mahalliy standartni saqlash uchun itarilgan marshrutlarni e'tiborsiz qoldiradi" ko'rib chiqish mumkin; profildagi yalang'och satr esa yo'q va keyingi odam uni o'chiradi yoki taxmin bilan kengaytiradi.
Versiya bu yerda ham muhim. Moslik xatti-harakati va aniq qabul qilingan sintaksis OpenVPN 2.4, 2.5 va 2.6 bo'ylab takomillashtirilgan, shuning uchun naqshni siz yetkazib beradigan build qo'llanmasi bilan tasdiqlang, eski versiya haqidagi forum posti bilan emas. OpenVPN 2.6 qo'llanmasi bu variant va uning moslik qoidasini hujjatlashtiradi.
Nihoyat, istisnoni serverni boshqaradigan odam bilan kelishib oling. Ataylab yaratilgan server siyosatiga zid bo'lgan mijoz tomonidagi filtr keyingi auditni kutayotgan qo'llab-quvvatlash hodisasidir va profil yuborilishidan oldin uni hal qilish, kimdir marshrutlar yo'qligini payqaganidan keyin hal qilishdan ancha arzon.