Uch WireGuard sakrashi umumiy manzilga ega bo'lmagan tarmoqqa yetib boradi, so'ng o'rta mashina tinglashi kerak bo'lgan portda javob berishni to'xtatadi. Oldingi tunnel hali ham ishlaydi, uzoq xost hali ham javob beradi va faqat o'rta serverning o'zi tashqaridan jim qoldi. Bu birikma chalkashtiradi, chunki u o'zi keltirib chiqargan: o'rta sakrash o'z marshrutlash jadvaliga bo'ysunadi va jadval uning javoblarini noto'g'ri tomonga yuboradi.

O'rta quti bilan gaplashmaguningizcha ishlaydigan zanjir

Misol zanjirni oling: A mijozi UDP 500 da B serveriga yetib boradi va B UDP 500 da C serveriga qarab davom etadi. C trafikni faqat o'zining yagona sherigi manzilidan qabul qiladi, bu uni bargga aylantiradi va xatti-harakatini sodda saqlaydi. B barg emas va bu nosozlikdagi barcha qiziqarli narsa aynan shu yerda sodir bo'ladi.

Bu farq muhim, chunki barg va o'rta rollar qarama-qarshi tomonga tortadi. Barg hamma narsani bitta tunnelga oqibatsiz yuborishi mumkin, chunki unga boshqa hech narsa bog'liq emas. O'rta sakrash bir vaqtning o'zida mijozlar uchun oxirgi nuqta va uzoq tomonga mijozdir, va bu ikki ish turli marshrutlashni xohlaydi.

Javob nima uchun tunneldan chiqadi

B da C ga qaragan interfeys tegishli standart marshrut bilan birga AllowedIPs = 0.0.0.0/0 ni olib yuradi. Shuning uchun B yaratgan har bir paket o'sha tunnelga kiradi, agar aniqroq narsa ustunlik olmasa.

A dan B ga yo'naltirilgan paket keladi va qabul qilinadi, chunki B manzil va mahalliy yetkazib berish birinchi bo'lib sodir bo'ladi. Javob A ning umumiy manziliga qaratilgan butunlay yangi mahalliy yaratilgan paket va bu manzil tunneldagi standart marshrutga to'g'ri keladi. C uni qabul qiladi, bu manzilga ega emas va uni tashlab yuboradi.

Alomat xavfsizlik devori muammosi yoki kalit mos kelmasligi kabi o'qiladi va bu yerda ikkalasi ham to'g'ri emas. C tomonga tunneldagi ushlash javoblar noto'g'ri tomonga ketayotganini ko'rsatadi. O'sha bitta kuzatuv har qanday miqdordagi konfiguratsiyani o'qishdan ko'ra ko'proq vaqt tejaydi, shuning uchun kalitlarni almashtirishni boshlashdan oldin uni yozib qo'ying. Ushlashni ko'rmagan har kim tunnelning o'zi buzilgan deb o'ylaydi.

Tor tuzatish: manba portiga mos keladigan siyosat qoidalari

B ning tinglaydigan soketidan javoblar manba port 500 bilan chiqadi. Siyosat qoidasi bunga mos kelishi va bu paketlarni oddiy jadvalga qaytarishi mumkin:

ip rule add sport 500 table main priority 100
ip rule add sport 8080 table main priority 101

Siyosat qoidalari ustuvorlik tartibida ko'rib chiqiladi va asosiy jadval 32766 da turadi, shuning uchun 100 dagi qoida tunnelning standart marshruti gapiradigan bo'lishidan oldin so'raladi. Tashqaridan yetib borish mumkin bo'lib qolishi kerak bo'lgan har bir port uchun bitta yozuv qo'shing va boshqa hech narsa yo'q, shunda yo'naltirilgan trafik o'zi uchun qurilgan tunneldan foydalanishda davom etadi.

Bu hiylaning chegarasini biling. sport tanlagichi mahalliy yaratilgan paketlarga mos keladi, bu aynan javob holatini qamrab oladi va B faqat boshqa birov uchun yo'naltiradigan trafikni ataylab qamrab olmaydi. B orqasida joylashtirilgan xizmat hali ham o'z javobiga muhtoj va buning aksini da'vo qilish birinchi xizmat uchun ishlaydigan va ikkinchisi uchun muvaffaqiyatsiz bo'ladigan tuzatish beradi.

Qoidaga egasini bering

Buyruq satriga yozilgan qoida interfeys keyingi marta qayta qurilganda yo'qoladi. WireGuard sozlamasida uni interfeys yaratiladigan va olib tashlanadigan joyga qo'ying:

PostUp = ip rule add sport 500 table main priority 100
PostDown = ip rule del sport 500 table main priority 100

Agar interfeysga NetworkManager, tarqatish ilgagi yoki konteyner kirish nuqtasi egalik qilsa, juftlik qo'lda tahrirlangan faylga emas, o'sha egaga tegishli. Qayta ulangandan keyin amaldagi qoidalarni tekshiring, faqat birinchi ishga tushirishdan keyin emas, chunki birinchi ishga tushirish har doim ishlaydigan holat.

Alternativalarni halol taqqoslang

Manba port qoidasi to'rtta chiqish yo'lidan biri va ularning eng tori. Uning tunnel siyosatiga umuman tegmaslik afzalligi bor, shuning uchun u keyingi o'zgarishlardan omon qoladi. Tor tuzatishlar ham amal qilishni to'xtatganda baland ovozda muvaffaqiyatsiz bo'ladi, keng istisno esa sababi yo'qolgandan ancha keyin ham jimgina ishlashda davom etadi. Ikki yildan keyin qutiga boshqa birov egalik qilganda bu farq nafosatdan muhimroq.

ApproachWhat it costsWhere it breaks
Source-port policy ruleOne rule per exposed portAnything B forwards rather than originates
Destination exception routeA route pinned to specific client addressesClients whose address changes
Stop full-tunnelling on BLoses the catch-all path toward CDesigns that depend on it
Split into two tunnelsMore interfaces and more policyNothing, at the cost of complexity

Tanlaganingizdan keyin ikkala chetidan tekshiring. A dan B portiga ulanish boshlang va uni biroz band tuting. B da yadroni ip route get <address-of-A> sport 500 kabi narsa bilan javob yo'lini asoslashga majbur qiling va u tunnelni emas, WAN interfeysini nomlashini tasdiqlang. Shundan keyin C orqasidagi narsa hali ham zanjir orqali javob berishini tekshiring, bu istisno chetlab o'tishga aylanmasdan tor qolganini isbotlaydi. Nihoyat, portlarni dizayn eslatmalariga yozib qo'ying, aks holda keyingi operator buni boshqa xizmatda qayta kashf etadi.

O'xshash maqolalar