하나 올라가고 연결은 0개: 그 strongSwan 줄이 세는 것
옛 제목은 서브넷이나 자식 SA가 아니라 IKE 연결을 세므로 먼저 로드된 정의와 설치된 자식을 읽으세요.
Security Associations (1 up, 0 connecting)라고 표시된 상태 줄을 읽으면 하나의 터널이 동작한다는 보고처럼 보입니다. 두 서브넷이 동시에 그 터널을 통해 트래픽을 보내고 있으니 숫자가 거짓말을 하는 것처럼 보입니다. 거짓말이 아니라 IKE 연결을 세는 것이고, 그중 하나가 여러 자식을 담을 수 있습니다. 제안이나 경로를 건드리기 전에 목록들을 읽으세요.
제목과 트래픽이 어긋나는 이유
옛 stroke 출력은 합계를 보안 연결이라고 부르고 IKE 연결 관리자에서 가져옵니다. 설립된 IKE 연결은 각각 하나를 더하며, 그 아래에 CHILD SA가 몇 개 있든 상관없습니다. 하나의 IKEv2 부모는 보통 여러 자식을 나르며, 트래픽 선택자 쌍마다 하나씩이고, 자식의 협상된 선택자는 하나 이상의 주소나 프리픽스를 덮을 수 있습니다. 따라서 설정의 주소 개수와 제목의 숫자 사이에는 정해진 관계가 없습니다.
최신 출력은 때때로 옛 “up” 표현 대신 합계를 보여 주며, swanctl이 관리하는 데몬은 옛 stroke 설정으로 전혀 구동되지 않습니다. 버전 사이에서 표현도 계산 규칙도 당연하게 여기지 마세요.
무엇이든 바꾸기 전에 세 목록을 비교하세요
로드된 것부터, 그다음 협상된 것, 그다음 실제로 패킷을 움직이는 것부터 시작하세요. 이것은 서로 다른 세 가지 질문이고 각각 자기 명령이 있습니다.
swanctl --list-conns
swanctl --list-sas
첫 번째는 데몬이 받아들인 연결 정의를 나열합니다. 두 번째는 설립된 IKE 연결을 자식과 함께 나열하며, 진짜 계층은 거기에 나타납니다. 파일에는 있지만 첫 목록에 없는 정의는 로드된 적이 없고, 개시자의 재시도를 아무리 반복해도 고쳐지지 않습니다. 대신 옛 인터페이스를 실행한다면 대응하는 쌍은 ipsec statusall 와 같은 swanctl 목록이며, 어느 플러그인이 설정을 소유하는지에 따릅니다. 한 호스트의 두 데몬 사이에서 도구를 섞지 마세요, 그리고 일관된 답 하나를 기대해서도 안 됩니다.
swanctl --list-sas --raw | head -40
ip -s xfrm state
원시 형식은 식별자와 선택자를 비교할 수 있게 보이게 하고, 커널 상태 목록은 스택이 무엇을 설치했다고 믿는지 보여 줍니다. 데몬과 커널이 어긋날 때는 기존 자식을 둘러싸고 데몬이 다시 시작되었거나, 그 아래에서 커널 객체가 제거된 것입니다.
합계가 아니라 계층을 읽으세요
자식 둘을 가진 예시 설립 부모는 아래에 자식 둘을 둔 하나의 노드처럼 보이며, 각각 자기 상태와 모드로 표시됩니다. 누군가 대시보드에서 붙여 넣은 요약을 읽는 대신 실제 출력을 덤프하고 자식을 직접 세세요.
swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'
자식 둘이 설치된 부모 하나는 건강한 두 서브넷 터널입니다. 자식 하나가 설치되고 하나가 없는 부모는 다른 상황이며, 빠진 자식의 선택자가 원격 측 제안과 비교해야 할 대상입니다. 키 갱신 중에는 옛 자식과 그 대체물이 짧은 동안 함께 나타날 수 있습니다. 갱신 도중에 센 수는 중복처럼 보이고 그 뒤에 센 수는 손실처럼 보이므로 스냅숏에는 타임스탬프를 함께 남기세요.
로드되고 설치되어 트래픽이 지나갈 때
설치된 상태의 자식은 협상된 매개변수와 커널 항목을 가집니다. 하지만 반드시 패킷을 나른 것은 아닙니다: 선택자가 예상한 트래픽보다 좁을 수 있고, 터널이 보기도 전에 경로가 그 트래픽을 다른 곳으로 보낼 수 있습니다. 권한 있는 호스트에서 협상된 선택자에 맞는 흐름을 보낸 뒤 제목이 아니라 자식의 카운터를 읽으세요. 맞는 트래픽을 만들어도 제로에 머무는 카운터는 IKE가 아니라 라우팅이나 정책을 가리킵니다.
swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'
이름 있는 자식을 시작하는 것은 눈에 보이는 결과가 있는 의도적 조작이며, “아무도 요청하지 않아 연결이 유휴 상태”라는 것과 “연결이 올라올 수 없다”는 것을 구분합니다. 요청 시 트랩 정책은 첫 사례와 똑같이 동작하므로, 고장이라고 부르기 전에 연결의 시작 설정을 읽으세요.
셈이 정말 틀렸을 때
로드된 목록에서 정의가 빠져 있다면 설정 로딩과 어느 데몬 인스턴스가 도는지 보세요. 로드되었지만 협상하지 않는다면 제안, 인증 컨텍스트, 선택자를 상대와 비교하되 한 번에 자식 하나씩 보세요. 시도마다 요소 하나만 바꾸고 바꾼 식별자를 기록하세요. 어느 것인지 알면 제안을 되돌리는 일은 사소하지만 분리하지 않은 편집 세 번 뒤에는 추측이 됩니다.
먼저 잘못 읽은 것을 고치세요. “사라진” 두 번째 터널이라는 보고는 대개 부모 하나 아래 자식 둘이 설치된 상태로 끝나며, 실제로 깨져 있던 것은 계층이 아니라 사람들이 믿은 요약 줄뿐이었습니다.