IPSec 터널은 키를 다시 입력할 때까지 유효한 상태로 유지되며 그 후 NO_PROPOSAL_CHOSEN을 얻습니다.

IPSec 터널은 키를 다시 입력할 때까지 유효한 상태로 유지되며 그 후 NO_PROPOSAL_CHOSEN을 얻습니다.

문맥

사무실의 Raspberry Pi와 클라우드의 pfSense 방화벽 사이에 사이트 간 IPSec 터널을 설정했습니다. 저는 Raspberry Pi 측에서 Strongswan을 사용하고 있습니다.

질문

내 터널은 잠시 동안 정상적으로 실행되지만 자체를 다시 암호화해야 할 때 협상이 실패합니다.

나는 분명한 것을 놓치고 있습니까?

로그(라즈베리 쪽)

초기 연결

raspberrypi charon[2422]: 09[IKE] received ESP_TFC_PADDING_NOT_SUPPORTED, not using ESPv3 TFC padding
raspberrypi charon[2422]: 09[CFG] selected proposal: ESP:AES_CBC_128/HMAC_SHA2_256_128/NO_EXT_SEQ
raspberrypi charon[2422]: 09[IKE] CHILD_SA net-net{1} established with SPIs c3eaa3c7_i c944ab71_o and TS RASPI_NET/24 === PFSENSE_NET/16
raspberrypi charon[2422]: 09[IKE] CHILD_SA net-net{1} established with SPIs c3eaa3c7_i c944ab71_o and TS RASPI_NET/24 === PFSENSE_NET/16

키 재생성(여기서 오류가 발생함)

raspberrypi charon[507]: 11[NET] received packet: from PFSENSE_IP[4500] to RASPI_LOCAL_IP[4500] (80 bytes)
raspberrypi charon[507]: 11[ENC] parsed INFORMATIONAL request 153 [ D ]
raspberrypi charon[507]: 11[IKE] received DELETE for ESP CHILD_SA with SPI ce632e5b
raspberrypi charon[507]: 11[IKE] closing CHILD_SA net-net{1} with SPIs ccc38dd0_i (94042284 bytes) ce632e5b_o (5169556 bytes) and TS RASPI_NET/24 === PFSENSE_NET/16
raspberrypi charon[507]: 11[IKE] closing CHILD_SA net-net{1} with SPIs ccc38dd0_i (94042284 bytes) ce632e5b_o (5169556 bytes) and TS RASPI_NET/24 === PFSENSE_NET/16
raspberrypi charon[507]: 11[IKE] sending DELETE for ESP CHILD_SA with SPI ccc38dd0
raspberrypi charon[507]: 11[IKE] CHILD_SA closed
raspberrypi charon[507]: 11[ENC] generating INFORMATIONAL response 153 [ D ]
raspberrypi charon[507]: 11[NET] sending packet: from RASPI_LOCAL_IP[4500] to PFSENSE_IP[4500] (80 bytes)
raspberrypi charon[507]: 12[NET] received packet: from PFSENSE_IP[4500] to RASPI_LOCAL_IP[4500] (80 bytes)
raspberrypi charon[507]: 12[ENC] parsed INFORMATIONAL request 154 [ ]
raspberrypi charon[507]: 12[ENC] generating INFORMATIONAL response 154 [ ]
raspberrypi charon[507]: 12[NET] sending packet: from RASPI_LOCAL_IP[4500] to PFSENSE_IP[4500] (80 bytes)
raspberrypi charon[507]: 06[NET] received packet: from PFSENSE_IP[4500] to RASPI_LOCAL_IP[4500] (640 bytes)
raspberrypi charon[507]: 06[ENC] parsed CREATE_CHILD_SA request 155 [ N(ESP_TFC_PAD_N) SA No KE TSi TSr ]
raspberrypi charon[507]: 06[IKE] received ESP_TFC_PADDING_NOT_SUPPORTED, not using ESPv3 TFC padding
raspberrypi charon[507]: 06[CFG] received proposals: ESP:AES_GCM_16_256/MODP_2048/NO_EXT_SEQ, ESP:AES_GCM_12_256/MODP_2048/NO_EXT_SEQ, ESP:AES_GCM_8_256/MODP_2048/NO_EXT_SEQ, ESP:AES_GCM_16_128/MODP_2048/NO_EXT_SEQ, ESP:AES_CBC_128/HMAC_SHA2_256_128/MODP_2048/NO_EXT_SEQ
raspberrypi charon[507]: 06[CFG] configured proposals: ESP:AES_GCM_16_128/AES_GCM_16_192/AES_GCM_16_256, ESP:AES_CBC_128/AES_CBC_192/AES_CBC_256/HMAC_SHA2_256_128/HMAC_SHA2_384_192/HMAC_SHA2_512_256/HMAC_SHA1_96/AES_XCBC_96/NO_EXT_SEQ
raspberrypi charon[507]: 06[IKE] no acceptable proposal found
raspberrypi charon[507]: 06[IKE] failed to establish CHILD_SA, keeping IKE_SA
raspberrypi charon[507]: 06[ENC] generating CREATE_CHILD_SA response 155 [ N(NO_PROP) ]
raspberrypi charon[507]: 06[NET] sending packet: from RASPI_LOCAL_IP[4500] to PFSENSE_IP[4500] (80 bytes)
raspberrypi charon[507]: 01[JOB] CHILD_SA ESP/0xccc38dd0/RASPI_LOCAL_IP not found for rekey
raspberrypi charon[507]: 08[JOB] CHILD_SA ESP/0xccc38dd0/RASPI_LOCAL_IP not found for rekey

