Ikki yashil ulanish belgisi taqqoslashga o'xshaydi va odatda tasodif bo'ladi. Agar sinov so'rovi ikkala tunneldan birortasini ishlata olgan bo'lsa, natija eng yaxshi holatda ulardan birini, eng yomon holatda esa hech birini tasvirlaydi. Har bir kuzatuvga tarmoq konteksti, mo'ljallangan manzil va sinov boshlanishidan oldin yozilgan kutish bering. O'zingiz boshqaradigan Linux mashinasida nomlangan tarmoq nomlar fazolari bu ajratishni sotib olishning eng arzon yo'lidir.

Ikki yashil chiroq taqqoslash emas

Nomlar fazosi marshrutlash jadvallarini, interfeyslarni va tarmoq stekining holatini ajratadi, shuning uchun birining ichida boshlangan so'rov boshqasining tunnelini jimgina qarzga olmaydi. U ajratmaydigan narsa protsessor, jismoniy yuqori kanal yoki xostda ishlaydigan nomlarni hal qilish xizmatidir. Aynan shu oxirgi bo'shliqda bu sinovlarning ko'pchiligi hech kim sezmay turib muvaffaqiyatsizlikka uchraydi. Nomlar fazosidan chiqib, xost hal qiluvchisidan so'raydigan qidiruv sinovdagi tunnellga hech qanday aloqasi bo'lmagan javob qaytaradi.

Bu tartib avvaldan tayyorlangan va tasdiqlangan ikkita sinov nomlar fazosi, ishlaydigan tashqi ulanish va qo'llab-quvvatlanadigan mijozlarni nazarda tutadi. U hech narsa yaratmaydi, hech narsani qayd etmaydi va hech qanday konfiguratsiyani almashtirmaydi. Mijoz to'liq ish stoli seansiga muhtoj bo'lganda yoki undan tashqarida ishlashdan bosh tortganda alohida virtual mashinalar halol tanlov bo'lib qoladi.

Kutishni birinchi ishga tushirishdan oldin qotirib qo'ying

Har bir kontekst uchun muvaffaqiyat qanday ko'rinishini hal qiling: hal qiluvchi, xizmat nomi, kutilayotgan manzil va tunnell uzilganda talab qilinadigan xatti-harakat. Bu rejalashtirilgan qiymatlarni o'z ustunida saqlang, chunki reja va kuzatuvni aralashtirgan yozuv vaqt tamg'asi bilan bezatilgan to'qimadir. Quyidagi tekshiruv ro'yxati yozuvga kerak bo'lgan shakldir va birinchi ulanishdan oldin har bir satr to'ldirilishi kerak.

TunnelOwnerClient interface inside the namespaceProof commandRequired on disconnect
vpn-athe identity that owns profile A, recorded by nameits own tun device, never the host'sip -n vpn-a -4 route get 10.55.10.20traffic stops; no host-side fallback
vpn-ba separate owner, even when both run on one boxits own tun device in its own namespaceip -n vpn-b -4 route get 10.55.20.20verified separately, never inferred from A

Hal qiluvchi simlari o'sha yozuvda o'z satriga loyiq, chunki yolg'on gapirish ehtimoli eng yuqori maydon shu. Nomlar fazosiga bog'langan fayllar, masalan /etc/netns/vpn-a/resolv.conf buyruq nomlar fazosi ichida bajarilganda o'z odatiy yo'llarida ko'rinadi, buni iproute2 ning nomlar fazolari bo'yicha ma'lumotnomasi tushuntiradi, ammo nom xizmatini almashtirish konfiguratsiyasi va u ishga tushiradigan har qanday mahalliy hal qiluvchi hali ham qidiruvni xostga qaytarib tortishi mumkin.

Bir vaqtda bitta tunnell, ikkinchisi uzilgan

B pastda turganda A ni uning mavjud egasi orqali ulang, so'ngra boshqaruv kontekstidan siyosat, marshrutlar va tanlangan yo'lni ko'rib chiqing. Quyidagi buyruqlardan uchtasi holatni o'qiydi; faqat oxirgisi nom xizmati bilan bog'lanadi va ularning hech biri ilova so'rovini yubormaydi.

