ترافیک روی eth0 به معنای نشت تونل VPN نیست
نشانیهای عمومی روی آداپتور فیزیکی معمولاً همان پاکت خود تونل هستند. رابطها را مقایسه کنید و سپس از هسته بپرسید کدام دستگاه را انتخاب میکند.
دیدن نشانیهای عمومی روی eth0 در حالی که تونل بالاست، شبیه مدرکی است که چیزی فرار کرده است. معمولاً برعکس است: بستههای خود تونل باید برای رسیدن به سرور از آن آداپتور عبور کنند و مثل جریانهای عادی UDP یا TCP به نظر میرسند. بستهٔ درونی فقط روی دستگاه تونل ظاهر میشود. تشخیص این دو، کار خواندن پاکت است، نه اعتماد به شمارش بایت.
هر بستهٔ تونل باز هم از سیم میگذرد
تونل یک رابط است، نه یک سیم. کلاینت بستهٔ درونی را برمیدارد، آن را میپیچد و نتیجه را به نشانی و درگاه سرور از پروفایل میفرستد. روی آداپتور فیزیکی پوشش را میبینید؛ روی دستگاه تونل چیزی را که پیچیده شده بود میبینید.
در حالت UDP جریان بیرونی در هر جهت یک جفت نشانی و درگاه است، به همین دلیل یک تونل سالم روی eth0 تقریباً خستهکننده به نظر میرسد. همان یک جفت نخستین چیزی است که باید جستوجو شود.
هر بار یک رابط را ضبط کنید
وقتی میخواهید شمارشها را مقایسه کنید، هر بار یک رابط را ضبط کنید. شبهرابط any همهٔ دستگاهها را یکجا جمع میکند، بنابراین بستهٔ ارسالشده در ورود و خروج ظاهر میشود و بستهٔ تولیدشده بهصورت محلی دو بار در دو شکل متفاوت ظاهر میشود. برابر بودن شمار بستهها با نابرابر بودن شمار بایتها طبیعی است، چون پوشش بزرگتر از چیزی است که حمل میکند. ARP و DHCP و اعلانهای مسیریاب IPv6 به پیوند محلی تعلق دارند و چیزی دربارهٔ برنامهٔ شما نمیگویند.
sudo tcpdump -i eth0 -n host 203.0.113.10 and udp port 1194نشانی و درگاه را با مقادیر خود پروفایل جایگزین کنید. اگر آن جریان ثابت باشد، تونل چیزی حمل میکند.
از هسته بپرسید کدام دستگاه را انتخاب میکند
از هسته بپرسید کدام دستگاه را انتخاب میکرد، سپس روی سیم تأیید کنید. جستوجوی مسیر همان تصمیم است و ضبط، مدرک پیروی از آن تصمیم. این دو به پرسشهای متفاوتی پاسخ میدهند و شما هر دو را میخواهید.
ip route get 1.1.1.1
ip -6 route get 2606:4700:4700::1111نتیجهٔ دوشقه یافتهٔ رایج است: IPv4 به تونل میرود و IPv6 به آداپتور فیزیکی میرود، چون پروفایل فقط مسیرهای IPv4 را فرستاده است. این یک نشت واقعی است و در ضبط فقط IPv4 نامرئی میماند. برای IPv6 صافی بگذارید و مراقب نشانیهایی باشید که نه سرور هستند و نه link-local.
هر دو جستوجو را پیش و پس از اتصال اجرا کنید تا ببینید کلاینت واقعاً چه چیزی را تغییر داده است. تفاوت میان دو اجرا همان اثر واقعی کلاینت است.
وقتی ضبط واقعاً یک نشت است
گاهی ضبط راست میگوید. مسیر باریکتری که یک پیشوند را دور تونل میفرستد، زیرشبکهای که به کلاینت گفته شده کنار بگذارد، یا یک پذیرش در دیوار آتش که پیش از سیاست تونل اجرا میشود، همه میتوانند ترافیک را آشکار روی سیم ببرند. قاعدهای که با یک گروه فرایند منطبق است هم میتواند استثنای آگاهانه باشد. پیش از آنکه آن را نقص بنامید، رابط و دامنهٔ مقصدش را بخوانید.
مسیر یا استثنا را درست کنید، نه دیوار آتش را. سپس از یک اتصال تازه دوباره ضبط کنید و IPv4 و IPv6 را جداگانه بررسی کنید، چون درست کردن یکی چیزی دربارهٔ دیگری نمیگوید. راهنمای tcpdump انتخابگرهای رابط و جهت را که بالا استفاده شد پوشش میدهد.