Router VPN orqali bitta qurilmani o'tkazish uchun tugma emas, uchta qoida kerak
Router VPN orqali bitta qurilmani o'tkazish bu siyosat marshrutlash, katakcha emas: belgilangan jadval, cheklangan NAT qoidasi, hamda qo'llanmalar o'tkazib yuboradigan DNS, IPv6 va LAN yo'llari.
Router VPN da har bir qurilma uchun kalit yo'q; siz izlayotgan tugma sizning nomingizdan siyosat marshrutlash qoidalarini yozadigan qisqa yo'ldir. Bitta noutbuk, bitta port oralig'i, bitta manzillar ro'yxati yoki bitta LAN segmenti tunnelni ishlatishi kerak bo'lib, qolgan hamma narsa WAN da qolsa, siz funksiyani yoqmayapsiz, siyosat marshrutini quryapsiz. Ishning uchta harakatlanuvchi qismi bor va har biri boshqacha ishdan chiqadi: marshrutsiz belgilangan jadval sukunatga o'xshaydi, noto'g'ri zanjirga qo'yilgan belgi hech narsa bo'lmagandek ko'rinadi, va yetishmayotgan NAT qoidasi ulanadigan, lekin hech narsa tashimaydigan tunnelga o'xshaydi. Yana ikki qism mangle qoidasida hech qachon ko'rinmaganligi uchun yo'qoladi, ular DNS va IPv6.
Afsona: tunnel bu klient sozlamasi
Router tomonidagi VPN klienti bitta qo'pol ishni yaxshi qiladi: u 0.0.0.0/0 ni asosiy marshrutlash jadvaliga qo'yadi va tunnelga yo'naltiradi. WireGuard buni AllowedIPs dan oladi, OpenVPN serverdan itarib yuborilgan redirect-gateway dan oladi, va ikkalasi ham router orqasidagi har bir xostning yo'lini o'zgartiradi. AllowedIPs ni toraytirish yoki route-nopull qo'shish klient nima o'rnatishini o'zgartiradi. Bu o'rnatish kimga tegishli ekanini o'zgartirmaydi, chunki klient hech qachon qurilmalarni ko'rmaydi. U faqat paketlarni ko'radi.
Manba yoki manzil bo'yicha tanlash marshrutlash qarori, shuning uchun u routerning siyosat qatlamiga tegishli: RouterOS da mangle qoidasi va ikkinchi jadval, OpenWrt yoki DD-WRT da MARK va ip rule, yoki pfSense da darvozasi tunnel bo'lgan firewall qoidasi. Netgate ning WireGuard klienti retsepti taxmin qilishdan oldin o'qish kerak bo'lgan narsa, chunki bu platformada qoidaning darvozasi, interfeys tayinlanishi va chiquvchi NAT yozuvi bitta klient tunnelni ishlatishidan oldin kelishishi kerak.
Afsonaning ikkinchi yarmi ikkinchi router. Boshqa quti sotib olish yoki qurilmani mehmon SSID ga ko'chirish ko'pincha ishlaydi, sababi apparat emas: bu qurilmani o'z subnetiga qo'yadi, bu esa firmware allaqachon tushunadigan manba tanlagichni beradi. Agar o'sha segmentni o'z routeringizda belgilay olsangiz, qo'shimcha quti sizda bo'lmagan muammoni hal qiladi.
Birinchi qism: standart marshrut bo'lmagan tunnel
RouterOS da klientni standart marshrutsiz qo'shing va tunnelga o'z jadvalini bering. Birinchi marshrut belgilangan standart; ikkinchisi muvaffaqiyatsizlikning yarmi.
/ip route add dst-address=0.0.0.0/0 gateway=VPN_GATEWAY_IP routing-mark=vpn distance=1
/ip route add dst-address=0.0.0.0/0 type=unreachable routing-mark=vpn distance=2
Yetib bo'lmaydigan marshrut belgilangan jadval asosiy jadvaldagi istisnolar ro'yxatini nima uchun yengishining sababi. Tunnel yiqilganda belgilangan paketlar jimgina WAN ga qaytish o'rniga darhol yetib bo'lmaydigan javob oladi, shuning uchun nosozlik bir soatdan keyin tekshiriladigan geolokatsiya sahifasida emas, ilova xato xabarida ko'rinadi.
RouterOS 7 6.x birga tutgan narsani ajratadi: jadvalni /routing table add name=vpn fib bilan e'lon qilasiz, keyin marshrutda va mangle qoidasida nomi bilan havola qilasiz. Jadvalni aniqlamasdan routing-mark yozadigan 6.x bo'lagi toza yuklanadi va hech narsaga mos kelmaydi. Yana bir klassika ikki 0.0.0.0/1 yarmi yoki bitta jadvalda bir xil masofadagi ikki standart: yadro birini tanlaydi va qayta yuklashdan keyin xatti-harakat o'zgarishi mumkin.
Ikkinchi qism: marshrut qidirishdan oldin belgilang
Qaysi paketlar o'sha jadvalga kirishini tanlagich hal qiladi. RouterOS odatda manzil siyosati uchun manzillar ro'yxatidan yoki qurilma siyosati uchun manba manzilidan boshlaydi:
/ip firewall mangle add chain=prerouting src-address=192.168.88.50 action=mark-routing new-routing-mark=vpn
/ip firewall mangle add chain=prerouting dst-address-list=via-vpn action=mark-routing new-routing-mark=vpn
/ip firewall address-list add list=via-vpn address=203.0.113.10
Linux firmware ham netfilter belgisi va belgilangan paketlarni siz to'ldirgan jadvalga yo'naltiruvchi qoida bilan xuddi shunday qiladi:
iptables -t mangle -A PREROUTING -p tcp --dport 27000:27050 -j MARK --set-mark 0x200
ip route add default dev tun0 table 100
ip rule add fwmark 0x200 table 100
Zanjir uslub tanlovi emas. Paket FORWARD ga yetganida marshrut qidiruvi allaqachon bo'lib bo'lgan, shuning uchun u yerdagi MARK yoki DROP faqat qayta yozishi yoki tashlashi mumkin. Belgi yuboriladigan trafik uchun PREROUTING ga, router o'zi yaratadigan trafik uchun OUTPUT ga tushishi kerak, routerning DNS, NTP va yangilanish tekshiruvlari o'sha yerda yashaydi. O'sha chiqish yo'li to'liq tunnel qilingan sozlama oqib chiqish testida ham ISP resolveridan javob berishining odatiy sababi.
Qurilma siyosatiga sirg'alib ketmaydigan moslik kerak. Manzilni DHCP da band qiling yoki maxsus segment uchun interfeysni moslang; keyin boshqa qurilmaga o'tadigan manzil jimgina noto'g'ri klientga tunnelni qo'llaydi. O'z subnetiga ega har bir SSID uchun ko'prik o'sha g'oyaning yanada chidamli versiyasi va IPv6 qoidalariga ham yashash joyi beradi.
Uchinchi qism: NAT, DNS va LAN istisnosi
Tunneldan chiqadigan trafikka narigi tomon javob beradigan manba manzili kerak. Tarjimani tunnel interfeysi bilan cheklang: RouterOS da out-interface=VPN_NAME, Linux da -o tun0, pfSense da mos chiquvchi NAT yozuvi. Bu cheklovsiz masquerade qoidasi siz qo'yib yubormoqchi bo'lgan trafikni ham qayta yozadi, alomati esa tunnelsiz qurilma o'zining ommaviy manzilini yo'qotishi.
LAN istisnosi tunnelning o'zidan ko'ra ko'proq qo'llab-quvvatlash mavzularini keltirib chiqaradi. Agar belgilangan jadvalda faqat standart marshrut bo'lsa, tanlangan qurilmadan printer yoki NAS manzili o'sha standartga mos tushadi va tunnelda g'oyib bo'ladi. O'sha jadvalga LAN marshrutini qo'shing yoki tanlagichda mahalliy subnetni chiqarib tashlang; ikkalasi ham ishlaydi, keyinroq VLAN qo'shganingizda chiqarib tashlashni to'g'ri saqlash osonroq.
DNS alohida yo'l oladi. Router yuboradigan so'rovlar routerdan kelib chiqadi va OUTPUT ga bo'ysunadi, yuborilgan belgiga emas, shuning uchun to'liq tunnel qilingan noutbuk ham ISP orqali nomlarni hal qila oladi. Klientlarni tunnel orqali yetib boriladigan resolverni ko'rsating yoki routerning o'z port-53 trafigini belgilang, keyin javob veb-so'rov bilan birga yo'l bosdi deb o'ylash o'rniga hal qilingan manzilni tekshiring.
Qoida mos kelganda, lekin ilova hali ham WAN dan foydalansa
Manzil ro'yxatlari tez eskiradi. Nom ro'yxatda yo'q manzilga hal qilinadi, shuning uchun so'rov WAN ga chiqadi, ro'yxatdagi manzilga qilgan har bir testingiz ishlagan bo'lsa ham. Ro'yxatni klient ishlatadigan aynan o'sha resolverdan yangilang va bitta qurilmadan butun trafikni haqiqatan xohlasangiz, manbaga asoslangan tanlagichni afzal ko'ring.
IPv6 bu jimgina aylanib o'tish yo'li. Qurilmaning o'z standart marshruti va o'z qoidalar to'plami bo'lgan ikkinchi manzillar oilasi bor, faqat IPv4 manziliga moslash esa siyosatning yarmi. Xuddi shu tanlagichni ip6tables yoki nftables ekvivalentiga qo'llang, yoki o'sha segmentda IPv6 ni tasodifan emas, ataylab o'chiring.
O'rnatilgan ulanishlar ham muhim. O'zgarishdan oldin yaratilgan conntrack yozuvi muddati tugaguncha eski yo'ldan boradi, shuning uchun tahrirlash paytida ochiq qolgan brauzer hech qachon qo'llanilmagan qoidaga o'xshab ko'rinadi. Siyosatni baholashdan oldin yangi ulanish oching yoki holatni tozalang.
Ikki qurilma va qayta yuklash bilan tekshiring
Tunnelda bo'lishi kerak bo'lgan qurilmani va bo'lmasligi kerak bo'lganini sinab ko'ring, tezlik raqami o'rniga ikkinchi hopni solishtiring. Har biridan traceroute ikkinchi hopda tunnel darvozasini yoki ISP darvozasini ko'rsatadi; ikkalasi bir xil ko'rinsa, belgi yoki jadval qoida aytganini qilmayapti. Test uchun yangi ulanishlardan foydalaning.
Keyin qayta yuklang. Ishlab turgan siyosat buziladigan joy yuklanish tartibi, chunki yetib bo'lmaydigan marshrut o'rnatilishidan oldin klient ishlab turishi kerak, eski qoidalar to'plamini tiklaydigan saqlangan surat esa jadvalingizni ustidan yozadi. Har bir qoida saqlangan konfiguratsiyada ekanini va belgilangan standart yuklanishdan keyin mavjudligini faqat kiritgandan keyin emas, tekshiring.
Agar biror narsa ishlamasa, avval belgini olib tashlab oddiy trafik qaytishini ko'ring, keyin jadvalni olib tashlang. Bu tartib marshrutlash muammosini yoki firewall muammosini quvayotganingizni aytadi va ishni tugatguningizcha uyga ishlaydigan printer qoldiradi.