یک تونل توپولوژی میخرد، نه رمزنگاری یا تأخیر
تونل یک مسیر منطقی و شاید یک بافت ارسال جداگانه به شما میدهد. خودش رمزنگاری نمیکند و تأخیر را وعده نمیدهد.
فرض این است که تونل یک سیم خصوصی و سریع است: آن را میسازید و ترافیک داخل آن رمزنگاریشده است، مسیر کوتاهتر است و پیوند مانند کابلی بین دو سایت رفتار میکند. هر بخش از این فرض یک ویژگی جداگانه است، و تونل تنها اولین چیزی را که از آن خواستهاید تحویل میدهد، یعنی یک مسیر منطقی. همه چیز دیگر باید عمداً انتخاب و پیکربندی شود. اشتباه گرفتن ویژگیها همان چیزی است که باعث میشود یک طراحی به پیوندی رمزنگاریشده برسد که هیچکس نمیتواند عیبیابی کند و به وعدهای درباره تأخیر که هیچکس نمیتواند به آن عمل کند.
افسانه: یک تونل، سه تضمین
تونل یک کار را بهطور قابل اعتماد انجام میدهد. دو نقطه پایانی را که مستقیماً متصل نیستند وادار میکند برای هدفی مانند نقاط مجاور رفتار کنند، در حالی که شبکه میانی بستههای بیرونی را حمل میکند. این تغییری در توپولوژی است و بهخودیخود واقعاً مفید است.
رمزنگاری، حمل پروتکل و جداسازی ارسال تصمیمهای جداگانهای هستند که روی آن لایهبندی میشوند. تونل GRE هیچیک از این سه را به معنای رمزنگاری ندارد، و تونل IP-in-IP طراحی معتبری بدون هیچ محرمانگی است. هیچیک از این دو اشتباه نیست؛ آنها تونلهایی هستند که دقیقاً همان کاری را میکنند که تونلها میکنند. برچسب روی نمودار نمیگوید کدام ویژگیها وجود دارند.
وقتی ویژگیها را جدا کنید، پرسشها پاسخپذیر میشوند: آیا این تونل یک همسایگی مسیریابی حمل میکند، آیا قاب حمل میکند، آیا آدرسهای داخلی را پنهان میکند، آیا چیزی درباره تأخیر وعده میدهد؟ اینها چهار پاسخ متفاوت با چهار پیامد پیکربندی متفاوت هستند.
آنچه تونل واقعاً به نقشه اضافه میکند
نقاط پایانی مسیری مییابند که قبلاً نداشتند. اینکه آن مسیر مانند یک پرش مسیریابیشده یا مانند یک قطعه اترنت رفتار کند کاملاً به کپسولهسازی بستگی دارد، و این تفاوت تغییر میدهد که دو سایت چه کاری میتوانند با آن انجام دهند. تونل مسیریابیشده پرش بعدی و یک پیشوند به شما میدهد؛ توسعه اترنت رفتار پخش و دامنه خرابی بسیار بزرگتری به شما میدهد.
تونل IP بهطور خودکار سایت دور را بخشی از همان زیرشبکه نمیکند، و باعث نمیشود یک پروتکل مسیریابی از آن عبور کند مگر اینکه پیادهسازی آن همسایگی را پشتیبانی کند. Multicast پرسش جداگانه دیگری با پاسخ خودش است.
ip -d link show type gre ip route get 10.20.0.5 traceroute -n -T -p 443 10.20.0.5 mtr -n --report -c 20 10.20.0.5
این فرمانها به بخشهای مختلف پرسش پاسخ میدهند. اولی میگوید چه نوع رابطی وجود دارد، دومی میگوید هسته کدام مسیر را انتخاب میکند، و دو مورد آخر رفتار واقعی لایه زیرین را نشان میدهند نه وعده برچسب را.
حمل تصمیمی جدا از دسترسپذیری است
تونل میتواند پروتکلی را حمل کند که لایه زیرین آن را ارسال نمیکند. IPv6 روی مسیر IPv4 نمونه کلاسیک است، و کار میکند زیرا نقاط پایانی هر دو خانواده را میفهمند در حالی که روترهای میان آنها فقط باید بستههای بیرونی را تحویل دهند. لایه زیرین به مسیری کارآمد تا نقطه پایانی تونل نیاز دارد و نه بیشتر.
اما نقاط پایانی به پشتیبانی کامل نیاز دارند: ارسال، آدرسها و برنامهای که واقعاً از خانواده داخلی استفاده میکند. اختصاص یک پیشوند IPv6 به تونل، سرویسی را که فقط با IPv4 کار میکند از طریق IPv6 در دسترس نمیکند، و لایه زیرین را دوپشته نمیکند.
حمل قاب تعهد بزرگتری از حمل پروتکل است. گسترش یک دامنه پخش از طریق تونل، رفتار درخت پوشا، ARP و انتشار خرابی را با خود جابهجا میکند، که تصمیمی طراحی است نه کلید یک ویژگی.
جداسازی محرمانگی نیست
VPNهای ارائهدهنده مسیرها و ترافیک مشتری را در بافتهای ارسال جداگانه نگه میدارند، و این جداسازی واقعی و ارزشمند است. این رمزنگاری نیست. مشخصات BGP/MPLS VPN صراحتاً میگوید محرمانگی آن از مدل ارسال میآید نه از رمزنگاری، و دقیقاً همین تمایز است که در اسلایدی که فقط میگوید VPN از دست میرود.
اگر به محرمانگی نیاز دارید، به سازوکار رمزنگاری با احراز هویت و مدیریت کلید نیاز دارید، و باید بدانید کجا پایان مییابد. تونلی که جداسازی ارائه میدهد و تونلی که رمزنگاری ارائه میدهد میتوانند همان تونل باشند، اما فقط وقتی کسی هر دو را پیکربندی کرده باشد.
پیامد عملی این است که «داخل VPN است» به پرسشی درباره بافت مسیریابی پاسخ میدهد و هیچ چیزی درباره اینکه چه کسی میتواند بایتهای مسیر را بخواند نمیگوید. دو تیم میتوانند هر دو درست باشند و در عین حال چیزهای متفاوتی را توصیف کنند. وقتی پرسش امنیتی مطرح میشود، بپرسید رمزنگاری کجا پایان مییابد و چه چیزی همتایان را احراز میکند، نه اینکه تونلی وجود دارد یا نه.
تأخیر و QoS از لایه زیرین پیروی میکنند
یک لبه منطقی مسیر فیزیکی کوتاهتری نیست. بستههای بیرونی همچنان از همان پیوندها، صفها و ارائهدهندهها عبور میکنند، و کپسولهسازی سرباری به ازای هر بسته بهعلاوه پردازش در دو سر اضافه میکند. تونل میتواند سریع باشد چون لایه زیرین خوب است، هرگز چون تونل است.
رفتار کیفیت سرویس بدتر از این است، چون به دامنههای اداری وابسته است که ممکن است کنترلشان نکنید. نشانهگذاریهای داخلی باید عمداً به نشانهگذاریهای بیرونی نگاشت شوند، و هر ارائهدهندهای در مسیر باید رفتاری را که انتظار دارید ارائه کند. رمزنگاری اولویت ایجاد نمیکند؛ فیلدی را پنهان میکند که یک جعبه میانی ممکن بود برای طبقهبندی جریان استفاده کند.
قبل از وعده دادن هر چیزی، لایه زیرین را اندازه بگیرید. گزارشی که تأخیر پایدار و بدون افت را در مسیر بیرونی نشان میدهد شواهد است؛ نموداری که تونلی روی آن است شواهد نیست.
تونل را برای رابطه شبکهای که نیاز دارید انتخاب کنید، سپس رمزنگاری، سیاست دسترسی، اندازه بسته و کارایی را جداگانه مشخص کنید. چهار تصمیم، چهار قطعه شواهد، و هیچ برچسب واحدی که جای هیچیک از آنها بایستد.