인증서나 키를 미리 로드하여 원격 호스트로 IPSec SA를 기회적으로 생성하도록 Libreswan을 구성하는 방법이 있습니까?

인증서나 키를 미리 로드하여 원격 호스트로 IPSec SA를 기회적으로 생성하도록 Libreswan을 구성하는 방법이 있습니까?

신뢰할 수 있는 호스트의 인증서나 키를 미리 로드하여 원격 호스트에서 IPSec SA를 기회적으로 생성하도록 Libreswan을 구성하는 방법이 있습니까?

저는 RHEL, CentOS 또는 Fedora 호스트 그룹이 각 호스트 간 연결에 대해 "conn" 부분을 지정하지 않고도 그들 사이에 IPSec SA를 설정할 수 있도록 허용하는 Libreswan 구성을 찾고 있습니다. 무슨 뜻인지 설명하기 위해 예를 들어 보겠습니다. 중재자는 알파, 브라보, 찰리, 델타입니다. 현재 다음과 유사한 6개의 연결이 있는 구성 섹션이 있습니다(Alpha <-->Bravo, Alpha <-->Charlie, Alpha <-->Delta, Bravo <-->Charlie, Bravo <-->Delta Airlines, 찰리 <--> 델타항공):

conn alpha+bravo
     [email protected]
     left=10.1.2.3
     leftrsasigkey=
     [email protected]
     right=10.1.2.4
     rightrsasigkey=
     authby=rsasig
     auto=start

현재 구성에서는 6개의 호스트가 IPSec을 통해 통신할 수 있지만 구성 섹션 수가 (n*(n-1))/2이므로 확장 능력이 걱정됩니다. 20개의 호스트에는 190개의 구성 부품이 필요합니다! 나는 별명, IP 주소 및 키가 포함된 CSV 파일에서 구성을 쉽게 생성하기 위해 다음 Perl 프로그램을 작성했습니다.

#!/usr/bin/perl

#use strict;
use warnings;

sub usage {
    $0 =~ /([^\/]+)$/;
    my $name = $&;
    print "$name [host+keyfile]
    each line of host+keyfile should contain the short hostname,
    IP address,
    and the key returned from 'ipsec showhostkey --left'\n
    This program then outputs ipsec.conf content to support
    all of the connections.
    \n";
    exit 1;
}

if ( !defined $ARGV[0] ) {
    usage;
}

open (STDI, "$ARGV[0]") or die "Can't open input file: $!";

my $section=0;

my @hosts = <STDI> ;
my (@a, @b) ;

#foreach $i (@hosts) {

for ($i = 0; $i < $#hosts ; $i++) {
    for ($j = $i+1 ; $j <= $#hosts ; $j++) {
        @a = split(/,/,$hosts[$i]);
        @b = split(/,/,$hosts[$j]);
        print "conn $a[0]+$b[0]\n";
        print "\tleftid=\@$a[0]\n";
        print "\tleft=$a[1]\n";
        print "\tleftrsasigkey=$a[2]";
        print "\trightid=\@$b[0]\n";
        print "\tright=$b[1]\n";
        print "\trightrsasigkey=$b[2]";
        print "\tauthby=rsasig\n";
        print "\tauto=start\n\n";
    }
}

close STDI;

다시 말하지만, 이것은 나에게 효과적이지만 100개의 호스트의 경우 구성 파일은 19MB가 됩니다! 제가 정말로 알고 싶은 것은 libreswan을 사용하여 다수의 호스트 간에 호스트 간 IPSec SA/VPN을 설정하는 올바른 방법이 무엇입니까?

관련 정보