내가 시도한 것

Raspberry에 SSH로 연결하고 실행하면 ipsec restart터널이 다시 설정되고 다음 키를 다시 입력할 때까지 제대로 작동합니다.

키를 다시 입력할 때 이러한 제안이 일치하지 않는 이유를 이해할 수 없습니다(초기 연결과 일치하는 경우). 또한 swanctl 구성 파일에서 다른 알고리즘을 요청했습니다.

양쪽에서 구성을 변경해 보았지만 문제는 항상 Raspberry 쪽에 있는 것 같습니다(그런데 pfSense는 응답자와만 작동합니다).

구성 파일

/etc/swanctl/conf.d/myfile.conf

connections {
  gw-gw {
    local_addrs = RASPI_LAN_IP
    remote_addrs = PFSENSE_IP
    local {
      auth = psk
      id = RASPI_PUBLIC_IP
    }
    remote {
      auth = psk
      id = PFSENSE_IP
    }
    children {
      net-net {
        local_ts = RASPI_NET/24
        remote_ts = PFSENSE_NET/16
        start_action = start
        dpd_action = restart
      }
    }
    version = 2
    dpd_delay = 60
    mobike = no
    proposals = aes128-sha256-modp2048,default
  }
}

secrets {
  ike-1 {
    id-1 = RASPI_PUBLIC_IP
    id-2 = PFSENSE_IP
    secret = "MYPSK"
  }
}

psf

스테이지 1

스테이지 1

2단계

2단계

답변1

또한 swanctl 구성 파일에서 다른 알고리즘을 요청했습니다.

ESP/IPsec이 아닌 IKE에 대해서만 이 작업을 수행합니다.

키를 다시 입력할 때 이러한 제안이 일치하지 않는 이유를 이해할 수 없습니다(초기 연결과 일치하는 경우).

이는 IKEv2에 대한 일반적인 오해입니다. IKE_AUTH 중에 생성된 CHILD_SA(IPsec SA)에 대한 협상된 제안에는 키가 항상 IKE_SA의 키 자료에서 파생되므로 키 교환 방법(예: DH 그룹)이 포함되어 있지 않습니다.

따라서 한 피어(귀하의 경우 pfSense)에 하나 이상의 DH 그룹이 구성되어 있고(또한 포함하지 않음 NONE) 다른 피어(strongSwan)에 없는 경우 CHILD_SA 비밀 키가 실제로 키와 키 교환이 재생성됩니다. 방법을 협의해야 합니다. 이것CHILD_SA 키 재생성에 대한 StrongSwan 문서이것도 설명되어 있습니다.

따라서 StrongSwan 클라이언트에서 구성하려는 내용은 다음과 같습니다.

connections {
  gw-gw {
    ...
    children {
      net-net {
        ...
        esp_proposals = aes128gcm16-modp2048
      }
    }
    ...
  }
}

관련 정보