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

یک سرویس شریک روی یک نشانی عمومی که اصرار دارد نشانی دفتر مرکزی شما را ببیند، برای فروپاشی این روایت کافی است.

افسانه: تونل شکافته دیوار آتش را از مسیر خارج میکند

باور این است که هر مقصدی بیرون از بازههای خصوصی روی اتصال اینترنت محلی میماند، پس دیوار آتش هرگز آن را نمیبیند و هرگز به قاعدهای برای آن نیاز ندارد. این فقط تا زمانی درست است که مقصد در فهرست تونل نباشد. همان لحظهای که یک اپراتور میزبان عمومی را به ACL با نام split-include اضافه میکند، کارخواه آن ترافیک را به تونل میفرستد و ASA باید آن را مانند هر جریان رمزگشاییشده دیگری مسیریابی، فیلتر و ترجمه کند. روی کارخواه چیزی جز فهرست مقصد تغییر نکرده است.

کارخواه روتر نشد. از سیاستی که به آن دادید پیروی کرد.

مسیر split-include در واقع چه میکند

در یک راهاندازی دسترسی از راه دور Cisco ASA، سیاست گروه split-tunnel-policy tunnelspecified و split-tunnel-network-list را حمل میکند که یک ACL استاندارد را نام میبرد. هر خط permit در آن ACL مقصدی است که کارخواه باید به تونل بفرستد، و بقیه چیزها همچنان از مسیر پیشفرض محلی استفاده میکنند.

افزودن یک میزبان یک خط است، و تنها بخشی از تغییر است که کارخواه میتواند ببیند: access-list RA-SPLIT standard permit host 203.0.113.20.

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

بسته از همان رابط وارد و خارج میشود

اکنون جریان را پس از رمزگشایی دنبال کنید. بسته از طریق تونل VPN از رابط بیرونی وارد شده، مقصدش یک نشانی عمومی است، و جدول مسیریابی آن را دوباره از همان رابط بیرونی به سمت اینترنت میفرستد. ترافیکی که از یک رابط وارد و خارج میشود دور ریخته میشود مگر اینکه به ASA اجازه داده شود، و این کاری است که same-security-traffic permit intra-interface انجام میدهد. بدون آن، اتصال به گونهای شکست میخورد که شبیه مشکل مسیریابی است و نیست.

این تنظیم سراسری است. hairpinning را برای هر جریانی که به آن نیاز دارد مجاز میکند، نه فقط برای این میزبان شریک، پس جای آن در یک تغییر بازبینیشده است نه در یک آزمون سریع.

چرا PAT محدود به مقصد اختیاری نیست

نشانی مبدأ در بسته رمزگشاییشده هنوز نشانی VPN کارخواه است، معمولاً از یک استخر مانند 10.77.0.0/24. این نشانی در اینترنت عمومی مسیری ندارد، پس شریک یا هرگز پاسخ نمیدهد یا به هیچجا پاسخ میدهد.

ترجمه مبدأ را اصلاح میکند و مقصد را دستنخورده میگذارد. چون اشیاء از قبل جای دیگری تعریف شدهاند، یک قاعده دستی محدود به این مقصد این شکل را دارد:

same-security-traffic permit intra-interface

object network RA_POOL
 subnet 10.77.0.0 255.255.255.0
object network PARTNER_HOST
 host 203.0.113.20

nat (outside,outside) source dynamic RA_POOL interface destination static PARTNER_HOST PARTNER_HOST

بخش destination static مهم است. اگر آن را حذف کنید، قاعده به یک ترجمه گسترده تبدیل میشود که میتواند با ترافیک بسیار بیشتری از آنچه در نظر بود مطابقت کند، و یک قاعده identity گستردهتر که زودتر در ترتیب آمده میتواند کاملاً بر این یکی پیروز شود. پیش از آنکه فرض کنید قاعده شما همان مورد منطبق است، show nat detail و ترتیب بخشها را بررسی کنید.

PAT روی رابط همچنین یعنی شریک نشانی رابط ASA را میبیند که ممکن است بالادست دوباره ترجمه شود. اگر قرارداد نشانیای را نام میبرد، آن را سرتاسر تأیید کنید نه در یک گام.

با مقصد آزمون درست اثباتش کنید

از خود میزبان شریک استفاده کنید، نه یک صفحه عمومی what-is-my-ip. آن صفحه تقریباً قطعاً بیرون فهرست split است، پس نشانی اینترنت محلی شما را گزارش میدهد و درباره این مسیر چیزی نمیگوید. اتصال تازهای به سرویس شریک باز کنید و بپرسید چه مبدأیی دیدهاند، یا packet-tracer input outside tcp 10.77.0.10 12345 203.0.113.20 443 detailed را اجرا کنید و مراحل NAT و مسیریابی را خط به خط بخوانید. traceroute از کارخواه بررسی ضعیفتری است، چون مسیری را نشان میدهد که قبلاً رخ داده، نه سیاستی که آن را انتخاب کرده است.

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

نسخه کارآمد این طراحی کوتاه است: یک میزبان در ACL split، اجازه hairpin، یک قاعده PAT محدود به مقصد. بقیه چیزها در این روایت همان افسانه است.

مقالات مرتبط