Shlyuzda OpenVPN DNS: dnsmasq va xavfsizlik devori qamrovi
dnsmasq'ni tunnel manzilida ishga tushiring, DNS ga faqat mijozlar hovuzidan ruxsat bering, rezolverni suring, so'ng to'g'ridan-to'g'ri so'rovlarni va ilovaning o'z qidiruvini sinab ko'ring.
Tunneldagi mijozlar shlyuzga yetib boradi, shlyuz esa ichki rezolverga yetib boradi, shuning uchun DNS ishlashi kerak. Lekin ishlamaydi, chunki bular ikki xil ruxsat, ishlaydigan DNS xizmati esa uchinchi narsa. Tinglovchi mijozlar yetib boradigan manzilda bo'lishi kerak, xavfsizlik devori o'sha manzilga so'rovlarga ruxsat berishi kerak, mijozga esa uni ishlatish aytilishi kerak. Tunnelni ikkala tomonga ochish birinchi ikkitasini tasodifan hal qiladi va uchinchisini tugallanmagan qoldiradi.
Tinglovchi ikki yo'nalishli mahalliy xizmat
Ichkariga mijoz shlyuzning tunnel manziliga 53 portda so'rov yuboradi. Tashqariga demon bu so'rovni o'zining sozlangan yuqori oqimiga uzatadi. Ikkala yarm ham ishlashi kerak va ular turli yo'llar bilan ishdan chiqadi.
Mijoz xabar qilgan taym-aut va shlyuzda ko'rinadigan taym-aut bir xil nosozlik emas.
Tunnel manzilini bog'lang, har bir manzilni emas
Bu ish uchun ajratilgan dnsmasq nusxasiga aniq tinglash manzili, ishga tushgandan keyin tunnel paydo bo'lishiga toqat qiladigan bog'lash rejimi va bitta aniq yuqori oqim kerak. Bu men ishlatadigan eng kichik versiya:
listen-address=127.0.0.1,10.90.0.1
bind-dynamic
no-resolv
no-hosts
server=192.168.50.53
bind-dynamic alohida manzillarni bog'laydi va tun0 keyin paydo bo'lganda ham bardosh beradi, bu VPN xizmati qayta ishga tushadigan xostda muhim. loopbackni sanash ommaviy tinglovchi qo'shmasdan mahalliy vositalarni ishlashda saqlaydi. no-resolv demonning xost rezolver sozlamasidan yuqori oqimlarni meros olishini to'xtatadi, no-hosts esa bu nusxaning shlyuz hosts faylini e'lon qilishini to'xtatadi. Bu variantlarning hech biri hech kimga xizmatdan so'rov qilish huquqini bermaydi.
Ikkinchi demonni ishga tushirishdan oldin 53 portda allaqachon mavjud tinglovchi bor-yo'qligini tekshiring va noto'g'ri katalogdagi adashgan fayl o'rniga distributivning sozlama egasidan foydalaning.
DNS kirishiga ruxsat bering, tunnel tranzitiga emas
Buni ishlaydigan qiladigan xavfsizlik devori qoidalari tunnel interfeysi, mijozlar hovuzi, shlyuz manzili va 53 port bilan cheklangan mahalliy kirish qoidalaridir. Har bir protokol uchun bittadan ikkita qoida yetarli:
sudo ufw allow in on tun0 proto udp from 10.90.0.0/24 to 10.90.0.1 port 53
sudo ufw allow in on tun0 proto tcp from 10.90.0.0/24 to 10.90.0.1 port 53
DNS UDP bilan birga TCP orqali ham ishlaydi, shuning uchun faqat UDP uchun qoida katta javoblarni vaqti-vaqti bilan ko'rinadigan tarzda ishdan chiqishiga qoldiradi. Bular ufw route ruxsatlar emas va ular tun0 bo'yicha keng ruxsatga aylanmasligi kerak. Tartib mazmun kabı muhim: tun0 manzilidan barcha kirishni tashlaydigan oldingi qoida baribir yutadi, yakuniy tashlash ostiga ruxsat qo'shish esa hech narsa yaratmaydi.
Agar shlyuz DNS endi dizaynning qismi bo'lsa, o'sha oldingi siyosatni ataylab qayta ko'rib chiqing va sababini yozib qo'ying.
Yuqori oqim yarmi alohida yo'l
So'rovlar shlyuzdan o'z manzili bilan yuqori oqim rezolveri tomon chiqadi, shuning uchun shlyuz marshruti va o'sha rezolverga nisbatan chiqish siyosati almashinuvga ruxsat berishi kerak. Bu mijozlarni tinglovchiga yetkazadigan qoidadan boshqa qoida va u boshqa alomat bilan ishdan chiqadi.
Javoblar ishlashi uchun cheklanmagan tunnel chiqishini qo'shmang; kuzatiladigan javoblarga bu kerak emas.
Variantni suring, so'ng uzatishni tekshiring
Server rezolverni mijozlarga surilgan variant bilan e'lon qilishi mumkin. Bu variant, operatsion tizim bajarishi shart bo'lgan ko'rsatma emas:
push "dhcp-option DNS 10.90.0.1"
Linux buyruq qatori mijozi o'z ulanish menejerining rezolver integratsiyasiga muhtoj bo'lishi mumkin, boshqariladigan qurilma esa yangilangan boshqaruv profiliga muhtoj bo'lishi mumkin. Ulangandan keyin mijozdagi faol rezolverni tasdiqlang, surish qo'llanildi deb taxmin qilish o'rniga. Ikki mexanizm bir vaqtda DNS o'rnatishga urinsa, miltillovchi hal qilish kabi ko'rinadigan poyga paydo bo'ladi.
Maqsad mijozning rezolver sozlamasi uchun bitta egadir va surish odatda o'sha ega bo'ladi faqat mijoz platformasi rozi bo'lganda.
Haqiqatan qurganingizni sinab ko'ring
Bitta xususiy to'liq malakali nomni va bitta ruxsat etilgan tashqi nomni to'g'ridan-to'g'ri tunnel manziliga, UDP va TCP orqali so'rang. So'ng ilovaning odatdagi qidiruv yo'li bilan takrorlang.
Agar to'g'ridan-to'g'ri so'rovlar ishlab, ilova hali ham ishlamasa, nosozlik serverda emas, uzatishda:
- Mijoz surilgan variantni hech qachon qo'llamadi.
- Keyinroq boshqa rezolver o'rnatildi va poygada yutdi.
- Ilova o'z rezolver kutubxonasidan yoki keshlangan javobdan foydalanadi.
Tasdiqlangan VPN yo'lidan tashqaridagi manba tinglovchidan umuman foydalana olmasligini tasdiqlab yakunlang. Muvaffaqiyatli hal qilish qaytargan manzilga huquq bermaydi, shuning uchun bu ikki savolni alohida saqlang.