Interfeys siz xohlagan nomlar fazosida ro'yxatga olingan, ilova unga bog'langan, shunga qaramay tunnel trafigi hech qachon ko'rinmaydi. Bu Linux yadrosidagi WireGuard qurilmasining belgisi: u bir nomlar fazosida yaratilib, boshqasiga ko'chirilgan; interfeys ko'chdi, lekin uning shifrlangan UDP soketi ko'chmadi. Ichki trafik ahamiyat kasb etishidan oldin ikkalasi ham to'g'ri joyda bo'lishi kerak. Bitta o'rniga ikkita kontekstga qarash kerakligini bilganingizda tekshiruv tez bo'ladi.

Alomat: to'g'ri nomlar fazosi, ammo paket yo'q

Nomlar fazosi ichida tunnel sog'lom ko'rinadi. Qurilma mavjud, manzillar tayinlangan va peer konfiguratsiyasi bor. Tashqarida kutilgan UDP almashinuvi siz kuzatayotgan interfeysda hech qachon ko'rinmaydi va qarshi tomon qo'l berib ko'rishish bo'lmaganini xabar qiladi.

Sababi ilovaning ichki paketlari ko'chirilgan qurilmaga yetib boradi va qurilma ularni boshqa tarmoq kontekstiga tegishli soket orqali yuborishga urinadi. U ishlatadigan pastki marshrut va unga tegishli har bir xavfsizlik devori qoidasi qurilma yaratilgan nomlar fazosidagilardir.

Bu ko'chirishdagi nuqson ham, peerning noto'g'ri konfiguratsiyasi ham emas. Yadro amalga oshirilishi shunday ishlaydi va WireGuard uchun nomlar fazosi hujjatlari yaratish qoidasini to'g'ridan-to'g'ri bayon qiladi.

Soketning tug'ilgan joyi nima uchun bor

WireGuard qurilmasi shifrlangan transporti uchun bitta UDP soketga ega va bu soket qurilma yaratiladigan nomlar fazosida ochiladi. Interfeysni bog'lanish buyrug'i bilan ko'chirish ko'rinadigan qurilmani ko'chiradi, ammo transportni boshlangan joyda qoldiradi. Shunda ikki obyektning egalari boshqacha bo'ladi.

Natijani o'tkazib yuborish oson, chunki ikki yarmi turli joylarda tekshiriladi. Ichki marshrut ilova ishlaydigan nomlar fazosida hal qilinadi, tashqi marshrut esa soket yashaydigan joyda hal qilinadi. Faqat bittasini tekshirish ishonchli, ammo noto'g'ri xulosa beradi. Ikkalasini tekshirish odatda tekshiruvni bir o'tishda tugatadi.

Soket kerakli joyda uni yarating

Yechim qurilmani tashqarida yaratib ko'chirish o'rniga maqsad nomlar fazosi ichida yaratishdir. Tasdiqlangan nomlar fazosi allaqachon bor va nom ishlatilmayapti deb faraz qilsak:

ip netns exec vpn-apps ip link add wg-demo type wireguard
ip netns exec vpn-apps wg show

Endi interfeys ham, uning soketi ham shu kontekstga tegishli, shuning uchun pastki marshrut va amaldagi filtrlash qoidalari o'sha yerda sozlanganlardir. Agar dizayn aniq tomonni boshqa joyda talab qilsa, avval asosiy interfeysni nomlar fazosiga joylashtiring, keyin tunnelni yarating. Tartib dizaynning qismi, amalga oshirish tafsiloti emas.

Ularni tarmoq boshqaruvi buyruqlari deb biling, retsept emas. Ular qurilma yaratadi va holatni ko'rsatadi; kalitlar, peerlar, manzillar va marshrutlar baribir tasdiqlangan konfiguratsiyadan kelishi kerak va mavjud ishlab chiqarish interfeysini hech qachon misolda almashtirmaslik kerak.

Yo'lning ikki tomonini o'qing

Qurilma joyida bo'lgach, ikki qarorni alohida tekshiring. Ilova kontekstidan ichki qidiruvdan boshlang, so'ng soketga ega kontekstdan tashqi yo'lni tekshiring:

ip netns exec vpn-apps ip route get 10.30.0.9
ip netns exec vpn-apps wg show
tcpdump -ni any udp port 51820

Agar ichki qidiruv tunnel orqali hal bo'lsa va tashqi qamrov shifrlangan almashinuvni ko'rsatsa, ikki yarmi mos keladi. Agar qamrov bo'sh bo'lsa, soket hali boshqa joyda, yoki uning nomlar fazosidagi pastki marshrut oxirgi nuqtaga yetmaydi.

Yana bir tekshiruv yozuvga tegishli: qayta ishga tushirilgandan keyin qurilma qanday yaratiladi. Interfeysni boshqa yaratish konteksti bilan qayta yaratadigan menejer soketning tug'ilgan joyini o'zgartiradi. Bir marta ishlagan qo'lda ko'chirish boshqariladigan yo'l haqida dalil emas.

O'xshash maqolalar