Kimdir brauzer tunneldan foydalanishini so'raydi va javob 80 hamda 443 manzil portlariga mos keladigan tarmoq qalqoni qoidasi bo'lib qaytadi. U aniq ko'rinadi va aniq emas. Port mosligi paketlarni transport sarlavhasi bo'yicha tanlaydi, qaysi dastur soket ochgani bo'yicha emas, va zamonaviy ko'rish TCP dagi o'sha ikki port bilan cheklanmaydi. Qoida siz kiritmoqchi bo'lgan trafikning bir qismini o'tkazib yuboradi va siz hech qachon tegishni o'ylamagan trafikni ushlaydi. Uni yozishdan oldin uch xil chegaradan qaysi birini rostdan xohlayotganingizni hal qiling.

Qoida transport sinfini tavsiflaydi, dasturni emas

Linux da manzil-port mosligi TCP sarlavhasini tekshiradi va uning ustidagi hech narsani emas. Bu paketlarni belgilash va siyosat marshruti bilan yo'naltirish aynan hujjatlashtirilganidek ishlaydi va bu mexanizmlarning hech biri yuk nimani anglatishini yoki uni qaysi jarayon yuborganini bilmaydi. Belgi paketga biriktirilgan raqam, dasturga biriktirilgan shaxsiyat emas.

nft add rule inet mangle output tcp dport { 80, 443 } meta mark set 0x1
ip rule add fwmark 0x1 table 100
ip route add default dev wg0 table 100

Darhol ikki natija keladi. TCP 443 bilan bog'lanadigan dasturiy yangilovchi brauzer bilan bir xil munosabatni oladi, bu yaxshi bo'lishi mumkin yoki keyingi yangilanish siklini kutayotgan uzilish bo'lishi mumkin. Va boshqa portda, aytaylik 8443 da ataylab e'lon qilingan veb-xizmat qoidadan butunlay chiqib ketadi, garchi u hali ham foydalanuvchi uchun muhim bo'lgan o'sha veb-trafik.

Raqamlar talab haqiqatan o'sha portlar haqida bo'lganda qonuniy tanlagichlardir. Chiptada «brauzer» deb yozilib, qoidalar to'plamida port oralig'i joriy qilinsa, ular to'qima bo'lib qoladi. Bu bo'shliq hujjatlashtirish maydasi emas. Bu ko'rikda himoya qila oladigan qoida bilan hech kim sinab ko'ra olmaydigan qoida o'rtasidagi farq.

HTTP/3 sizning TCP qoidangizni jimgina tark etadi

HTTP/3 QUIC ustida ishlaydi va QUIC UDP da tashiladi. Faqat TCP ga mos keladigan qoida uni ko'ra olmaydi, shuning uchun sizning sinov sahifangizdan o'tgan o'sha brauzer keyingi so'rovni UDP orqali yuborib, hech kim sozlamani o'zgartirmasdan tunneldan chetlab o'tishi mumkin. RFC 9114 HTTP/3 ni QUIC asosidagi protokol deb ta'riflaydi va QUIC odatiy joylashtirishda standart porti 443 bo'lgan UDP dan foydalanadi.

Muayyan brauzer HTTP/3 ni sinab ko'radimi, bu uning konfiguratsiyasiga, saytga va oldingi urinish muvaffaqiyatli bo'lganiga bog'liq. Shu sababli bu haqda xotiradan mulohaza yuritish yomon. Buning o'rniga asbobdan so'rang:

curl --http3 -sS -o /dev/null -w '%{http_version} %{time_total}\n' https://example.com
ss -tunp | grep -E ':443\b'

curl satri kelishilgan versiyani chop etadi, shuning uchun 3 UDP yo'li ishlatilganini tasdiqlaydi. Keyin soketlar ro'yxati bu ulanish tunnel interfeysiga yoki jismoniy interfeysga bog'langanini ko'rsatadi. Agar curl binoyingizda HTTP/3 bo'lmasa, bayroq jimgina orqaga chekinish o'rniga baland ovozda muvaffaqiyatsiz bo'ladi, bu uning o'zining kichik marhamati.

DNS — o'zingiz qabul qilishingiz kerak bo'lgan alohida qaror

