양쪽 피어가 모두 AES를 지원하고 둘 다 SHA-256을 받아들이는데도 터널이 올라오지 않습니다. 제안은 아무도 비교하지 않은 구성 요소, 보통 키 교환 그룹에서 실패했습니다. 이 문서는 무엇이든 바꾸기 전에 실제 교환을 읽고, 범위가 정해진 정책 하나를 적용하며, 이전 매개 변수를 복원하는 롤백을 남깁니다.

그룹을 바꾸기 전에 실패를 읽으십시오

«정책 일치 오류»는 요약이지 진단이 아닙니다. 상호 수용 가능한 제안을 찾지 못했다는 뜻이며, 어느 구성 요소가 거부되었는지는 말해 주지 않습니다. 특정 그룹에 대한 증거가 아니라 조사의 출발점으로 다루십시오.

답은 보통 서버 쪽에 있습니다. 적절한 수준의 strongSwan 로그는 클라이언트에서 받은 제안과 받아들이도록 구성된 제안을 나열하며, 두 목록의 차이가 실패한 구성 요소를 알려 줍니다.

클라이언트가 오래된 포럼 게시물이 말하는 것을 제공한다고 가정하지 마십시오. 활성 프로필과 설치된 정책이 제공 목록을 결정하며, 업데이트된 Windows 빌드는 참고하는 스크린샷과 다른 집합을 제공할 수 있습니다.

두 목록을 모두 적어 두십시오. 네 가지 변환 위치와 하나의 그룹은 짧은 목록이며, 한 줄씩 비교하는 편이 어떤 실험보다 시간이 적게 듭니다. 네 위치는 눈으로 붙들고 있기 쉽습니다. 로그 파일은 그렇지 않습니다.

익숙한 이름 하나가 아니라 모든 변환을 비교하십시오

IKE 제안은 모두 일치해야 하는 선택의 집합입니다. 암호화는 협상을 보호하고, 무결성 또는 PRF가 이를 인증하며, Diffie-Hellman 그룹이 새로운 키 자료를 만듭니다. 처음 둘에서 일치하고 셋째에서 다른 제안은 두 피어 모두에게 여전히 받아들일 수 없습니다.

여기서 혼동되는 두 Windows 필드는 서로 다른 단계에 속합니다. DHGroup 는 IKE 키 교환에 적용되고, PfsGroup 는 트래픽을 보호하는 자식 연결에 적용됩니다. 둘째를 바꾸어도 첫째의 실패는 고칠 수 없습니다.

그룹 이름은 구현마다 다르며, 이는 별개의 혼동 원인입니다. strongSwan은 modp2048 와 ecp256 를 쓰고 Windows는 Group14 나 ECP256 같은 열거 이름을 쓰므로, 비교하려면 먼저 옮겨 읽어야 합니다. 두 이름을 담은 두 열짜리 메모를 남기십시오. 그러면 다음 불일치는 몇 초 만에 분류됩니다.

TransformWindows parameterstrongSwan nameFailure it causes
EncryptionCipherTransformConstantsaes, aes256gcm and similarNo common proposal at all
Integrity or PRFAuthenticationTransformConstantssha256, sha512 and similarProposal rejected after encryption matches
Key-exchange groupDHGroupmodp2048, ecp256Exchange fails during key establishment
Child SA protectionPfsGroupesp proposal groupsTunnel 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와 남은 수명도 포함합니다. 두 번째는 클라이언트 프로필이 지금 무엇을 담고 있는지 보여 주며, 설정한 정책이 유효한 정책임을 확인하는 유일한 방법입니다.

성공을 선언하기 전에 전체 키 갱신을 지켜보십시오. 자식 연결이 교체될 만큼 충분히 오래 연결을 유지한 뒤 트래픽이 계속되는지 확인한다는 뜻입니다. 대부분의 정책 불일치는 초기 협상이 갱신이 받아들이지 않는 집합으로도 성공할 수 있기 때문에 그 단계에 숨어 있습니다.

롤백은 이전 매개 변수 집합이지 관대한 대체안이 아닙니다. 클라이언트가 약한 옛 그룹만 제시했다면, 답은 클라이언트와 서버의 공통 정책을 개선하는 것이지, 미래의 모든 피어가 그 그룹까지 내려와 협상할 수 있는 게이트웨이에 그 그룹을 추가하는 것이 아닙니다.

네 가지 매개 변수, 그룹, 연결 범위, 키 갱신 결과를 기록하십시오. 짧은 메모이지만, 이것이 실행 문서와 터널이 그때 올라왔다는 이야기의 차이입니다.

관련 글