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

سه چیز جداگانه یک مقدار کشور را حمل می‌کنند و می‌توانند بدون آنکه کسی دروغ بگوید با هم اختلاف داشته باشند. جدا کردن آن‌ها ناسازگاری را به‌جای مرموز بودن، قابل تشخیص می‌کند.

سه چیز متفاوت برچسب کشور را حمل می‌کنند

اولی فیلد خود فهرست است که ممکن است اپراتور خودش آن را گزارش کرده باشد، از یک پایگاه داده نشانی استنباط شده باشد، یا هنگام ساخت ورودی به‌سادگی کپی شده باشد. دومی خود نشانی است که به هر شبکه‌ای که آن را اعلام می‌کند تعلق دارد، و جست‌وجوی موقعیت جغرافیایی با استفاده از داده‌های نقشه‌برداری منتشرشده به شکلی که در RFC 8805 توصیف شده، دقیقاً به همین پاسخ می‌دهد. سومی چیزی است که یک برنامه تصمیم می‌گیرد نمایش دهد، و ممکن است از پایگاه داده‌ای دیگر، از تنظیم حساب یا از اجازه‌ای که روی دستگاه داده‌اید بیاید. تنها دومی یک واقعیت شبکه‌ای است، و حتی آن هم جست‌وجو است نه مشاهده.

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

نشانی را بررسی کنید، نه پرچم را

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

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

نزدیکی روی نقشه نزدیکی در شبکه نیست

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

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

نشانی خروج را خودتان تأیید کنید

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

curl -sS https://api.ipify.org; echo
curl -sS --interface tun0 https://api.ipify.org; echo
ip route get 1.1.1.1
ip -6 addr show dev tun0

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

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

مقالات مرتبط