FreeBSD 11 및 StrongSwan x FortiGATE에서 pf를 사용하는 NAT 아웃바운드 IPSEC 패킷

FreeBSD 11 및 StrongSwan x FortiGATE에서 pf를 사용하는 NAT 아웃바운드 IPSEC 패킷

나는 아웃바운드 패킷을 보안 협회에 맞추기 위해 일주일 넘게 노력해왔습니다.

내 (예제) 시나리오는 다음과 같습니다.

  • 랜: 1.1.1.0/24
  • FreeBSD 인터페이스: xn0(Amazon EC2 인스턴스)
  • NAT 트래픽의 가상 주소는 2.2.2.2/32에서 옵니다.
  • 목적지 도착: 3.3.3.3/32

문제 설명

FreeBSD Box에 모든 SA가 실행 중이라는 사실에도 불구하고 pf 또는 ipfw를 사용하여 패킷을 nat하려는 시도가 작동하지 않고 nat된 패킷이 기본 라우팅 인터페이스를 사용하여 계속 흐르고 ipsec 터널에 들어 가지 않습니다. .

다음은 SA를 사용하는 예입니다.

$ ipsec status vpn
vpn{1}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cca608fa_i d74355dc_o vpn{1}:  AES_CBC_256/HMAC_SHA2_256_128, 2688 bytes_i (32 pkts, 32s ago), 4992 bytes_o (32 pkts, 32s ago), rekeying in 43 minutes vpn{1}:   2.2.2.2/32 === 3.3.3.3/32

내 NAT 규칙은 다음과 같습니다 pf.conf.

nat on enc0 from 1.1.1.0/24 to 2.2.2.2/32 -> 3.3.3.3

이 내 꺼야 ipsec0 interface status:

ipsec0:  flags=8011<UP,POINTOPOINT,MULTICAST> metric 0 mtu 1400     inet 3.3.3.3/32 --> 2.2.2.2/32 netmask 0xffffffff options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>     reqid: 0    groups: ipsec

3.3.3.3에서 2.2.2.2로 원활하게 갈 수 있습니다.

다음은 xn0(물리적 인터페이스)의 간단한 패킷 캡처입니다.

$ tcpdump -i xn0 -n -vvv host 2.2.2.2
1.1.1.10 > 2.2.2.2: ICMP echo request, id 15745, seq 818, length 64

그리고 enc0에는 트래픽이 표시되지 않습니다.

또 다른 시도는 다음을 통해 설정하는 것입니다 sysctl.

net.inet.ipsec.filtertunnel=1

하지만 이 옵션이 정확히 무엇을 하는지는 잘 모르겠습니다.

나는 많은 사람들이 이 자연 현상을 작동시키려고 노력했지만 성공하지 못하는 것을 보았습니다.

답변1

며칠 동안 고생한 끝에 아래 단계에 따라 이 문제를 처리할 수 있었고 다른 사람들을 돕기 위해 여기에 해결책을 게시하겠습니다.

소스를 연결하려는 필수 SA의 고유 ID를 가져옵니다. 예를 들면 다음과 같습니다.

setkey -DP

그리고 SA 고유 ID를 찾으세요.

3.3.3.3[any] 2.2.2.2[any] any
    out ipsec
    esp/tunnel/REALIPLOCAL-REALIPREMOTE/unique:1
    created: Jul 22 22:29:34 2018  lastused: Jul 22 22:29:34 2018
    lifetime: 9223372036854775807(s) validtime: 0(s)
    spid=2715 seq=0 pid=13358 scope=global
    refcnt=1

이 경우: 1

새 정책 추가:

setkey -v -c
spdadd -4 1.1.1.0/24 2.2.2.2/32 any -P out ipsec esp/tunnel/REALLOCALIP-REALREMOTEIP/unique:1;

이는 터널 내에서 패킷을 라우팅하고 실제 설치된 SA와 일치하도록 만드는 데 충분해야 합니다.

이 UniqueID는 설치된 SA와 일치해야 합니다. StrongSwan에서 SA 설치 순서를 변경하는 경우 새 UniqueID를 수용하도록 이 정책을 변경해야 합니다.

nat 규칙은 enc0 인터페이스에 적용되어야 합니다.

인용하다:

https://github.com/opnsense/core/issues/440

행운을 빌어요.

관련 정보