FortiGate와 StrongSwan으로 Site-Site IPsec VPN을 확장

일부 쓰기 때문에, 마음이 향하면 추기합니다만, 우선 연결되는 곳까지는 기재했습니다.

전제 조건



  • 환경
  • FortiGate 90D(v5.6.7 build1653)
  • 데비안 GNU/리눅스 9
  • strongSwan U5.5.1/K4.9.0-8-amd64



  • 네트워크 문제
  • FortiGate/Debian 모두 글로벌 IPv4 주소가 있음
  • 데비안은 WAN (Public)/LAN (Private) 이미지로 두 네트워크에 속합니다.

  • 네트워크 구성

  • FortiGate 설정



    VPN 터널 만들기


  • VPN → IPsec 마법사를 선택하고 마법사에 따라 설정합니다.
  • 이름에 알기 쉬운 이름을 설정하고, 템플릿 유형은 사용자 정의를 선택하고 다음을 클릭합니다.

  • "원격 게이트웨이"는 "고정 IP 주소"를 입력하고 "IP 주소"에는 데비안 측 WAN 주소를 입력하십시오.
    "인터페이스"는 일반적으로 "wan1"이라고 생각되지만 환경에 따라 맞추십시오.

  • "방식"은 "사전 공유 키"를, "사전 공유 키"에는 데비안 측의 ipsec.secrets에서 설정한 키를 입력하십시오.

  • 1단계 설정을 다음과 같이 합니다.

  • 2단계 설정을 다음과 같이 합니다.


  • 지금까지 VPN 터널 생성이 완료되었습니다.

    인터페이스 설정


  • 네트워크 → 인터페이스를 선택합니다.
  • 방금 지정한 인터페이스 아래에 지정된 이름으로 터널 인터페이스가 만들어졌으므로 두 번 클릭합니다.

    3. IP에 10.1.1.1을 입력하여 필요에 따라 PING이 통과하도록 합니다.


  • 지금까지 인터페이스 설정이 완료되었습니다.

    라우팅 설정


  • 네트워크 → 정적 경로를 선택합니다.
  • 새로 만들기 → IPv4 Static Route를 선택합니다.
  • 대상에 10.99.4.0/24를 입력하고 인터페이스는 VPN 터널에 지정된 이름을 선택합니다.

    4. 확인을 클릭하여 경로를 추가합니다.

  • 정책 설정



    일반 방화벽 정책을 추가합니다.

    데비안 설정



    strongSwan 설치


    # apt install strongswan
    

    /etc/ipsec.conf
    conn %default
      authby=secret
      type=tunnel
      auto=route
      compress=no
    
    conn FortiGate
      left=AAA.AAA.AAA.AAA
      leftsubnet=0.0.0.0/0
      right=BBB.BBB.BBB.BBB
      rightsubnet=0.0.0.0/0
      leftfirewall=no
      leftupdown=/etc/strongswan.d/updown.sh
      keyexchange=ikev1
      ike=aes256-sha256-ecp521
      esp=aes256-sha256-ecp521
      mark=42
      # mark=42の42が後で出てくる、vtiのKeyと一致する必要あり
    

    /etc/ipsec.secrets
    BBB.BBB.BBB.BBB AAA.AAA.AAA.AAA : PSK "SuperSecretPSK"
    

    여기까지의 설정이라면, 왜인지 Debian측으로부터 FortiGate측에의 패킷이, 터널 디바이스가 아니고,
    eth0 등에서 빠져 버리기 때문에 다음 설정이 필요합니다.

    /etc/strongswan.d/charon.conf
    # 下記のパラメタのみ書き換え
    install_routes = no
    

    터널이 닿을 때 호출되는 스크립트

    /etc/strongswan.d/updown.sh
    !/bin/bash
    
    PLUTO_MARK_OUT_ARR=(${PLUTO_MARK_OUT//// })
    PLUTO_MARK_IN_ARR=(${PLUTO_MARK_IN//// })
    
    echo ${PLUTO_VERB}
    echo ${PLUTO_CONNECTION}
    
    VTI_INTERFACE="vti"${PLUTO_MARK_IN_ARR}
    
    case "${PLUTO_VERB}" in
        up-client)
            ip tunnel add ${VTI_INTERFACE} mode vti local ${PLUTO_ME} remote ${PLUTO_PEER} key 42
            ip link set ${VTI_INTERFACE} up
            ip link set ${VTI_INTERFACE} up mtu 1350
            ip addr add 10.1.1.2/32 dev ${VTI_INTERFACE}
    
            ip route add 10.1.1.1/32 dev ${VTI_INTERFACE}
            ip route add 192.168.0.0/16 dev ${VTI_INTERFACE}
            ;;
    
        down-client)
            $IP link del ${VTI_INTERFACE}
            ;;
    esac
    

    strongSwan을 시작합니다.
    # systemctl start strongswan
    

    /etc/sysctl.conf
    # 次の内容を追記
    net.ipv4.ip_forward=1
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv6.conf.all.accept_redirects = 0
    

    sysctl 설정 반영
    sysctl -p
    

    상태 확인
    # ipsec status
    Routed Connections:
       FortiGate{1}:  ROUTED, TUNNEL, reqid 1
       FortiGate{1}:   0.0.0.0/0 === 0.0.0.0/0
    Security Associations (1 up, 0 connecting):
       FortiGate[1]: ESTABLISHED 20 minutes ago, AAA.AAA.AAA.AAA[AAA.AAA.AAA.AAA]...BBB.BBB.BBB.BBB[BBB.BBB.BBB.BBB]
       FortiGate{2}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: c0bad4f9_i baf54487_o
       FortiGate{2}:   0.0.0.0/0 === 0.0.0.0/0
    

    참고 페이지


  • 새로운 strongswan에 VPN을 연결해도 패킷이 통과하지 못했습니다 : blog.akimasa.jp
  • 좋은 웹페이지 즐겨찾기