Add-VpnConnection: چرا PSK خراب میشود و چرا نشانی قدیمی میماند
PowerShell کلید از پیش به اشتراک گذاشتهشده را داخل گیومه دوتایی پیش از ذخیره توسط cmdlet باز میکند، و تونل فعال نشانی قدیمی را تا اتصال دوباره نگه میدارد.
پروفایل VPN در Windows یک ورودی در دفتر تلفن است و PowerShell یکی از راههای ویرایش آن ورودی است. از این تفاوت دو شکست برمیآید: کلید از پیش به اشتراک گذاشتهشدهای که پیش از رسیدن به سرور خراب شده است، و نشانی سروری که بهروزشده به نظر میرسد ولی همانی نیست که تونل بعدی با آن تماس میگیرد. هر دو وقتی پروفایل را بهعنوان وضعیت ذخیرهشده ببینید و نه فرمانی که اجرا کردهاید، آسانتر دیده میشوند. این بررسی به ترتیب وقوع ویرایشها پیش میرود: ساخت، تغییر، دامنه، خواندن دوباره.
پروفایل را با کلید عینی بسازید
Add-VpnConnection کلید از پیش به اشتراک گذاشتهشده L2TP را از طریق -L2tpPsk میپذیرد. PowerShell رشته را پیش از دریافت توسط cmdlet پردازش میکند، و داخل گیومه دوتایی علامت دلار یک ارجاع متغیر را آغاز میکند و backtick یک گریز را. کلیدی که هر یک از این دو را داشته باشد کوتاهتر یا با نویسهای دیگر میرسد، و پروفایل با رمز اشتباه با موفقیت ساخته میشود.
سپس شکست در احراز هویت IPsec پدیدار میشود، جایی که تونل از بالا آمدن خودداری میکند. به همین دلیل خطای گیومه اغلب بهعنوان مشکلی از سمت سرور گزارش میشود: پروفایل وجود دارد، نام درست است، و رمز بیصدا اشتباه است.
| How you write it | What PowerShell does | Result |
|---|---|---|
| "p@ss$word!42" | Expands $word as a variable | Stored key is truncated |
| Double-quoted with an escape character | Consumes the next character as an escape | One character disappears |
| 'p@ss$word!42' | Keeps the literal characters | Stored key matches the secret |
گیومه تک راهحل است و باید کل مقدار را در بر بگیرد. اگر ورودی از پیش با کلید بد وجود دارد، -Force آن را جایگزین میکند، یا پروفایل را حذف و دوباره بسازید و سپس با اتصال تازه آزمایش کنید:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
رمز واقعی را بیرون از تاریخچه پوسته و اسکریپتهای مشترک نگه دارید. آن را در زمان اجرا از انبار تأییدشده بخوانید و متغیر را بهجای مقدار عینی بفرستید، که مشکل گیومه را کاملاً دور میزند.
نشانی را تغییر دهید، سپس دوباره متصل شوید
Set-VpnConnection پارامترهای جداشده با فاصله را میپذیرد، نه نحو انتساب. نوشتن -ServerAddress = "203.0.113.10" یک توکن اضافه میفرستد، و cmdlet یا خطا میدهد یا چیزی را ذخیره میکند که قصدش را نداشتید. شکل درست -Name "Office L2TP" -ServerAddress 203.0.113.10 است.
حتی با نحو درست، تغییر به تونلی که از پیش بالاست نمیرسد. اتصال برقرارشده نشانیای را که با آن تماس گرفته نگه میدارد تا قطع شود، پس آزمایش همان نشست هیچ چیزی درباره مقدار تازه ثابت نمیکند. قطع کنید، ویرایش کنید، دوباره متصل شوید، و نشانی همتا را در جزئیات اتصال تأیید کنید.
برخی ویژگیها در جای خود قابل تغییر نیستند. وقتی cmdlet امتناع میکند، پارامترهای موجود را یادداشت کنید، پروفایل را حذف کنید و آن را با مقادیر اصلاحشده دوباره بسازید، و تنظیمات اصلی تونل و احراز هویت را نگه دارید. اسکریپتی که فقط باید شماره تلفن را عوض کند میتواند ورودی دفتر تلفن را از طریق RAS API ویرایش کند بهجای بازسازی همهچیز. هر مسیری را که انتخاب کنید، پس از آن مقادیر ذخیرهشده را تأیید کنید و به سکوت فرمان اعتماد نکنید.
بدانید کدام دفتر تلفن را ویرایش کردید
پروفایل هر کاربر در پوشه اتصالات شبکه همان کاربر زندگی میکند و پروفایل همه کاربران در پوشه سراسری ماشین زیر درخت دادههای برنامه. اینها ورودیهای متفاوت با دامنههای متفاوتاند، و ویرایش یکی دیگری را دستنخورده میگذارد.
به همین دلیل ممکن است تغییری ناپدیدشده به نظر برسد: اسکریپت با یک حساب اجرا شد و آزمایش با حسابی دیگر. وقتی پروفایل متعلق به ماشین است از -AllUserConnection استفاده کنید، و هنگام خواندن دوباره همان دامنه را بررسی کنید.
پیش از آزمایش پروفایل را دوباره بخوانید
از Windows بپرسید چه ذخیره کرده، نه چه فرستادید:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
آن خروجی را با قصد مقایسه کنید، سپس اتصال تازهای آغاز کنید. اگر شمارهگیری شکست خورد، پیش از تغییر دوباره پروفایل، گزارش کارخواه RAS را در Event Viewer ببینید، زیرا گزارش نام مرحلهای را میگوید که شکست خورده است.
طرح احراز هویت را هنگام ویرایش دستنخورده نگه دارید. فرمانی که نشانی را عوض میکند ولی گواهی یا پیکربندی EAP را رها میکند شکستی میسازد که نامرتبط با ویرایش به نظر میرسد، و برونبری پروفایل کارکننده از پیش چیزی برای بازگرداندن به شما میدهد بهجای حدس.