L2TP/IPsec PSK가 거부됨: 먼저 대화 상자, 그다음 파일
화면에 보이는 키는 오래된 시크릿 파일이나 보이지 않는 줄바꿈 때문에 여전히 실패할 수 있습니다. NetworkManager 필드에서 /etc/ipsec.d까지 차례로 따라가 보세요.
관리자의 메시지에서 사전 공유 키를 NetworkManager 대화 상자에 붙여 넣고 표시 확인란을 선택하면 키는 글자 하나까지 일치합니다. 그래도 연결은 터널이 올라오기 전에 인증 오류로 끝납니다. 처음 이 상황을 봤을 때 나는 키가 틀렸다고 생각했지만 그렇지 않았습니다. 데몬이 실제로 읽는 것은 플러그인이 그 연결을 위해 쓰는 시크릿 파일과 값이 대화 상자를 거치며 변하지 않았는지라는 두 가지로 결정됩니다.
아래 순서는 키를 필드에서 파일까지 따라가며, 어디서 사라졌는지 알려 주는 것도 이 순서입니다. 작동하는 컴퓨터가 아니라 실패하는 컴퓨터에서 해 보세요, 두 컴퓨터의 차이는 보통 키가 아니라 파일 배치이기 때문입니다.
대화 상자에서 시작하되 필드를 믿지 마세요
연결의 IPsec 탭을 열고 키를 붙여 넣지 말고 다시 입력하세요. 채팅 메시지나 PDF, 비밀번호 관리자에서 복사한 키에는 필드가 표시하지 않는 끝 줄바꿈이 붙어 있을 수 있고, 보이는 글자는 여전히 정상으로 보입니다.
비밀번호 표시 컨트롤을 눌러 문자열의 가운데가 아니라 끝을 보세요. 커서가 텍스트 아래에 빈 줄을 남긴다면 그것을 지우고 마지막 글자를 다시 입력하세요. 이 한 번의 수정으로 이런 보고의 놀라운 부분이 해결되며, 어떤 로그를 읽는 것보다 비용이 적습니다.
키가 긴 줄을 접는 티켓 시스템에서 왔다면 줄을 접지 않는 경로로 요청하세요. 두 문자열을 나란히 눈으로 보는 대신 관리자와 길이를 비교하세요, 접는 지점에서 사라진 글자는 비례 글꼴에서 보이지 않습니다.
키를 /etc/ipsec.d 안으로 따라가세요
플러그인은 PSK를 명령줄 인수로 IPsec 데몬에 넘기지 않고, 대신 값을 시크릿 파일에 저장하고 데몬이 그 파일을 불러오도록 준비합니다. include 줄이 없으면 /etc/ipsec.secrets에 추가합니다. 대화 상자가 들고 있는 것은 생성된 파일에 대한 입력이며 사용 중인 값이 아닙니다.
무엇이 있는지 먼저 나열하세요:
ipsec --version
sudo ls -l /etc/ipsec.d/*.secrets /etc/ipsec.d/ipsec.nm-l2tp.secrets 2>/dev/null
sudo grep -n "include" /etc/ipsec.secrets
플러그인의 오래된 릴리스는 연결마다 파일 하나를 연결의 UUID를 이름으로 삼아 썼으며, 예를 들어 /etc/ipsec.d/nm-l2tp-ipsec-<uuid>.secrets입니다. 애플릿에서 프로필을 지워도 그 파일이 안정적으로 지워지지 않습니다. 이전 서버의 오래된 파일이 아직 디스크에 있고 여전히 포함되어 있다면 데몬은 더 이상 쓰지 않는 프로필의 시크릿을 고를 수 있고, 보이는 필드가 맞는데도 연결이 실패합니다.
1.2.12 변경이 업그레이드에 무엇을 했는지 이해하세요
플러그인 1.2.12는 연결별 시크릿 파일을 하나의 공유 파일 /etc/ipsec.d/ipsec.nm-l2tp.secrets로 바꿨습니다. 업그레이드는 UUID별 오래된 파일을 정리하지 않고, 기존 include /etc/ipsec.d/*.secrets 줄이 여전히 그것들을 불러옵니다. 1.2.16은 기본 제안 처리 방식을 바꾼 것이지 시크릿 배치를 바꾼 것이 아닙니다.
그 이력이 같아 보이는 프로필을 가진 두 컴퓨터가 다르게 동작하는 이유를 설명합니다. 키는 동일하지만 데몬이 포함하는 파일 집합은 동일하지 않습니다. 고아 파일을 제거할 때는 삭제하지 말고 옆으로 옮기고, 연결을 확인한 뒤 동작 상태를 기록하고 나서 삭제하세요. 이름을 바꾸면 문제가 다른 곳에 있을 경우 옛 값을 되살릴 수 있습니다.
저장 형식이 담을 수 없는 문자를 분리하세요
공유 시크릿 문자열에 대해 strongSwan 문서는 값에 줄바꿈이나 큰따옴표 문자를 넣을 수 없다고 밝힙니다. 문서에서 붙여 넣은 키는 일반 대화 상자에서 시각적 차이 없이 둘 중 하나를 지닐 수 있습니다.
1.2.12 이후 저장되는 값은 평문이 아닙니다. 플러그인은 PSK가 파일에 도달하기 전에 base64로 인코딩하며, 릴리스 노트는 그 인코딩을 큰따옴표가 이제 키에서 허용되는 이유로 제시합니다. 따라서 필드에 입력한 따옴표는 표현 가능하지만, 모든 제어 문자에 대해 그렇지는 않습니다.
길이는 또 다른 제약입니다. L2TP/IPsec 소프트웨어 전반에 보편적인 최솟값은 없습니다, 어떤 클라이언트는 스무 글자보다 짧은 키를 받아들이고 어떤 게이트웨이는 최솟값을 강제합니다. 짧은 키가 거부된다면 그 규칙은 서버 정책이나 해당 클라이언트의 검증에 속하며, 로컬에서 무엇을 올려도 바뀌지 않습니다.
어느 인증 계층이 실패했는지 읽으세요
먼저 ipsec --version를 실행하는 것은 strongSwan과 Libreswan이 파일 이름과 문법이 달라 한쪽에 대한 조언이 다른 쪽을 망칠 수 있기 때문입니다. 그다음 클라이언트 메시지나 데몬 로그에서 실패 단계를 읽으세요, 사전 공유 키에 대한 불평은 사용자 이름과 비밀번호가 거부된 것과 다른 사건입니다.
PSK는 터널의 양 끝을 인증합니다. 사용자 이름과 비밀번호는 L2TP 안쪽의 사람을 인증하며, IPsec 연결이 올라온 뒤 PPP가 그것들을 다룹니다. 올바른 PSK라도 계정이 틀리면 실패하고, 계정을 바꿔도 데몬이 제대로 읽지 못한 키는 고쳐지지 않습니다.
티켓을 닫을 때 네 가지를 모두 적으세요, 플러그인 버전, 사용 중인 시크릿 파일, 키를 다시 입력했는지 붙여 넣었는지, 그리고 오류에 적힌 계층입니다. 그러면 나중에 이 순서를 반복하는 사람이 작동하는 컴퓨터와 실패하는 컴퓨터의 차이로 곧장 갈 수 있습니다.