Veb-trafik uchun port qoidasi nomlarni hal qilish haqida hech narsa demaydi. Brauzer tizim hal qiluvchisini, brauzer ichida sozlangan hal qiluvchini yoki oxirgi ulanish itarib yuborganini ishlatishi mumkin. Ularning har biri so'rovlarni sizning qoidangiz tanlagan yo'ldan boshqa yo'l bilan yuborishi mumkin va bu odatiy bo'linishni keltirib chiqaradi: sahifa yuklanadi, nom siz kutmagan joyda hal qilinadi va ichki sayt umumiy manzilga hal qilinadi yoki umuman hal qilinmaydi.

Buni aniq hal qiling. Agar ichki nomlar tunnel orqali hal qilinishi kerak bo'lsa, hal qiluvchi uning ichida bo'lishi kerak va qoidalar to'plami o'sha hal qiluvchiga DNS ga ruxsat berib, boshqa so'rovlarni tashqarida ushlab turishi kerak. Agar brauzer umumiy provayderga DNS over HTTPS ishlatsa, so'rov sizning hal qiluvchingizni butunlay chetlab o'tadi va port qoidasi yordam bera olmaydi. Tanlovni marshrutlash qoidasi bilan bir xil o'zgartirish yozuviga yozing, chunki ikkalasini birga keyingi nosozlikni tuzatuvchi o'qiydi.

Keyin sahifa bilan emas, hal qiluvchi bilan tekshiring:

resolvectl query intranet.example.internal
resolvectl status | grep -A3 'Current DNS Server'

Javob kelmasligi hal qilish muammosi, brauzerning xato xabari tarmoqni ayblasa ham. Bu ikki nosozlik foydalanuvchiga bir xil ko'rinadi va butunlay boshqa chiptalar.

Uch chegara, uch xil mexanizm

Ko'p chalkashlik siz xohlagan chegarani nomlaganingizda yo'qoladi. Ular bir-birining o'rnini bosmaydi va tunnel uzilganda har birining nosozlik uslubi boshqacha.

What you actually wantMechanism that fitsWhat it does not cover
These transport ports use this exitFirewall mark plus policy routeApplications, HTTP/3 over UDP, DNS
This browsing session stays separateApplication-aware VPN, or a separate network namespace plus a proxyOther applications in the same session
Only these private sites are reachableDestination-based routes with private DNSPublic sites on the same address family

Alohida brauzer profili o'rta qatordagi tuzoq. U cookie fayllari va tarixni ajratadi va xostning marshrutlash jadvalida hech narsani o'zgartirmaydi, shuning uchun ikkala profil ham bir xil yo'ldan boradi. Izolyatsiya yadro majburlaydigan narsani talab qiladi, ya'ni nomlar fazosi, konteyner yoki o'z tunnel interfeysiga ega dastur.

Qaysi qator bo'lishidan qat'i nazar, tunnel yiqilganda nima bo'lishi kerakligini yozing. Interfeys bilan birga yo'qoladigan belgiga asoslangan marshrut odatda jismoniy standart marshrutga qaytadi, bu fail-open xatti-harakat. Bu ko'rish uchun maqbul va qolgan hamma narsa uchun nomaqbul bo'lishi mumkin va bu qaror, amalga oshirish tafsiloti emas.

Qamrab olganingizni da'vo qilgan oqimlarni sinab ko'ring

Qabul sinovi siz yozgan chegaraga ergashishi kerak, qulay port raqamlariga emas. Tunneldan o'tishi shart bo'lgan bir oqim, o'tmasligi kerak bo'lgan yana biri va siz o'ylamagan transportdan foydalanadigan yana birini tanlang:

ip route get 203.0.113.40
curl -sS -o /dev/null -w 'v4 %{http_version} %{remote_ip}\n' https://example.com
nft list ruleset | grep -A2 'dport'

Marshrut qidiruvi manzil aslida qaysi interfeysdan foydalanishini aytadi va bu ko'p hisobotlar noto'g'ri ko'rsatadigan fakt. curl satri kelishilgan versiya va manzillar oilasini tasdiqlaydi. Qoidalar to'plamining chiqishi sinov paytida qo'shib, cheklashni unutgan qoidani ushlaydi va shu bilan vaqtinchalik belgi doimiy fail-open marshrutlashga aylanadi.

Uch chiqishni ham vaqt tamg'asi bilan qayd eting va o'zgartirish bilan birga saqlang. Keyinchalik kimdir «VPN ichki tarmoqni buzdi» deb xabar berganda, ko'zda tutilgan va amalga oshirilgan chegara orasidagi farq o'sha yozuvda ko'rinadi va tuzatish bahs emas, qoida o'zgarishi bo'ladi.

O'xshash maqolalar