Windows و strongSwan: تطبیق چهار تبدیل در پیشنهاد IKE
یک رمز مشترک کافی نیست وقتی دو طرف بر سر گروه تبادل کلید اختلاف دارند. هر چهار تبدیل را مقایسه کنید و سپس یک سیاست محدود پروفایل را اعمال کنید.
هر دو طرف AES را پشتیبانی میکنند، هر دو SHA-256 را میپذیرند و تونل باز هم بالا نمیآید. پیشنهاد در مؤلفهای شکست خورد که هیچکس آن را مقایسه نکرده بود، معمولاً گروه تبادل کلید. این راهنما تبادل واقعی را پیش از هر تغییری میخواند، یک سیاست محدود را اعمال میکند و یک بازگشت باقی میگذارد که پارامترهای پیشین را برمیگرداند.
پیش از تغییر یک گروه، شکست را بخوانید
«خطای تطبیق سیاست» یک خلاصه است، نه تشخیص. یعنی پیشنهاد قابلقبولی برای هر دو طرف پیدا نشد و چیزی درباره اینکه کدام مؤلفه رد شده است نمیگوید. آن را آغاز بررسی بدانید، نه مدرکی درباره یک گروه مشخص.
پاسخ معمولاً در سمت سرور است. گزارش strongSwan در سطح مناسب، پیشنهادی را که از کلاینت دریافت کرده و پیشنهادی را که برای پذیرش آن پیکربندی شده فهرست میکند، و تفاوت دو فهرست نام مؤلفه شکستخورده را میگوید.
فرض نکنید کلاینت چیزی را پیشنهاد میدهد که یک نوشته قدیمی انجمن میگوید. پروفایل فعال و سیاست نصبشده آن فهرست پیشنهادی را تعیین میکنند، و یک نسخه بهروزشده Windows ممکن است مجموعهای متفاوت از آنچه در تصویر صفحهای که از آن کپی میکنید هست، پیشنهاد دهد.
هر دو فهرست را بنویسید. چهار جایگاه تبدیل و یک گروه فهرست کوتاهی است، و مقایسه سطر به سطر آن از هر آزمایشی کمتر وقت میگیرد. چهار جایگاه را میتوان آسان در نظر نگه داشت. یک فایل گزارش را نه.
هر تبدیل را مقایسه کنید، نه یک نام آشنا
پیشنهاد IKE مجموعهای از انتخابهاست که همه باید مطابقت داشته باشند. رمزگذاری از مذاکره محافظت میکند، یکپارچگی یا یک PRF آن را تأیید میکند، و یک گروه Diffie-Hellman مواد کلید تازه ایجاد میکند. پیشنهادی که در دو مورد نخست مطابقت دارد و در سومی تفاوت دارد، هنوز برای هر دو طرف پذیرفتنی نیست.
دو فیلد Windows که اینجا اشتباه گرفته میشوند به مرحلههای متفاوت تعلق دارند. DHGroup به تبادل کلید IKE مربوط است، در حالی که PfsGroup به انجمن فرزند که از ترافیک محافظت میکند مربوط است. تغییر دومی نمیتواند شکست اولی را جبران کند.
نام گروهها میان پیادهسازیها متفاوت است و این منبع سردرگمی جداگانهای است. strongSwan modp2048 و ecp256 را مینویسد، در حالی که Windows از نامهای شمارشی مانند Group14 و ECP256 استفاده میکند، پس مقایسه باید پیش از مقایسه ترجمه کند. یک یادداشت دوستونی با هر دو نام نگه دارید. آنگاه اختلاف بعدی در چند ثانیه دستهبندی میشود.
| Transform | Windows parameter | strongSwan name | Failure it causes |
|---|---|---|---|
| Encryption | CipherTransformConstants | aes, aes256gcm and similar | No common proposal at all |
| Integrity or PRF | AuthenticationTransformConstants | sha256, sha512 and similar | Proposal rejected after encryption matches |
| Key-exchange group | DHGroup | modp2048, ecp256 | Exchange fails during key establishment |
| Child SA protection | PfsGroup | esp proposal groups | Tunnel negotiates, data association does not |
یک سیاست کامل و محدود را اعمال کنید
ابزار پشتیبانیشده برای پروفایل بومی IKEv2 یک سیاست IPsec برای هر اتصال است که بهصورت یک شیء و نه فیلد به فیلد تنظیم میشود. نخست پیشنمایش بگیرید، سپس اعمال کنید و پارامترهای پیشین را در سابقه تغییر نگه دارید.
Set-VpnConnectionIPsecConfiguration -ConnectionName "Northwind IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -DHGroup ECP256 -PfsGroup ECP256 -WhatIf
سوئیچ -WhatIf تغییر محلی را پیشنمایش میکند و چیزی اعمال نمیکند. این مفید است و در همان حال تله رایجی است، زیرا پیشنمایش فقط ثابت میکند که پارامترها از نظر نحوی برای cmdlet محلی پذیرفتنیاند. درباره اینکه دروازه پیشنهاد حاصل را میپذیرد یا نه چیزی نمیگوید.
در همین حال دامنه را هم مطابقت دهید. اتصال در مخزن همه کاربران به پارامتر متناظر همه کاربران نیاز دارد، و ویرایش پروفایل تککاربر با همان نام نمایشی، شیء دیگری را تغییر میدهد که تونل از آن استفاده نمیکند.
سپس پیش از آزمون، سمت strongSwan را به همان مجموعه تنظیم کنید. تغییر هماهنگ در هر دو انتها تنها نسخهای از این کار است که همگرا میشود؛ تغییر یک سمت و تلاش دوباره پیاپی، گزارشی پر از همان رد شدن میسازد.
تبادل و تازهسازی کلید را جداگانه بررسی کنید
اتصال موفق یک مشاهده است و تازهسازی کلید مشاهده دیگری. مذاکره اولیه IKE از یک مجموعه پارامتر استفاده میکند، و انجمن فرزندی که ترافیک را حمل میکند میتواند بعداً با سیاست خودش دوباره مذاکره شود. پیکربندیای که وصل میشود و بعد از مدتی میافتد معمولاً حالت دوم است.
ipsec statusall | grep -A6 "Northwind"
Get-VpnConnection -Name "Northwind IKEv2" | Format-List *
فرمان نخست دیدگاه سرور از انجمنهای برقرارشده را نشان میدهد، از جمله SA فرزند و عمر باقیمانده آن. فرمان دوم نشان میدهد که پروفایل کلاینت اکنون چه دارد، و تنها راه تأیید این است که سیاستی که تنظیم کردهاید همان سیاست در حال اجراست.
پیش از اعلام موفقیت، یک تازهسازی کامل کلید را ببینید. یعنی اتصال را بهاندازه کافی بالا نگه دارید تا انجمن فرزند جایگزین شود و سپس تأیید کنید که ترافیک ادامه دارد. بیشتر ناسازگاریهای سیاست در همان مرحله پنهان میشوند، زیرا مذاکره اولیه میتواند با مجموعهای موفق شود که تازهسازی آن را نمیپذیرد.
بازگشت همان مجموعه پارامترهای پیشین است، نه یک جایگزین آسانگیر. اگر کلاینت فقط یک گروه قدیمی ضعیف پیشنهاد داده بود، پاسخ بهبود سیاست مشترک کلاینت و سرور است، نه افزودن آن گروه به دروازه جایی که هر طرف آینده بتواند به سمت آن پایین مذاکره کند.
چهار پارامتر، گروه، دامنه اتصال و نتیجه تازهسازی کلید را ثبت کنید. این یادداشت کوتاهی است و همان تفاوت میان یک راهنما و داستانی درباره زمانی است که تونل بالا آمد.