Strongswan은 두 개의 IPsec 터널 간에 트래픽을 전달합니다.

Strongswan은 두 개의 IPsec 터널 간에 트래픽을 전달합니다.

StrongSwan IKEv2 설정과 외부 고정 IP가 있는 원격(중앙 집중식) VPN 서버가 있는 경우:

  • 중앙 집중식 서버 내부 IP 192.168.1.65, 네트워크 192.168.1.64/27

두 개의 게이트웨이가 내부 네트워크에 대해 NAT를 수행합니다.

  • 첫 번째 게이트웨이의 내부 IP는 192.168.1.33, 네트워크: 192.168.1.32/27입니다.
  • 두 번째 게이트웨이의 내부 IP는 192.168.1.1, 네트워크: 192.168.1.0/27입니다.

게이트웨이는 또한 StrongSwan을 사용하여 중앙 서버에 연결합니다.

게이트웨이에서 서버로, 서버에서 게이트웨이로의 연결은 잘 작동합니다. ping은 잘 작동하고 서버/게이트웨이의 서비스에 액세스할 수 있습니다. 게이트웨이 뒤에 있는 장치도 문제 없이 서버에 액세스할 수 있습니다.

문제는 서로 다른 게이트웨이 사이에서 컴퓨터에 액세스하려고 할 때 시작됩니다.

구성:

집중된:

conn base
    keyexchange = ikev2
    keyingtries = %forever
    forceencaps = yes
    compress = no

    left = centralized
    leftid = @centralized
    leftauth = pubkey
    leftca = "..."
    leftcert = centralized.crt
    leftupdown = sudo -E ipsec _updown iptables
    leftsubnet = 192.168.1.65

    right = %any
    rightauth = pubkey
    rightauth2 = psk
    rightca = %same

conn gateway-first
    auto = add
    rightid = @gateway-first
    rightcert = gateway-first.crt
    rightsubnet = 192.168.1.32/27
    rightsourceip = 192.168.1.66
    also = base

conn gateway-second
    auto = add
    rightid = @gateway-second
    rightcert = gateway-second.crt
    rightsubnet = 192.168.1.0/27
    rightsourceip = 192.168.1.67
    also = base

게이트웨이 우선순위:

conn gateway-first
    auto = route
    dpdaction = restart
    closeaction = restart
    keyexchange = ikev2
    keyingtries = %forever
    forceencaps = yes
    compress = no

    rightid = @centralized
    right = centralized
    rightauth = pubkey
    rightca = "..."
    rightcert = centralized.crt
    rightsubnet = 192.168.1.65,192.168.1.0/27

    leftid = @gateway-first
    left = %defaultroute
    leftauth = pubkey
    leftauth2 = psk
    leftca = %same
    leftcert = gateway-first.crt
    leftupdown = sudo -E ipsec _updown iptables
    leftsubnet = 192.168.1.32/27
    leftsourceip = %config4

두 번째 게이트웨이:

conn gateway-second
    auto = route
    dpdaction = restart
    closeaction = restart
    keyexchange = ikev2
    keyingtries = %forever
    forceencaps = yes
    compress = no

    rightid = @centralized
    right = centralized
    rightauth = pubkey
    rightca = "..."
    rightcert = centralized.crt
    rightsubnet = 192.168.1.65,192.168.1.32/27

    leftid = @gateway-second
    left = %defaultroute
    leftauth = pubkey
    leftauth2 = psk
    leftca = %same
    leftcert = gateway-second.crt
    leftupdown = sudo -E ipsec _updown iptables
    leftsubnet = 192.168.1.1/27
    leftsourceip = %config4

ping을 시도할 때두 번째 게이트웨이컴퓨터 뒤에서게이트웨이 우선순위(원본 컴퓨터 IP는 192.168.1.40) 및 실행TCP 덤프존재하다집중된서버에는 다음 사항도 표시됩니다.

tcpdump -i eth0 host 192.168.1.1 -n
error : ret -1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:27:49.030650 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 35, length 64
21:27:50.026652 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 36, length 64
21:27:51.031805 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 37, length 64
21:27:52.041165 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 38, length 64
21:27:53.029530 IP 192.168.1.40 > 192.168.1.1: ICMP echo request, id 9721, seq 39, length 64

따라서 이 로그에 따르면 패킷이 도착합니다.집중된서버이지만 전달되지 않음192.168.1.1.

중앙 집중식 서버와 두 게이트웨이 모두에서 전달을 활성화했습니다.

net.ipv4.ip_forward = 1

중앙 서버의 라우팅 테이블:

# ip route
default via yy.yy.yy.yy dev eth0  proto static 
zz.zz.zz.zz dev eth0  proto kernel  scope link  src xx.xx.xx.xx
192.168.1.64/27 via 192.168.1.65 dev eth1  proto static

그리고 라우팅 테이블 #220(VPN):

# ip route show table 220
192.168.1.0/27 via 5.189.141.1 dev eth0  proto static  src 192.168.1.65 
192.168.1.32/27 via 5.189.141.1 dev eth0  proto static  src 192.168.1.65 

서로 다른 두 터널 간의 전달을 활성화하는 방법에 대한 아이디어가 있습니까?

답변1

두 게이트웨이의 서브넷을 leftsubnet중앙 서버에 추가해 보세요. 각 게이트웨이에 해당 반대 서브넷이 포함되어 있더라도 트래픽 선택기는 중앙 서버에 구성된 범위 (예: ) rightsubnet로 좁아집니다 . 출력에서 이 내용을 볼 수 있습니다 . 중앙 서버에서 구성 할 수도 있으며 허용됩니다.leftsubnet192.168.1.65ipsec statusallleftsubnet=0.0.0.0/0아무것게이트웨이는 rightsubnet.

관련 정보