Ubuntu 18.04에서 StrongSwan IKEv2를 사용하여 분할 터널을 만드는 방법

Ubuntu 18.04에서 StrongSwan IKEv2를 사용하여 분할 터널을 만드는 방법

StrongSwan IKEv2 프로토콜을 사용하여 Ubuntu 18.04 서버(클라이언트)에서 Watchguard Firebox로 분할 터널을 설정하려고 했습니다. 결국에는 사이트 간 연결이 되기를 원하지만 먼저 한쪽 면부터 시작하겠습니다.

Watchguard에 성공적으로 연결하고 IP 주소를 제공했지만 특정 서브넷에 대해서만 모든 트래픽이 터널을 통해 전송되는 것을 원하지 않습니다. 경로를 추가했고 ip route add연결되어 있는 동안 실행 중인 경우 tcpdump트래픽(192.168.1.0/24)이 내가 설정한 인터페이스를 통과하는 것을 볼 수 있지만 응답을 받지 못합니다. 어떤 도움이라도 대단히 감사하겠습니다.

다음은 IPSec의 구성 파일입니다.
서버 주소와 사용자 이름을 꺼냈습니다. 말씀드린 대로 성공적으로 연결되었습니다. 명령 rightsubnet을 통해 정의하고 싶기 때문에 주석 처리 되었습니다 ip route. 주석 처리를 제거하고 연결을 시작하면 정의된 각 서브넷을 성공적으로 핑할 수 있지만 이로 인해 트래픽이 분리되지는 않으며 결국에는 특정 장치만 VPN에 액세스하도록 허용하는 규칙이 마련됩니다.

conn dealers
  right=xxxxxxxx
  rightid="O=WatchGuard, OU=Fireware, CN=ike2muvpn Server"
  #rightsubnet=192.168.1.0/24,192.168.20.0/24,192.168.40.0/24,192.168.3.0/24,192.168.5.0/24
  rightauth=pubkey
  leftsourceip=%config
  leftid=xxxxxxxx
  leftauth=eap-mschapv2
  eap_identity=%identity
  auto=add

여기 내 ip route테이블이 있어요

default via 192.168.2.1 dev eth0 proto dhcp src 192.168.2.196 metric 100
10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel 
192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel 
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.196 
192.168.2.1 dev eth0 proto dhcp scope link src 192.168.2.196 metric 100 
192.168.115.0/24 dev dealers_tunnel proto kernel scope link src 192.168.115.29

VPN을 연결한 다음 인터페이스를 설정하고 경로를 추가하는 스크립트가 있습니다. 테스트를 위해 192.168.1.0/24 네트워크만 추가합니다.

#!/bin/bash
#
#./ikev2-up.sh
#

/usr/sbin/ipsec up dealers

ip tunnel add dealers_tunnel local 10.0.10.1 remote 192.168.115.29 mode are til 255
ip link set dealers_tunnel up
ip addr add 192.168.115.29/24 dev dealers_tunnel

ip route add 192.168.115.0/24 dev dealers_tunnel
ip route add 10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel
ip route add 192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel

아직 규칙을 설정하지 않았습니다.iptables -L


Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

내가 놓친 것이 있다는 것을 알고 있지만 그것을 알아낼 수는 없습니다. 도움을 주셔서 다시 한번 감사드립니다.

답변1

구성하는 경우 rightsubnet=0.0.0.0/0(피어가 이를 허용한다고 가정), 피어가 가상 IP 주소도 할당하면(클라이언트가 를 통해 요청함) 터널 장치가 필요하지 않습니다 leftsourceip=%config.

StrongSwan을 통해 경로 설치를 비활성화하십시오 charon.install_routes.Strongswan.conf그런 다음 사용자 지정을 통해 자신만의 경로를 설치합니다.업다운 스크립트에서 구성되었습니다 leftupdown. 가상 IP 주소는 클라이언트에 미리 알려지지 않으므로 업다운 스크립트를 사용하는 것이 중요합니다. 해당 가상 IP의 패킷만 IPsec 정책과 일치하고 터널링되므로 소스 경로를 통해 이를 적용하는 것이 중요합니다.

예를 들어 트래픽을 터널링하려면 192.168.115.0/24다음 스크립트와 같은 스크립트를 사용합니다(기본적으로 StrongSwan은 기본 테이블의 경로와의 충돌을 피하기 위해 테이블 ​​220에 경로를 설치하므로 여기서도 동일한 것을 사용하겠습니다).

#!/bin/bash

set -o nounset
set -o errexit

case "${PLUTO_VERB}" in
    up-client)
        ip route add 192.168.115.0/24 dev "${PLUTO_INTERFACE}" src "${PLUTO_MY_SOURCEIP}" table 220
        ;;
    down-client)
        ip route del 192.168.115.0/24 table 220
        ;;
esac

관련 정보