sudo ip -n vpn-a -4 rule show
sudo ip -n vpn-a -4 route show table all
sudo ip -n vpn-a -4 route get 10.55.10.20
sudo ip netns exec vpn-a getent ahostsv4 svc-a.lab.internal

Marshrut qidiruvi manzil haqidagi faraziy savolga javob beradi, shuning uchun xizmat trafikni qabul qilishini ko'rsata olmaydi. Bu ikki turdagi dalillarni alohida ustunlarda saqlang, chunki rad etilgan ulanish yonidagi sog'lom marshrut haqiqiy va odatiy natijadir. So'ngra haqiqiy ilova bilan bitta zararsiz ruxsat etilgan so'rov yuboring, u A kontekstida o'zining odatiy imtiyozsiz foydalanuvchisi sifatida ishga tushiriladi, sertifikat tekshiruvi va ilova autentifikatsiyasi buzilmagan holda, va natijani xizmat ko'rgan manba manzili bilan birga qayd eting. A ni uning egasi orqali uzib qo'ying va B uchun butun boshlang'ich chiziqni takrorlang, qilgan har qanday konfiguratsiya o'zgarishini belgilang, aks holda ikkala boshlang'ich chiziq taqqoslanadigan bo'lmay qoladi.

Ikkisi ham tepada, so'ngra bir vaqtda bittasi pastda

Barqaror holat oson qism. Ikkala tunnell ulanganda har bir kontekstning qidiruvi va ilova so'rovini takrorlang, so'ngra bitta tunnellni uzib, ikkinchisini tekshiring. Ulanish tartibining o'zi savol bo'lganda teskari tartibda qayta ulanib oling.

sudo ip netns exec vpn-a tcpdump -ni any port 443 -c 5
sudo ip netns exec vpn-b getent ahostsv4 svc-b.lab.internal
sudo ip -n vpn-b -4 route get 10.55.20.20

Qamrab olish ilova natijasi hal qila olmaydigan bahslarni hal qiladi: so'rov siz kutgan interfeysdan chiqdimi yoki butunlay boshqa narsadan chiqdimi, shuni ko'rsatadi. Har bir o'tish uchun egasining harakatini, vaqt tamg'asini, marshrut natijasini, nom natijasini va ilova natijasini qayd eting. So'ngra zarar ko'rgan nomlar fazosi ichida xavfsiz yopilish talabini tekshiring, chunki izolyatsiya o'chirish tugmasi emas. Nomlar fazosi ikkita tunnellni alohida tutadi; uning profili trafik to'xtashi kerakligini aytsa, u hech biriga trafik tashishdan to'sqinlik qilmaydi.

Bu yozuv nimalarni da'vo qila oladi va nimalarni qila olmaydi

Bitta o'tish bu tuzilma uchun, bu xostda, o'sha vaqtda o'sha kuzatuvlarni isbotlaydi. U bitta ish stoli marshrutlash jadvalini baham ko'rgan ikkita mijoz haqida hech narsa demaydi, ikkala tunnell yuk ko'targanda o'tkazuvchanlik haqida ham hech narsa demaydi. Bu alohida sinovlari bor alohida savollar va taqqoslash har bir satrga biriktirilgan kontekst qanchalik yaxshi bo'lsa, shunchalik yaxshi.

Muvaffaqiyatsizliklarni yozuvda muvaffaqiyatlar yonida saqlang, o'sha vaqtda qaysi tunnell tepada bo'lganini belgilang. O'lchov paytidagi holatni yashirgan toza sahifa uni ko'rsatadigan xunuk sahifadan yomonroqdir. Yozuvni keyin qayta ishlatishga yaroqli qiladigan narsa kontekst, ball emas.

Bitta mashinadagi ikkita tunnellni halol taqqoslash mumkin, ammo faqat siz haqiqatan boshqargan kontekstlar soni ichida. Bundan ortig'i yonida yashil belgi bor orzu xolos.

O'xshash maqolalar