"ip xfrm"을 사용하여 IPsec 키를 다시 생성합니다.

"ip xfrm"을 사용하여 IPsec 키를 다시 생성합니다.

두 Linux 시스템 간에 간단한 IPsec을 구축했습니다.

SHAKEY=0xd3413c31c7d19c93d04db1c6ae8d73d9a64910c2e76297129acde44aaa9de5c5
AESKEY=0xcd191fac520878852e15647dce3456ba9857e2dfd6ed56421eb50cb58d7a1e5a
SPI=0x01

if [ "$(hostname -s)" = "host1" ] ;then
  SRC=10.0.0.1
  DST=10.0.0.3
fi
if [ "$(hostname -s)" = "host3" ] ;then
  SRC=10.0.0.3
  DST=10.0.0.1
fi
SDIR="src $SRC dst $DST"
DDIR="src $DST dst $SRC"

ip xfrm state add ${SDIR} proto esp spi ${SPI} reqid ${SPI} \
  mode transport auth sha256 ${SHAKEY} enc aes ${AESKEY}
ip xfrm state add ${DDIR} proto esp spi ${SPI} reqid ${SPI} \
  mode transport auth sha256 ${SHAKEY} enc aes ${AESKEY}
ip xfrm policy add ${SDIR} dir out priority 0 \
  tmpl ${SDIR} proto esp reqid ${SPI} mode transport
ip xfrm policy add ${DDIR} dir in priority 0 \
  tmpl ${DDIR} proto esp reqid ${SPI} mode transport

이것은 훌륭하게 작동합니다. 이제 패킷 흐름을 중단하지 않고 새로운 키 세트로 변경하고 싶습니다. 내가 예상하는 작동 방식은 수신 경로에 추가 키 세트를 추가하고, 전송 경로를 새 키 세트로 전환하고, 이전 키 세트를 삭제하는 것입니다.

이것이 올바른 접근 방식입니까? 실제로 어떻게 해야 합니까? 내가 시도한 것은 다음과 같습니다.

AESKEY2=0x2bdfbfbee5aab7be4f4ccfe202e6f1d5e363503140441fe8aba77c3b784e65bd
SHAKEY2=0xed2ac9c739894c73bae1a9fe477631add20398b0bbc906c5ec486f27ddbb84ac
SPI2=0x02

ip xfrm state add ${SDIR} proto esp spi ${SPI2} reqid ${SPI2} \
  mode transport auth sha256 ${SHAKEY2} enc aes ${AESKEY2}
ip xfrm state add ${DDIR} proto esp spi ${SPI2} reqid ${SPI2} \
  mode transport auth sha256 ${SHAKEY2} enc aes ${AESKEY2}

이는 패킷이 SPI 1에서 계속 흐르기 때문에 작동하는 것 같습니다.

ip xfrm policy add ${DDIR} dir in \
  tmpl ${DDIR} proto esp reqid ${SPI2} mode transport

실패: RTNETLINK 답변: 파일이 존재합니다.

ip xfrm policy add ${SDIR} dir out priority 5\
  tmpl ${SDIR} proto esp reqid ${SPI2} mode transport
ip xfrm policy add ${DDIR} dir in priority 5 \
  tmpl ${DDIR} proto esp reqid ${SPI2} mode transport

새 정책을 추가하는 것은 허용되지만 우선순위가 0인 항목을 명시적으로 제거할 수 있는 방법은 없는 것 같습니다. ip xfrm policy del ${SDIR} dir out priority 2"오류: '우선순위' 매개변수에 오류가 있습니다: 알 수 없음"으로 인해 실패합니다. ip xfrm policy del ${SDIR} dir out우선순위 0 항목을 제거하고(두 번째 호출은 우선순위 5 항목을 제거함) SPI 2에서 트래픽 전송을 시작하지만 항목의 정책 디렉터리가 변경되지 않은 경우에도 SPI 1의 반대쪽 끝 트래픽이 수락을 중지합니다.

내가 무엇을 놓치고 있나요? 트래픽을 방해하지 않고 키를 업데이트하려면 어떻게 해야 합니까?

답변1

그것을 알아 냈습니다 :

ip xfrm state add ${DDIR} proto esp spi ${SPI2} reqid ${SPI} \
  mode transport auth sha256 ${SHAKEY2} enc aes ${AESKEY2}

두 노드 모두에서 새 SPI를 수신하고 이전 필수 ID와 연결할 수 있습니다. reqid는 이 SA를 관련 "정책"과 계속 연결합니다.

그런 다음 전송을 위한 새 SPI와 키를 추가하세요. 노드는 즉시 새 키를 사용하기 시작합니다.

ip xfrm state add ${SDIR} proto esp spi ${SPI2} reqid ${SPI} \
  mode transport auth sha256 ${SHAKEY2} enc aes ${AESKEY2}

마지막으로 양측이 모두 새 키를 사용하면 이전 키 사용을 중지합니다.

ip xfrm state del ${SDIR} proto esp spi ${SPI}
ip xfrm state del ${DDIR} proto esp spi ${SPI}

관련 정보