신뢰할 수 있는 호스트의 인증서나 키를 미리 로드하여 원격 호스트에서 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을 설정하는 올바른 방법이 무엇입니까?