پورت در فیلد آدرس VPN ویندوز فقط با SSTP کار میکند
فیلد نام سرور host:port نیست. PPTP و L2TP و IKEv2 پورت ثابت دارند؛ SSTP پورت را فقط به شکل URL کامل https:// میپذیرد و هدایت 443 تمیزتر است.
یک سرور VPN روی TCP 10443 پاسخ میدهد، کارخواه داخلی ویندوز اعتبارنامه درست دارد، و با این حال اتصال پس از مکثی که شبیه پایان مهلت DNS است قطع میشود. علت معمولاً فیلد آدرس است: نوشتن vpn.example.com:10443 در نام سرور یا آدرس باعث میشود ویندوز تمام رشته را بهعنوان نام میزبان بخواند، زیرا آن کادر یک ورودی عمومی host:port نیست. اینکه پورت اصلاً بتواند آنجا بیان شود به نوع تونلی بستگی دارد که نمایه استفاده میکند، و فقط یکی از چهار نوع مقدار را چیزی میداند که میتواند تحلیلش کند.
چرا فیلد آدرس کادر host:port نیست
ویژگی نمایه در پشت آن فیلد ServerAddress است و هر نوع تونل خودش تصمیم میگیرد با رشته چه کند. سه تا از آنها پارامتر پورتی برای پر کردن ندارند، بنابراین دونقطه و یک عدد فقط نویسههایی در نامی هستند که هرگز تجزیه نمیشود. چهارمی از طریق HTTPS کار میکند که پورت بخشی از URL است، پس مقدار باید در قالبی نوشته شود که بهعنوان URL تحلیل شود.
به همین دلیل خطا شبیه تجزیه نام به نظر میرسد و نه اتصال ردشده. پورت بدی برای گزارش وجود ندارد، فقط نام میزبانی که وجود ندارد، و خطا پس از تسلیم شدن تحلیلگر میرسد. پیش از دست زدن به سرور، بررسی کنید نمایه ادعا میکند از کدام نوع تونل استفاده میکند.
سه نوع با پورت ثابت
PPTP به TCP 1723 متصل میشود و سپس تونل را در GRE، پروتکل IP 47 حمل میکند. L2TP/IPsec از UDP 1701 برای تونل و UDP 500 بههمراه 4500 برای IPsec استفاده میکند، که 4500 پورت گذر از NAT است. IKEv2 هم از UDP 500 و 4500 استفاده میکند. هیچیک از این نمایهها هیچجای رابط کاربری فیلد پورت نمایش نمیدهد و هیچکدام بر سر پورت غیراستاندارد مذاکره نمیکند.
سروری که روی پورت سفارشی گوش میدهد بنابراین برای این نمایهها دسترسناپذیر است، هر طور که آدرس نوشته شده باشد. پاسخهای عملی باریکاند: پورت استاندارد را روی سرور منتشر کنید، یا پورت استاندارد را روی روتر جلوی آن به پورت سفارشی ترجمه کنید. هر دو نمایه کارخواه را دستنخورده میگذارند، که وقتی نمایه با خطمشی توزیع میشود و نه با تایپ دستی، ارزش زیادی دارد.
SSTP به URL نیاز دارد، نه نام
SSTP استثناست زیرا درون یک نشست TLS اجرا میشود. فیلد باید بهعنوان URL تحلیل شود: نخست طرح https://، سپس میزبان، سپس دونقطه و پورت. بدون طرح، ویندوز همچنان مقدار را نامی ساده میداند و اتصال پیش از هر تبادل TLS شکست میخورد.
دلیل شگفتزده شدن مردم این است که پورت پیشفرض نام میزبان لخت را میپذیرد. نمایهای که هرگز به پورت سفارشی نیاز نداشته هرگز این قاعده را نمیآموزد، و نخستین کسی که یکی اضافه میکند آن را با شکست کشف میکند. پس از ذخیره، مقدار ذخیرهشده را دوباره بخوانید نه اینکه به کادر گفتگو اعتماد کنید:
Get-VpnConnection -Name "Corporate SSTP" | Select-Object Name, ServerAddress, TunnelType
ServerAddress دقیقاً همان چیزی را نشان میدهد که ذخیره شده است. اگر بهصورت نام میزبان لخت با دونقطه خوانده شود، نمایه هرگز URL دریافت نکرده و هیچ تعداد تلاش دوبارهای آن را درست نمیکند.
نحو سازنده که در همان کادر چسبانده میشود
برخی دروازهها قراردادهای اضافهای برای آن فیلد مستند میکنند، مانند realm که پس از پورت افزوده میشود یا پارامترهای پرسوجو که رفتار گواهیها را تغییر میدهند. سرور همان سازنده و در برخی ساختها کارخواه خودش آنها را میفهمند. آنها بخشی از قالب نمایه ویندوز نیستند و چسباندنشان در نمایه داخلی معمولاً همان شکست خاموش نام را پدید میآورد.
با پارامتری که اعتبارسنجی گواهی را غیرفعال میکند مانند هشدار رفتار کنید نه راهحل. اگر نمایه فقط با آن پارامتر متصل میشود، گواهی با نامی که استفاده میشود نمیخواند و تعمیر درست روی دروازه است نه در کارخواه. realm پس از پورت هم همین ویژگی را دارد: تنها وقتی کاری میکند که سرور طرف مقابل انتظارش را داشته باشد.
پورت را اثبات کنید، سپس مرحله شکست را بخوانید
پیش از متهم کردن نمایه تأیید کنید چیزی TCP را روی آن پورت از شبکه کارخواه میپذیرد:
Test-NetConnection vpn.example.com -Port 10443
موفقیت وجود شنونده را اثبات میکند نه SSTP را. سرور وب، پروکسی معکوس یا متعادلکننده بار میتوانند دستدادن TCP را کامل کنند و همچنان SSTP صحبت نکنند، پس آزمون سبز با VPN قرمز ترکیبی واقعی است. موضوع گواهی را با نام در نمایه مقایسه کنید و گزارش RasClient را در ساختهایی که آن را دارند بررسی کنید، زیرا مرحله شکستخورده را ثبت میکند نه یک مهلت عمومی.
سپس گزینهای را در نظر بگیرید که مشکل را برمیدارد نه اینکه مستندش کند: TCP 443 را از بیرون به 10443 روی سرور VPN هدایت کنید. آنگاه کارخواه از نمایه پیشفرض بدون هیچ پورت استفاده میکند، که معمولاً پاکیزهترین چیدمان برای ناوگانی مدیریتشده است و پورت سفارشی را جزئیات درونی میگذارد.