کارخواه می‌گوید متصل است، قفل بسته است و یک سایت هنوز نشانی آپارتمان شما را ثبت می‌کند. هیچ چیز شکست نخورده است. تونل جای Wi-Fi یا پیوند همراه شما را نمی‌گیرد؛ پاکت‌های مشخصی را در پاکت دومی می‌پیچد و آن پاکت را از شبکه‌ای که از قبل داشتید عبور می‌دهد. فهم این ترفند بیشتر به دنبال کردن یک درخواست و توجه به جایی مربوط است که پاکت باز می‌شود، زیرا تقریباً هر نشانه گیج‌کننده، از نشت نشانی خانه تا توقف یک بارگیری بزرگ، از همان مرز می‌آید.

دو پاکت، یک پیوند فیزیکی

رایانه شما پیوند عادی خود را با مسیریاب نگه می‌دارد و مسیریاب پیوند عادی خود را با ارائه‌دهنده نگه می‌دارد. هیچ چیز در آن مسیر با برپا شدن تونل تغییر نمی‌کند. آنچه تغییر می‌کند این است که پاکت‌های مشخص به یک واسط مجازی سپرده می‌شوند، درون پاکت تازه‌ای نشانی‌گیری‌شده به همتای VPN پیچیده می‌شوند و به عنوان ترافیک عادی روی پیوند فیزیکی فرستاده می‌شوند.

طرف گیرنده دستگاهی است که پاکت را باز می‌کند و پاکت اصلی را به سوی مقصدش هدایت می‌کند. میان دو طرف، ناظر سرآیند بیرونی را می‌بیند و هیچ چیز از درونی را نمی‌بیند، مگر آنکه پروتکل آن را رمزگذاری کند، کاری که بیشتر پروتکل‌های مصرفی می‌کنند و تکنیک عمومی آن را الزامی نمی‌داند.

به همین دلیل واسط مجازی هم واقعی است و هم گمراه‌کننده. به عنوان شیئی در هسته با یک نشانی و یک واحد بیشینه انتقال وجود دارد و سیستم‌عامل ترافیک را مانند هر واسط دیگری به درون آن مسیریابی می‌کند. کابل نیست و وجودش تنها ثابت می‌کند که مؤلفه‌ای نصب شده است. اینکه مرورگر شما از آن استفاده می‌کند یا نه را مسیرها تعیین می‌کنند، نه بالا بودن واسط.

یک درخواست را در سفر تماشا کنید

مقصدی برگزینید و از هسته بپرسید از کدام واسط استفاده خواهد کرد. همین یک فرمان بیشتر بحث‌ها را درباره اینکه تونل کاری می‌کند یا نه حل می‌کند:

ip route get 203.0.113.7
ip -brief addr show
ip -4 addr show dev wg0

اگر خروجی مسیر واسط تونل را نام ببرد، پاکت پیچیده خواهد شد. اگر واسط فیزیکی را نام ببرد، پیچیده نمی‌شود و هیچ تعداد باری راه‌اندازی دوباره کارخواه آن را عوض نمی‌کند. فرمان دوم هر دو واسط را کنار هم نشان می‌دهد و این‌گونه تونلی را می‌بینید که بدون نشانی یا با نشانی از خانواده نادرست بالا آمده است.

سپس نخستین گام را از درون پاکت ببینید و با نخستین گام بیرون مقایسه کنید:

traceroute -n -m 3 203.0.113.7
sudo tcpdump -ni wg0 -c 5

درون تونل نخستین گام نشانی درونی همتاست، نه مسیریاب شما. ضبط روی واسط تونل پاکت‌های درونی را نشان می‌دهد، یعنی همان ترافیکی که برنامه گمان می‌کند می‌فرستد. ضبط همزمان روی واسط فیزیکی پاکت‌های بیرونی را نشان می‌دهد و این دو با هم روشن‌ترین نمایش کاری است که تونل واقعاً انجام می‌دهد.

سه نشانی، و تنها یکی را سایت می‌بیند

