WireGuard: wg-quick ichida ikki yarim marshrut va 0.0.0.0/0
Ikki /1 diapazoni /0 kabi bir xil manzillarni qamrab oladi, lekin wg-quick ularni boshqacha yo’naltiradi. Tahrirlashdan oldin siyosat qoidalari, belgilar va oxirgi nuqta yo’lini tekshiring.
Ikki /1 prefiksi bitta /0 kabi aynan bir xil IPv4 manzillarini qamrab oladi va bu tenglik faqat tengdoshning ruxsat etilgan prefikslar ro’yxati ichida amal qiladi. Sozlash vositasi qanday yo’naltirishni hal qilgan paytdan boshlab u amal qilishdan to’xtaydi, chunki Linux ichidagi wg-quick standart prefiksni arifmetika emas, alohida holat deb ko’radi. Maxsus tarmoq alohida jadval, ikki siyosat qoidasi, soket belgisi va yarim marshrutlar juftligi hech qachon olmaydigan teskari yo’l sozlamalarini o’rnatadi. Shuning uchun tahrirdan keyin proksi yoki brauzer ishlashdan to’xtasa, prefikslar o’zgarishning eng kam qiziqarli qismidir.
Prefikslar ro’yxati butun konfiguratsiya emas
AllowedIPs bir vaqtda ikki ish qiladi va ulardan faqat bittasi qamrovga tegishli. WireGuard uchun ro’yxat kriptokalt yo’naltirishdir: qaysi manzillar tengdosh tomon shifrlanishini va bu tengdosh qaysi manba manzillarini ishlata olishini belgilaydi. wg-quick uchun o’sha ro’yxat marshrut spesifikatsiyasi sifatida ham xizmat qiladi va u yaratadigan marshrut ro’yxat tasodifan qaysi tarmoqqa mos kelishiga bog’liq. Shuning uchun ikki xil ro’yxat shaklida bir xil qamrov bir xil host holati haqida hech narsa demaydi.
Standart konfiguratsiya bu qarorni sizning qo’lingizdan oladi, chunki Table sukut bo’yicha avtomatik va marshrutlar qayerga tushishini vosita o’zi tanlaydi. Boshqa tarmoq menejeri, distributiv o’rami yoki maxsus Table qiymati natijani yana o’zgartiradi, shuning uchun bitta host uchun yozilgan maslahat keyingisida noto’g’ri ko’rinishi mumkin.
Standart tarmoq marshrutdan tashqari nima qo’shadi
/0 yozuvi wg-quick vositasini o’zining standart marshrut yo’liga yuboradi: alohida marshrutlash jadvali standartni qabul qiladi, bitta siyosat qoidasi belgilanmagan trafikni u yerga yuboradi, ikkinchi qoida asosiy jadvalning aniqroq marshrutlarini vakolatli saqlaydi, interfeys esa o’z soketiga tarmoq qalqoni belgisini oladi. O’sha belgi — halqa qo’riqchisi. Tunnel trafigini tashuvchi shifrlangan datagrammalar belgi qo’yilgan holda chiqadi, shunda qolgan hamma narsani tunnelga yo’naltiruvchi qoida tunnelning o’z tashish paketlarini yutib yubormaydi.
Buning o’rniga /1 yozuvlari juftligi oddiy marshrut yo’lini tanlaydi. Konfiguratsiya qilingan jadvalga ikki marshrut tushadi va atrofdagi mexanizmlarning birortasi ko’rinmaydi, bu uning ortiqcha ekanidan emas, o’sha kod yo’liga hech qachon kirilmaganidan.
Ikki tartib qayerda ajraladi
Farq avval rekursiya sifatida ko’rinadi. Yarim marshrutlar asosiy jadvalda bo’lganda, tengdoshning o’z tashish manzili tunnel prefiksi ichiga tushadi, shuning uchun tunnelni tashishi kerak bo’lgan paket tunnel ichiga qaratilgan marshrutga mos keladi. Nimadir uni istisno qilishi kerak: joriy oxirgi nuqta uchun host marshruti, qo’lda qo’yilgan belgi yoki interfeysga xos qoida. Host marshruti oxirgi nuqta manzili o’zgarmaguncha ishlaydi, bu DNS ga asoslangan oxirgi nuqtalarda, aylanib yuruvchi mijozlarda va ko’p tengdoshli konfiguratsiyalarda sodir bo’ladi.
Ikkinchidan, belgilar haqida mulohaza yurituvchi har qanday narsa xatti-harakatini o’zgartiradi. Ulanishlarni mahalliy ravishda qayta yo’naltiruvchi shaffof proksi yangi soketlar yaratadi, ularning belgilari va manbalari asl mijoz oqimidan farq qiladi, standart tarmoq yaratadigan siyosat qoidalari esa o’sha oqimlarni ajratgan narsaning bir qismi edi. Proksining o’z chiquvchi ulanishini o’qish asl manzilga yetish mumkinligini tekshirishdan boshqa mashq.
Tahrirlashdan oldin qoidalar va belgilarni o’qing
Tunnel sog’lom bo’lganda joriy holatni yozib oling, so’ng o’zgarishdan keyin yana, va konfiguratsiya faylidan mulohaza yuritish o’rniga ikki dumpni solishtiring. Siyosat qoidalari, har bir jadval, interfeys belgisi va yozib olingan oxirgi nuqtalarni kiriting.
ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints
Agar chiqishning birinchi satri belgilanmagan trafik qoidasini yo’qotgan bo’lsa va maxsus jadval bo’sh bo’lsa, standart tarmoq ishlamayapti va hech qanday prefiks arifmetikasi uning ta’sirlarini qaytarmaydi. Ilgari belgi bo’lgan interfeysdagi nol belgi o’sha signal, bitta qiymatda ko’rinadi.
Chiqarishdan oldin tunnel yo’qotishini mashq qiling
Agar yarim marshrutli tartib ongli tanlov bo’lsa, u yetishmayotgan qismlarni aniq ta’minlashi kerak: manzil o’zgarishlariga bardosh beradigan oxirgi nuqta yo’li, tunnel yiqilganda ko’zlangan xatti-harakat va IPv6 uchun teng munosabat. Ularni uzilish paytida kashf qilish o’rniga talab sifatida yozing. So’ngra muvaffaqiyatsizlikni mashq qiling, chunki jismoniy yuqori kanalga indamay qaytadigan to’liq tunnel ishlashdan to’xtaganidan yomonroqdir.
sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1
Marshrut qidiruvi oxirgi nuqtani tunneldan o’tmasdan jismoniy interfeysdan hal qilishi kerak, interfeysni tushirish esa hostni dizayn va’da qilgan holatda qoldirishi kerak. Almashtirishdan keyin ishlaydigan proksi yaratilgan host holatining muhim bo’lganini isbotlaydi; halqadan saqlanish va o’chirilgan holatdagi xatti-harakat tahrirdan omon qolganini isbotlamaydi.