Strongswan을 사용한 사이트 간 VPN 및 원격 액세스 VPN

Strongswan을 사용한 사이트 간 VPN 및 원격 액세스 VPN

저는 최근 두 개의 다른 우분투 서버가 있는 두 개의 다른 사이트에 Strongswan IKEv2 원격 액세스 VPN을 배포했습니다. 모두 훌륭하게 작동하지만 이제 사이트 간 VPN을 사용하여 두 사이트를 "병합"하여 하나의 원격 액세스 VPN만 남겨두고 두 서브넷에 모두 액세스할 수 있도록 하려고 합니다. 문제는 그것을 어떻게 하는가이다. 내 아이디어는 트래픽을 관리하기 위해 두 사이트 간의 Strongswan과 두 사이트 라우터의 정적 라우팅을 사용하는 IPSec 터널이었습니다.

사이트는 다음과 같이 구성됩니다.

A) 
Only One Public IP : x.x.x.x
Subnet : 10.5.5.0/24

B)
One Usable Public IP : x.x.x.x
Subnet : 192.168.5.0/24

질문은 다음과 같습니다

  1. 동일한 Strongswan 인스턴스에서 두 서비스(IKEv2 원격 액세스 및 IPSec 터널)를 실행할 수 있습니까? 이에 대한 내 대답은 '아니요'입니다. 그렇다면 다른 두 개의 우분투 서버를 게이트웨이로 사용하여 Strongswan의 새 인스턴스를 추가할 준비가 되었습니다.
  2. 하지만 사이트에서 두 개의 서로 다른 서버를 사용하는 경우 또 다른 문제가 발생하면 사이트에는 각각 하나의 공용 IP만 있습니다. IPSec와 IKEv2가 모두 동일한 포트를 사용해야 하므로 어떻게 충돌을 해제합니까? IPSec 터널에서 사용되는 포트를 변경할 수 있습니까? 아니면 IPSec 터널에 대한 포트 전달이 필요하지 않습니까?

이것은 IPSec 터널에 대한 나의 참조입니다. https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/

이 혼란스러운 작업을 수행하는 방법에 대한 아이디어가 있습니까? 두 개의 VPN 서버를 실행하려면 항상 두 개의 다른 IP 주소가 필요합니까? OpenSource DMVPN이 도움이 될 수 있나요?

미리 감사드립니다.

답변1

귀하의 질문에 답변하려면

  1. 예, 동일한 StrongSwan 인스턴스에서 원격 액세스(일명 Roadwarrior) 및 사이트 간 터널을 실행할 수 있습니다.
  2. 인증 방법에 따라 사이트 간 연결과 원격 액세스 연결을 구분할 수 있습니다.

다음은 작업 설정입니다.

connections {
  site {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }

    remote {
      auth = pubkey
      cacerts =  MyCA.cer
      id = "CN=site2.example.com"
    }

    children {
        site {
            local_ts  = 10.218.2.0/24, ::/0
            remote_ts = 10.218.1.0/24, 2001:470:ffff::/64
        }
    }
  }

  win {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }
    remote {
      auth = pubkey
      cacerts =  LloydsCertificateAuthorityG2.cer
    }
    children {
      win {
        local_ts = 0.0.0.0/0, ::/0, 10.218.1.0/24, 2001:470:ffff::/64
      }
    }
  }
}

pools {
  ipv4 {
    addrs = 10.218.2.3-10.218.2.254
    dns = 10.218.1.99
    netmask = 255.255.255.0
    subnet = 10.218.2.0/24,10.218.1.0/24
  }

  ipv6 {
    addrs = 2001:470:ffff:2::3-2001:470:ffff:2::ffff
    dns = 2001:470:ffff::99/64
    subnet = 2001:470:ffff:2::/64,2001:470:ffff::/64
  }
}

사이트 2는 IKEv2 프로토콜 및 시스템 인증서 CN=site2.example.com으로 연결됩니다.

인증서는 사이트 1의 다음 위치에 저장됩니다.

/etc/swanctl/rsa/site1.example.com.pem (private key)
/etc/swanctl/x509/site1.example.com.pem (public key)
/etc/swanctl/x509ca/MyCa.cer (Root CA)

다음을 사용하여 구성을 다시 로드합니다.swanctl --load-all

원격 액세스 클라이언트에 대해 NAT를 활성화하려면

iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -j MASQUERADE

관련 정보