مردم این‌ها را پیوسته اشتباه می‌گیرند و این اشتباه گزارش‌های نشت نادرست پدید می‌آورد. این‌ها میدان‌های متفاوت در سرآیندهای متفاوت با عمرهای متفاوت هستند.

AddressWhere it appearsWho can see it
Endpoint addressOuter header, the peer you connect toYour access network and the path to it
Inner tunnel addressInside the envelope, on the virtual interfaceThe peer, and anything the peer routes to
Exit addressSource of the packet that reaches the websiteThe website and its upstream

عددی که کنار آداپتور مجازی است همان سطر دوم است. نشانی‌ای نیست که یک سایت ثبت می‌کند و نقل آن به عنوان IP عمومی شما صرفاً نادرست است. نشانی‌ای که سایت می‌بیند را خروجی تعیین می‌کند و در تونل شبکه خصوصی ممکن است اصلاً خروجی عمومی وجود نداشته باشد، زیرا مقصد درون سازمان است نه در اینترنت.

تونل میان دو سایت همان مکانیسم با نقاط پایانی متفاوت است. دو مسیریاب ترافیک را میان شبکه‌ها می‌پیچند و هیچ دستگاه منفردی کارخواه نصب‌شده ندارد. پاکت در اصل یکسان است و مرز اداری نیست.

پاکت کجا باز می‌شود و چه چیزی از آن جان سالم به در می‌برد

تونل در همتای خود پایان می‌یابد. اگر رمزگذاری خود برنامه فراتر برود، از آن مرز جان سالم به در می‌برد، که حالت عادی HTTPS است: نشست مرورگر در سایت پایان می‌یابد، پس خروجی متن رمزشده‌ای را می‌فرستد که نمی‌تواند بخواند.

چیز دیگری به طور پیش‌فرض جان سالم به در نمی‌برد. درخواست رمزگذاری‌نشده در خروجی دقیقاً همان‌قدر خواندنی است که در Wi-Fi کافه خواندنی بود و تونل حفاظتی را که برنامه هرگز نداشت اضافه نمی‌کند. به همین ترتیب، قواعد دیوار آتش و سیاست ارسال خروجی تعیین می‌کنند بعد چه می‌شود؛ دست‌دادن موفق واقعیتی درباره پیوند با همتاست، نه درباره بقیه سفر.

سرباری پیامد دیدنی دیگر است. هر پاکت سرآیند بیشتری حمل می‌کند و انتقال بیرونی ممکن است سرآیند خودش را بیفزاید، پس بار مفید هر پاکت کوچک می‌شود. در مسیری با واحد بیشینه انتقال ثابت، دقیقاً به همین دلیل یک تونل می‌تواند پینگ را رد کند و یک بارگذاری بزرگ را متوقف کند.

مسیری را که برنامه واقعاً پیمود بررسی کنید

گام آخر تأیید برنامه مشخص است، نه دستگاه به طور کلی. مقصد را تجزیه کنید، مسیر آن نشانی را ببینید و سپس پیوند را تا وقتی باز است تماشا کنید:

getent hosts example.com
ip route get "$(getent hosts example.com | awk '{print $1; exit}')"
ss -tnp state established '( dport = :443 )'

اگر مسیر تونل را نام ببرد اما فهرست سوکت پیوندی با نشانی مبدأ از واسط فیزیکی نشان دهد، برنامه به چیز مشخصی بسته شده است یا تونل دومی بر سر مسیر پیش‌فرض رقابت می‌کند. این پرسشی درباره مسیریابی است و از این سه خروجی پاسخ می‌گیرد، نه از صفحه وضعیت کارخواه.

معماری امنیتی RFC 4301 نسخه لایه IP این پیچیدن را برای IPsec توصیف می‌کند و همان منطق لایه‌ها برای WireGuard و OpenVPN نیز برقرار است. وقتی می‌توانید پاکت درونی و پاکت بیرونی را به عنوان دو شیء جدا نشان دهید، بیشتر رفتار تونل از حالت معما خارج می‌شود و به جدول مسیریابی‌ای تبدیل می‌شود که می‌توانید بخوانید.

مقالات مرتبط