Ikki dizayn, bitta HTTPS ilovasi va paket har birida boshqa yo'lni bosib o'tadi. Portni yo'naltirish paket qayerga yetkazilishini o'zgartiradi va qolganini o'z holicha qoldiradi. VPN avval o'sha paketni boshqa paket ichida olib yuradi, shuning uchun ilovaning tinglovchisi boshqa manba va kichikroq eng katta yukni ko'radi. Odamlar bahslashayotgan shifrlash ikkala holatda ham mavjud, chunki ilova hali ham HTTPS; farq shundaki, kim ulanish ochishi mumkin va oradagi tarmoq nimani kuzatishi mumkin. Bu farq amaliy savollarning ko'pini hal qiladi.

DNAT qoidasi manzilni qayta yozadi va shu yerda to'xtaydi

Linux darvozasida xizmatni e'lon qilish nat jadvalining PREROUTING zanjiridagi qoida yoki nftables'dagi uning ekvivalenti degani. Qoida ommaviy manzil va portga mos keladi, so'ng manzilni ilovaning xususiy manziliga qayta yozadi. Manba manzili, manba porti va yuk tegilmagan holda qoladi, conntrack esa xaritalashni yozib oladi, shunda javoblar chiqishda qayta yoziladi. Bu xatti-harakat RFC 3022 da tasvirlangan an'anaviy manzil tarjimasi modelidir.

sudo iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 443 \
  -j DNAT --to-destination 10.20.30.40:443
sudo iptables -t nat -L PREROUTING -n -v
sudo conntrack -L -p tcp --dport 443

Ilovaning tinglovchisi ulanish tarjima orqali kelganini hech qachon bilmaydi. U mijozning haqiqiy manba manzilini ko'radi, bu kirish jurnallari va tezlik cheklovlari uchun foydali, va xususiy manzilga javob beradi, chunki conntrack xaritalashni teskari aylantiradi. Bu yo'lda hech narsa shifrni ochmaydi yoki qayta shifrlamaydi: TLS hali ham mijoz va ilovaning o'z sertifikati o'rtasida ishlaydi.

Qoida keyinchalik uchraydigan nosozlik usullarini ham belgilaydi. Agar darvoza yo'naltirsa, lekin ilova xostining mijozga qaytish yo'li bo'lmasa, javoblar noto'g'ri manba bilan chiqadi va qo'l berib ko'rishish to'xtaydi. Agar ikkinchi qoida birinchi mos kelsa, tartib natijani hal qiladi va iptables -t nat -L -n -v qaysi qoida paketni olganini isbotlovchi hisoblagichlarni ko'rsatadi.

Tunnel paketni tinglovchi ko'rmasidan oldin o'raydi

VPN ilovani umuman e'lon qilmaydi. Mijoz darvozaning ommaviy manziliga yo'naltirilgan tashqi paket quradi, ichidagi paketni uning ichida shifrlaydi, darvoza esa shifrni ochib, ichki paketni xususiy manzilga yo'naltiradi. WireGuard'da tashqi tashish UDP, odatda yuqori portda; OpenVPN TCP 443 ustida bo'lsa, tashqi paket yo'lni kuzatayotgan har qanday narsaga TLS kabi ko'rinadi.

Tunnel ichida ichki paket xususiy manzillarni saqlaydi: mijozning tunnel manzili, aytaylik 10.8.0.6, va ilova 10.20.30.40 da. Shuning uchun tinglovchi tunnel hovuzidan manba ko'radi va har bir mijoz o'sha darvozani keyingi sakrash sifatida bo'lishadi. VPN orqasidagi kirish jurnallari ko'pincha foydalanuvchi o'rniga darvozani ko'rsatadi, aynan shu sababdan, agar darvoza asl manbani saqlamasa.

O'rash sarlavha joyini sarflaydi va bu o'lchanadigan natijaga ega bo'lgan yagona mexanizm darajasidagi farq. Tashqi IP sarlavhasi va UDP va WireGuard'ning o'z sarlavhasi yo'lning MTU sig'dan yeydi, shuning uchun katta paketlarni bo'lish kerak yoki ichki TCP stek o'z MSS ini cheklashi kerak. Yo'naltirilgan yo'lda ishlaydigan uzatish, oraliq qurilma kichikroq MTU ni bildiruvchi ICMP ni tashlab yuborsa, tunnelda to'xtab qolishi mumkin.

ip route get 10.20.30.40
ping -M do -s 1400 10.20.30.40
sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
  -j TCPMSS --clamp-mss-to-pmtu

Oshkor bo'lish kirishda hal qilinadi, shifr bilan emas

