چرا VPN نقطهبهسایت Azure آدرس IP عمومی شما را تغییر نمیدهد
تونل نقطهبهسایت فقط مسیرهای شبکه مجازی را حمل میکند، بنابراین IP عمومی شما محلی میماند تا زمانی که تونلسازی اجباری و SNAT فایروال خروجی را به Azure منتقل کنند.
کلاینت Azure VPN را روی یک لپتاپ ویندوز متصل میکنم، یک صفحه بازتاب آدرس باز میکنم و همان آدرس عمومی را میبینم که روتر خانهام تخصیص داده است. در همین حال جعبه پرش روی 10.20.0.4 پاسخ میدهد و نام یک نقطه پایانی خصوصی حل میشود، پس تونل خراب نیست. دروازه نقطهبهسایت دقیقاً همان کاری را میکند که پیکربندی پیشفرضش میگوید: پیشوندهای خصوصی را حمل میکند و بقیه چیزها را روی پیوند محلی رها میکند. گرفتن یک آدرس خروجی متعلق به Azure تغییری در طراحی مسیریابی است، نه یک تعمیر.
دروازه بهطور پیشفرض چه چیزی اعلام میکند
دروازه مسیرهایی برای فضای آدرس شبکه مجازی، بهعلاوه شبکههای همتا که ترانزیت دروازه در آنها مجاز است و پیشوندهای محلی که از طریق اتصال سایتبهسایت یا BGP یاد گرفته شدهاند، ارسال میکند. هیچ 0.0.0.0/0 در آن مجموعه نیست. سیستمعامل شما مسیر پیشفرض خود را روی Wi-Fi یا Ethernet نگه میدارد، بنابراین بستهای به سمت یک API عمومی هرگز وارد تونل نمیشود.
آدرسی که کلاینت داخل تونل دریافت میکند یک اجاره خصوصی از استخر نقطهبهسایت است. کلاینت را به منابع موجود در VNet معرفی میکند؛ آدرسی نیست که اینترنت بتواند ببیند و هرگز بهعنوان مبدأ یک درخواست خروجی به API یک سرویس SaaS ظاهر نخواهد شد. یک ورودی فهرست مجاز که حول آن اجاره ساخته شده باشد نمیتواند کار کند، هرقدر که منتظر ظاهر شدنش در گزارشهای فروشنده بمانید.
تونل تقسیمشده و تونلسازی اجباری در کنار هم
| Split tunnel, the default | Forced tunneling | |
|---|---|---|
| Internet traffic exits through | local ISP or office router | firewall or appliance inside Azure |
| Source address the API sees | your home or office IP | the firewall public IP |
| Inspection and logging in Azure | none | policy rules plus flow logs |
| Ongoing cost | gateway only | gateway, firewall hours, data processing |
| What usually breaks | nothing on the egress path | DNS, on-premises routes, overlapping local ranges |
فقط ردیف دوم آدرسی را که یک سرویس دور میبیند تغییر میدهد. هر چیز دیگری در آن جدول هزینه و سطح عملیاتی است که وقتی خروجی باید درون Azure بررسی یا ترجمه شود میپذیرید. اگر کسی از شما میخواهد IP عمومی تغییر کند، کل ستون سمت راست را میخواهد، نه یک اصلاح کوچک در کلاینت.
پیش از اینکه چیزی را بازسازی کنید، یک گزینه میانی هست که ارزش نام بردن دارد. یک ماشین مجازی پراکسی یا دروازه درون VNet به شما یک آدرس مبدأ کنترلشده برای برنامههایی میدهد که میتوان به آن اشاره کرد، بدون جابهجا کردن مسیر پیشفرض کلاینت. این کار مرور عادی را محلی نگه میدارد و هنوز شریکی را راضی میکند که فقط به رسیدن یک فراخوانی API از Azure نیاز دارد. وقتی نیاز واقعاً درباره همه ترافیک باشد شکست میخورد، زیرا هر چیزی که تنظیم پراکسی را نادیده بگیرد همچنان محلی خارج میشود.
کاری کنید تونل مسیر پیشفرض را حمل کند
روی یک دروازه شبکه مجازی، روش پشتیبانیشده برای هدایت همه ترافیک اینترنت کلاینت به تونل، افزودن مسیرهای سفارشی به پیکربندی نقطهبهسایت است. دو نیمه کل فضای IPv4 را پوشش میدهند و هر یک از مسیر پیشفرض محلی مشخصتر است، بنابراین کلاینت بدون حذف چیزی آنها را ترجیح میدهد:
Set-AzVirtualNetworkGateway -VirtualNetworkGateway GWOBJ -CustomRoute 0.0.0.0/1,128.0.0.0/1
آن خط نمونه است و برای کپیکردن کامل نیست: ابتدا شیء دروازه را با Get-AzVirtualNetworkGateway بگیرید و آن را جای GWOBJ بگذارید، و پیش از اجرا تأیید کنید که SKU و مدل استقرار مسیرهای سفارشی را میپذیرند. همان پیشوندها در پورتال در صفحه پیکربندی نقطهبهسایت ظاهر میشوند، که اگر دروازه را از قبل با اسکریپت مدیریت نمیکنید، جای امنتری برای تنظیم آنهاست.
تغییر آن پیشوندها بسته کلاینت را باطل میکند. بسته کلاینت VPN را دوباره دانلود و نصب کنید، زیرا مسیرها درون پروفایل سفر میکنند. کلاینتی که با پروفایل قدیمی خود دوباره متصل میشود مجموعه مسیرهای قدیمی را نگه میدارد و ممکن است ساعتی را صرف اشکالزدایی تغییری کنید که هرگز به آن نرسیده است.
در یک هاب WAN مجازی امن، معادل آن یک مسیر پیشفرض در جدول مسیرهای هاب است که به دروازه نقطهبهسایت مرتبط شده و Azure Firewall در هاب ترافیک را میگیرد. فایروال اتصالهای رو به اینترنت را به آدرسهای IP عمومی خودش ترجمه میکند و آدرس خروجی جدید از همان ترجمه میآید. وقتی یک فایروال چندین IP عمومی دارد، هر یک از آنها میتواند بهعنوان مبدأ ظاهر شود، پس فهرست مجاز باید همه را داشته باشد.
هر دو طراحی بالا IPv4 هستند. دو پیشوند /1 هیچ کاری برای IPv6 نمیکنند و پشتیبانی IPv6 نقطهبهسایت آنقدر محدود است که باید ترکیب را پیش از وعده برابری آزمایش کنید.
مسیر را بررسی کنید، سپس خروجی را
پس از نصب دوباره بسته و اتصال مجدد، تأیید کنید که کلاینت واقعاً نیمهها را نصب کرده است. در ویندوز، Get-NetRoute -DestinationPrefix 0.0.0.0/1 و همان پرسوجو برای 128.0.0.0/1 باید رابط تونل را نام ببرند و route print هر دو را کنار مسیر پیشفرض اصلی شما نشان میدهد. در لینوکس، ip route show باید آن دو پیشوند را فهرست کند؛ اگر نکند، پروفایل هرگز آنها را حمل نکرده است.
سپس آدرس عمومی را از کلاینت دوباره بررسی کنید و گزارش فایروال را برای همان اتصال بخوانید. مبدأ باید IP عمومی فایروال با یک پورت ترجمهشده باشد. کلاینتی که هنوز محلی خارج میشود در حالی که هر دو مسیر وجود دارند یعنی بستهها به Azure رسیدهاند و از مسیر دیگری خارج شدهاند: یک مسیر تعریفشده توسط کاربر روی زیرشبکه دروازه، فایروالی که خودش بهطور اجباری به شبکه محلی تونل شده، یا خطمشیای که جریان را پیش از ترجمه دور میریزد.
یک مقصد خصوصی را در همان نشست دوباره آزمایش کنید. میزبان پرشی که پس از تغییر پاسخدادن را متوقف میکند نشانه معمول این است که پیشوندهای جدید چیزی را جابهجا کردهاند: یا مسیری محلی باریکتر که قبلاً اعلام میشد، یا حل نام که اکنون به یک resolver بدون forwarder برای مناطق خصوصی شما میرود.
چه زمانی تونل تقسیمشده را به حال خود بگذارید
اگر هدف فقط رسیدن به یک API خصوصی، یک نقطه پایانی خصوصی یا یک صفحه مدیریت داخلی است، رفتار پیشفرض ارزانتر و ساکتتر است. تونلسازی اجباری ساعتهای فایروال و هزینههای پردازش داده، مسیری طولانیتر و یک جای دیگر که هر جریان کلاینت میتواند شکست بخورد اضافه میکند. همچنین ترافیک بسیار بیشتری از تنها مقصدی که برایتان مهم بود میگیرد.
وقتی نیاز بر حسب خروجی بیان میشود به سراغش بروید: شریکی باید یک آدرس ثابت Azure ببیند، امنیت میخواهد اتصالها ثبت و بررسی شوند، یا دادهها باید از یک نقطه کنترلشده خارج شوند. حتی در آن صورت طراحی به هر کاربر یک خروجی مشترک میدهد، بنابراین پاسخگویی بهازای هر کاربر باید از هویت در برنامه بیاید نه از آدرس مبدأ.
پیش از بستن تغییر، چهار چیز را تأیید کنید: بسته کلاینت نصبشده جدید است، دو مسیر /1 روی رابط تونل قرار دارند، یک مقصد خصوصی هنوز پاسخ میدهد، و گزارش سرویس دور آدرس فایروال را نشان میدهد.