Ikkala dizayn ham bitta TLS tinglovchisida tugaydi, shuning uchun ikkalasi ham bir xil sertifikat, bir xil protokol versiyalari va bir xil ilova kirishini meros oladi. O'zgaradigan narsa - kim qo'l berib ko'rishishni boshlashga haqli. Ommaviy yo'naltirishda 203.0.113.10:443 ga yetgan har qanday xost, sizning ilovangiz avtorizatsiyasi ko'rilishidan oldin ham TCP qo'l berib ko'rishishi va TLS ClientHello oladi. Faqat tunnel orqali kirishda tinglovchiga faqat darvoza tunnelga yo'naltiradigan manzillardan yetish mumkin, begona odamning SYN i esa darvoza siyosatida o'ladi.

Bu farq yetib borish haqida, maxfiylik haqida emas. Yo'naltirilgan HTTPS xizmati oddiy matn emas va VPN ilova autentifikatsiyasi zaruratini yo'q qilmaydi: tunnelga qabul qilish qurilma bu tarmoqqa paket yubora oladimi-yo'qmi degan savolga javob beradi, fayl ilovasi esa foydalanuvchi hujjatni o'qiy oladimi-yo'qmi degan savolga. Ikkalasini aralashtirish - jamoalar butun LAN ni beradigan VPN va bitta umumiy parolli ilovaga kelishining yo'li.

Tinglovchi va siyosatni alohida tekshiring, chunki ularning har biri siz o'ylagandan kengroq bo'lishi mumkin:

sudo ss -ltnp 'sport = :443'
sudo nft list ruleset
openssl s_client -connect 203.0.113.10:443 -servername files.example.com </dev/null

Agar ss tinglovchining 0.0.0.0 ga bog'langanini ko'rsatsa, ilovaga marshrutlash va xavfsizlik devori siyosati ruxsat bergan har qanday joydan yetish mumkin, yo'naltirish esa kirish yo'llaridan biri xolos. Xususiy manzilga bog'lash yoki xavfsizlik devorida manba diapazonini cheklash VPN tanlashdan alohida qaror va oshkor bo'lishni haqiqatda kamaytiradigan qaror shu.

Yo'lni o'lchang, yorliqni emas

Kimdir yo'naltirish tezroq deb da'vo qilganda, halol taqqoslash qolgan hamma narsani o'zgarmas saqlaydi: bir xil mijoz, bir xil kirish tarmog'i, bir xil fayl, bir xil TLS konfiguratsiyasi, bir xil ilova xosti. Har bir yo'lda uzatishni ikki marta ishga tushiring va umumiy vaqt, nosozliklar soni va javob berishni yozib oling, aloqasiz tezlik testining natijasini emas.

curl -sS -o /dev/null -w '%{time_connect} %{time_appconnect} %{time_total}\n' \
  https://files.example.com/report.pdf
mtr -rwc 20 203.0.113.10
mtr -rwc 20 10.20.30.40

Bu raqamlar ulanish o'rnatilishini uzatish vaqtidan ajratadi, bu muhim, chunki ikki yo'l odatda shifr narxida emas, borish-kelish kechikishi va MTU da farq qiladi. TLS ishi ikkala dizaynda ham uchlarida bo'ladi, tunnel esa inkapsulyatsiya, boshqa marshrut va ehtimol bandroq darvoza qo'shadi. Agar tunnel yo'li uzunroq bo'lsa yoki darvozasi yuklangan bo'lsa, farq yo'lga tegishli, shifrlash so'ziga emas.

Xizmatga haqiqatan kerak bo'lgan kirish siyosatini tanlang, so'ng o'lchangan farq uni o'zgartirishni oqlaydimi-yo'qmi hal qiling. Ommaviy yo'naltirish ochiq internet uchun mo'ljallangan xizmatga mos keladi, manba cheklovlari, yangilangan TLS va oldida kuzatuv bilan. Faqat tunnel orqali kirish foydalanuvchilari allaqachon ro'yxatdan o'tgan ichki vositaga mos keladi, darvoza marshrutlashi va ilova ruxsatlari ikkalasi ham butun LAN dan tor bo'lsa.

Dizaynni tugallangan deb e'lon qilishdan oldin to'rt narsani tasdiqlang: tinglovchi qaysi manzilga bog'langan, qaysi qoida yoki marshrut paketni ichkariga kiritadi, qaytish yo'li mijozning haqiqiy manzilidan ishlaydimi va katta yuklar MTU dan o'tadimi. Ularning har biri uchun yuqorida buyruq bor va hech biriga «xavfsiz» so'zi yoki tarmoqli kengligi grafigi javob bermaydi.

O'xshash maqolalar